diff --git a/app/[locale]/(public)/content/audio/detail/[id]/page.tsx b/app/[locale]/(public)/content/audio/detail/[id]/page.tsx index 542f952..e35eac3 100644 --- a/app/[locale]/(public)/content/audio/detail/[id]/page.tsx +++ b/app/[locale]/(public)/content/audio/detail/[id]/page.tsx @@ -5,7 +5,13 @@ import AudioDetail from "@/components/main/content/audio-detail"; export default function DetailAudioInfo() { const params = useParams(); - const id = params?.id as string; + const idParam = params?.id; + const id = + typeof idParam === "string" + ? Number(idParam) + : Array.isArray(idParam) + ? Number(idParam[0]) + : 0; return ; } diff --git a/app/[locale]/(public)/content/text/detail/[id]/page.tsx b/app/[locale]/(public)/content/text/detail/[id]/page.tsx index a1ff3af..f7ea8ef 100644 --- a/app/[locale]/(public)/content/text/detail/[id]/page.tsx +++ b/app/[locale]/(public)/content/text/detail/[id]/page.tsx @@ -5,7 +5,13 @@ import DocumentDetail from "@/components/main/content/document-detail"; export default function DetailDocumentInfo() { const params = useParams(); - const id = params?.id as string; + const idParam = params?.id; + const id = + typeof idParam === "string" + ? Number(idParam) + : Array.isArray(idParam) + ? Number(idParam[0]) + : 0; return ; } diff --git a/components/landing-page/header.tsx b/components/landing-page/header.tsx index 10e75e9..8ceaeda 100644 --- a/components/landing-page/header.tsx +++ b/components/landing-page/header.tsx @@ -119,7 +119,7 @@ export default function Header() { }; fetchBookmarks(); - }, [userId]); // ← otomatis re-fetch kalau cookie user berubah + }, [userId]); return (
diff --git a/components/landing-page/media-update.tsx b/components/landing-page/media-update.tsx index 9e57e5a..560db7c 100644 --- a/components/landing-page/media-update.tsx +++ b/components/landing-page/media-update.tsx @@ -17,7 +17,6 @@ import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { ThumbsUp, ThumbsDown } from "lucide-react"; -// 🔹 Fungsi format tanggal ke WIB function formatTanggal(dateString: string) { if (!dateString) return ""; return ( @@ -49,7 +48,6 @@ export default function MediaUpdate() { const params = useParams(); const MySwal = withReactContent(Swal); - // Get slug from URL params const slug = params?.slug as string; useEffect(() => { @@ -73,15 +71,15 @@ export default function MediaUpdate() { function getTypeIdByContentType(contentType: string): string { switch (contentType) { case "audiovisual": - return "2"; // Video + return "2"; case "foto": - return "1"; // Image + return "1"; case "audio": - return "4"; // Audio + return "4"; case "text": - return "3"; // Text + return "3"; default: - return "1"; // Default to Image + return "1"; } } @@ -103,20 +101,41 @@ export default function MediaUpdate() { // Function to get content type link for "Lihat lebih banyak" button function getContentTypeLink() { + const pathname = + typeof window !== "undefined" ? window.location.pathname : ""; + + const isTenantRoute = pathname.includes("/tenant/"); + const basePath = isTenantRoute ? `/tenant/${slug}/content` : "/content"; + switch (contentType) { case "audio": - return "/tenant/" + slug + "/content/audio"; + return `${basePath}/audio`; case "foto": - return "/tenant/" + slug + "/content/image"; + return `${basePath}/image`; case "audiovisual": - return "/tenant/" + slug + "/content/video"; + return `${basePath}/video`; case "text": - return "/tenant/" + slug + "/content/text"; + return `${basePath}/text`; default: - return "/tenant/" + slug + "/content/image"; // Default to image page + return `${basePath}/image`; } } + // function getContentTypeLink() { + // switch (contentType) { + // case "audio": + // return "/tenant/" + slug + "/content/audio"; + // case "foto": + // return "/tenant/" + slug + "/content/image"; + // case "audiovisual": + // return "/tenant/" + slug + "/content/video"; + // case "text": + // return "/tenant/" + slug + "/content/text"; + // default: + // return "/tenant/" + slug + "/content/image"; + // } + // } + // if (contentType === "all") { // setFilteredData(dataToRender); // return; @@ -154,15 +173,15 @@ export default function MediaUpdate() { const filtered = dataToRender.filter((item) => { switch (contentType) { case "audiovisual": - return item.typeId === 2; // Video + return item.typeId === 2; case "audio": - return item.typeId === 4; // Audio + return item.typeId === 4; case "foto": - return item.typeId === 1; // Image + return item.typeId === 1; case "text": - return item.typeId === 3; // Text + return item.typeId === 3; default: - return true; // Semua jenis + return true; } }); @@ -173,11 +192,9 @@ export default function MediaUpdate() { try { setLoading(true); - // Tentukan typeId dari contentType const typeId = parseInt(getTypeIdByContentType(contentType)); setCurrentTypeId(typeId.toString()); - // 🔹 Ambil data artikel dari API const response = await listArticles( 1, 10, @@ -204,11 +221,9 @@ export default function MediaUpdate() { ); hasil = fallbackRes?.data?.data?.content || []; } else { - // ✅ Perhatikan: API kamu mengembalikan `data.data` sebagai array hasil = response?.data?.data || []; } - // 🔹 Normalisasi struktur data const transformedData = hasil.map((article: any) => ({ id: article.id, title: article.title, @@ -224,10 +239,8 @@ export default function MediaUpdate() { ...article, })); - // ✅ INI WAJIB: simpan hasil mapping ke state setDataToRender(transformedData); - // 🔹 Sinkronisasi data bookmark const roleId = Number(getCookiesDecrypt("urie")); if (roleId && !isNaN(roleId)) { const simpananLocal = localStorage.getItem("bookmarkedIds"); @@ -263,7 +276,6 @@ export default function MediaUpdate() { } } - // 🔹 Simpan bookmark const handleSave = async (id: number) => { const roleId = Number(getCookiesDecrypt("urie")); if (!roleId || isNaN(roleId)) { diff --git a/components/landing-page/navbar.tsx b/components/landing-page/navbar.tsx index bd765d0..3a05771 100644 --- a/components/landing-page/navbar.tsx +++ b/components/landing-page/navbar.tsx @@ -8,7 +8,7 @@ import { Button } from "../ui/button"; import Cookies from "js-cookie"; import { Card } from "../ui/card"; import { Input } from "../ui/input"; -import { usePathname } from "next/navigation"; +import { usePathname, useRouter } from "next/navigation"; import { Link } from "@/i18n/routing"; import { DynamicLogoTenant } from "./dynamic-logo-tenant"; @@ -28,86 +28,29 @@ const PUBLIKASI_SUBMENU = [ export default function Navbar() { const [isSidebarOpen, setIsSidebarOpen] = useState(false); - - // const [user, setUser] = useState<{ - // id: number; - // name: string; - // avatar: string; - // } | null>(null); - const [isDropdownOpen, setDropdownOpen] = useState(false); const [showProfileMenu, setShowProfileMenu] = useState(false); const [isLoggedIn, setIsLoggedIn] = useState(false); const pathname = usePathname(); + const router = useRouter(); - // useEffect(() => { - // const roleId = getCookiesDecrypt("urie"); - // console.log("roleId", roleId); - - // switch (roleId) { - // case "1": - // setUser({ - // id: 1, - // name: "User Test", - // avatar: "/contributor.png", - // }); - // break; - // case "3": - // setUser({ - // id: 3, - // name: "Mabes Polri - Approver", - // avatar: "/contributor.png", - // }); - // break; - - // case "7": - // setUser({ - // id: 7, - // name: "DivHumas - RoMulmed - BagDise", - // avatar: "/contributor.png", - // }); - // break; - - // case "6": - // setUser({ - // id: 11, - // name: "jurnalis-kompas1", - // avatar: "/contributor.png", - // }); - // break; - - // default: - // setUser(null); - // } - // }, []); - - // const roleId = getCookiesDecrypt("urie"); - // const isLoggedIn = roleId !== null; - - // 🔍 Fungsi untuk mengecek apakah user sedang login + // 🔍 Fungsi cek login const checkLoginStatus = () => { const roleId = getCookiesDecrypt("urie"); const fullname = Cookies.get("ufne"); return roleId && fullname ? true : false; }; - // 🔄 Cek status login saat pertama kali load useEffect(() => { setIsLoggedIn(checkLoginStatus()); }, []); - // const filteredNavItems = isLoggedIn - // ? NAV_ITEMS.filter((item) => item.label !== "Mengikuti") - // : NAV_ITEMS; - - // 🔁 Gunakan isLoggedIn untuk menentukan navigasi const filteredNavItems = isLoggedIn ? NAV_ITEMS.filter((item) => item.label !== "Mengikuti") : NAV_ITEMS; // 🚪 Fungsi logout const handleLogout = () => { - // Hapus semua cookie dengan kemungkinan variasi path dan domain Object.keys(Cookies.get()).forEach((cookieName) => { Cookies.remove(cookieName, { path: "/" }); Cookies.remove(cookieName, { @@ -119,42 +62,13 @@ export default function Navbar() { domain: window.location.hostname, }); }); - - // Ubah state login jadi false agar tampilan langsung berubah setIsLoggedIn(false); setShowProfileMenu(false); - - // Redirect ke homepage window.location.href = "/"; }; - // const handleLogout = () => { - // Object.keys(Cookies.get()).forEach((cookieName) => { - // Cookies.remove(cookieName); - // }); - - // window.location.href = "/"; - - // // setUser(null); - // setShowProfileMenu(false); - // }; - const username = Cookies.get("username"); const fullname = Cookies.get("ufne"); - // const router = useRouter(); - // const [detail, setDetail] = useState(); - - // const onLogout = () => { - // Object.keys(Cookies.get()).forEach((cookieName) => { - // Cookies.remove(cookieName); - // }); - - // router.push("/"); - // }; - const [isLogin, setIsLogin] = useState(false); - useEffect(() => { - setIsLogin(fullname ? true : false); - }, [fullname]); return (
@@ -166,7 +80,7 @@ export default function Navbar() { fill className="object-contain" /> - {" "} + setIsSidebarOpen(true)} @@ -174,10 +88,23 @@ export default function Navbar() { + {/* 🌐 NAV MENU */}