"use client" import { Carousel } from "flowbite-react"; import { useEffect, useState, useRef } from "react"; import { formatRupiah } from "@/app/library/rupiah"; import Map from 'react-map-gl'; import { dataWilayah } from "@/app/library/loadJson"; import { DateLabel } from "@/app/library/dateLabel"; import useSWR, { SWRConfig } from 'swr' import { useOutsideClick } from "@/app/library/outclick"; import { faTimes } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import Iframe from "react-iframe"; import StickyButton from "@/app/component/sticky"; import { LoaderJo } from "@/app/component/loader"; import IklanTerkait from "./iklanterkait"; import ShareButton from "./sharebutton"; import WaButton from "@/app/library/button/waButton"; import { useSession } from "next-auth/react"; const wilayah = dataWilayah(); String.prototype.capitalize = function () { // Memeriksa apakah string kosong if (this.length === 0) { return this; } // Memecah string menjadi array kata const words = this.split(' '); // Mengkapitalisasi setiap kata const capitalizedWords = words.map(word => { return word.charAt(0).toUpperCase() + word.slice(1); }); // Menggabungkan kata-kata yang sudah di-kapitalisasi return capitalizedWords.join(' '); } const fetcher = (...args) => fetch(...args).then((res) => res.json()) export default function ProdukDetail(props) { const { data: session } = useSession(); const [visible, setVisible] = useState() const ref = useOutsideClick(() => { setVisible(null) }); const [avatar, SetAvatar] = useState([]); const [arrImage, SetArrImage] = useState([]); const [data, SetData] = useState({}); const [youtube, setYoutube] = useState(null); const [maps, setMaps] = useState(null); const [tampilkanNumber, setTampilkanNumber] = useState(null); // [latitude,longitude] let log = new Date().toString(); let tgllaku = new Date().toString(); useEffect(() => { function ambilIdVideo(url) { var splitUrl = url.split("v="); if (splitUrl.length > 1) { var videoId = splitUrl[1]; var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition !== -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } else { return ""; } } function ambilIdDariYouTubeShort(url) { var idShort = null; var shortPattern = /\/shorts\/([a-zA-Z0-9_-]{11})/; var match = url.match(shortPattern); if (match !== null) { idShort = match[1]; } return idShort; } function ambilKodeYouTube(link) { var kode = ''; var url = new URL(link); if (url.hostname === 'youtu.be') { kode = url.pathname.slice(1); if (kode.includes('?')) { kode = kode.substring(0, kode.indexOf('?')); } } else if (url.hostname === 'www.youtube.com' || url.hostname === 'youtube.com') { if (url.search) { var params = new URLSearchParams(url.search); kode = params.get('v'); } else { kode = url.pathname.slice(1); if (kode === 'watch') { kode = url.searchParams.get('v'); } } } return kode; } const loadData = async function () { const produk = props.data; console.log(produk) let dataArray; if(produk.length > 0){ dataArray = produk[0]; } SetArrImage(produk); SetData(dataArray); let detectYoutube = dataArray.deskrisi.split(" "); detectYoutube.forEach(function (x) { if (x.indexOf('youtube.com') != -1 && x.indexOf('youtube.com/shorts/') != -1) { setYoutube(ambilIdDariYouTubeShort(x)); } else if (x.indexOf('youtube.com') != -1 || x.indexOf('youtu.be') != -1) { if (ambilIdVideo(x) != '') { setYoutube(ambilIdVideo(x)); } else { setYoutube(ambilKodeYouTube(x)); } } }); const lat = (wilayah.getKecamatan(dataArray.kec) === null ? "" : wilayah.getKecamatan(dataArray.kec).lat); const long = (wilayah.getKecamatan(dataArray.kec) === null ? "" : wilayah.getKecamatan(dataArray.kec).long); const mapsRender = [lat, long]; setMaps(mapsRender.join(",")) } loadData(); }, [setYoutube, props, SetAvatar]); const kec = (wilayah.getKecamatan(data.kec) === null ? "" : wilayah.getKecamatan(data.kec).nama); const kota = (wilayah.getKota(data.kota) === null ? "" : wilayah.getKota(data.kota).nama); const prov = (wilayah.getProvinsi(data.prov) === null ? "" : wilayah.getProvinsi(data.prov).nama); log = data.userlog; tgllaku = DateLabel(data.laku=='' ? tgllaku : data.tgllaku); console.log(tgllaku); return (<>
{arrImage.map((s, i) => { return (
  • ) })}
    {data.approval=='0' ? <>

    IKLAN INI TIDAK AKTIF

    : data.laku=='1' ?
    SOLD!
    {tgllaku}
    RUMAHJO.COM
    :
    }
    {data.reg=='1' ?
    : <> } {/* */} { if (index.target.tagName == "DIV") { let indexKey = index.target.dataset.key; setVisible(index); } }} className="h-[60vh] bg-black"> {arrImage.map((s, i) => { return (
  • { e.preventDefault(); }} style={{ backgroundPosition:'center center', backgroundRepeat:'no-repeat', backgroundSize:'contain', backgroundImage: `url("https://app.rumahjo.com/` + s.image +`")`}} className="flex h-[60vh] justify-center items-center ">
  • ) })}

    Detail

    {data.slug2 === 'Dijual: Rumah & Apartement' && (
    Tipe {(data.type === '1' ? 'Rumah' : 'Apartemen')}
    )} {data.slug2 === 'Disewakan: Rumah & Apartement' && (
    Tipe {(data.type === '1' ? 'Rumah' : 'Apartemen')}
    )} {data.lbangun > '0' && (
    Luas Bangunan {data.lbangun}
    )} {data.ltanah > '0' && (
    Luas Tanah {data.ltanah}
    )} {data.ktidur > '0' && (
    Kamar Tidur {data.ktidur}
    )} {data.kmandi > '0' && (
    Kamar Mandi {data.kmandi}
    )} {data.hadap !== '' && (
    Hadap {data.hadap ? data.hadap : "-"}
    )} {data.lantai > '0' && (
    Lantai {data.lantai}
    )} {data.facility !== '' && (
    Fasilitas
    {data.facility ? data.facility.split(',').map((d, i) => { return {d} }) : ""}
    )} {data.cert > '0' && (
    Sertifikasi {(data.cert === 1 ? 'SHM - Sertifikat Hak Milik' : (data.cert === 2 ? 'HGB - Hak Guna Bangun' : 'Lainnya (PPJB, Girik, Adat, dll)'))}
    )} {data.alamat !== '' && (
    Alamat Lokasi {data.alamat}
    )}

    Deskripsi

    { youtube ? : <> }
    {data.deskrisi}
    {data.price != undefined ? formatRupiah(data.price) : "Rp 0"}
    {/* */}
    {data.ktidur} KT - {data.kmandi} KM - {data.lbangun} m2

    {data.judul != undefined ? data.judul.capitalize() : data.judul}

    {(kec == "" ? "" : kec.toLowerCase() + ", ") + (kota == "" ? "" : kota.toLowerCase() + ", ") + (prov == "" ? "" : prov.toLowerCase())}
    {DateLabel(log)}
    Chat Dengan Penjual
    {tampilkanNumber?data.phone:'*** *** ***'}

    Lokasi Iklan

    {/* */} { maps ?