diff --git a/src/app/admin/(dashboard)/_state/desa/berita.ts b/src/app/admin/(dashboard)/_state/desa/berita.ts
index 62a88d67..a2b7df23 100644
--- a/src/app/admin/(dashboard)/_state/desa/berita.ts
+++ b/src/app/admin/(dashboard)/_state/desa/berita.ts
@@ -74,9 +74,11 @@ const berita = proxy({
totalPages: 1,
loading: false,
search: "",
- async load(page = 1, limit = 10, search = "", kategori = "") {
- this.loading = true;
- this.page = page;
+ load: async (page = 1, limit = 10, search = "", kategori = "") => {
+ berita.findMany.loading = true; // ✅ Akses langsung via nama path
+ berita.findMany.page = page;
+ berita.findMany.search = search;
+
try {
const query: any = { page, limit };
if (search) query.search = search;
@@ -85,20 +87,20 @@ const berita = proxy({
const res = await ApiFetch.api.desa.berita["find-many"].get({ query });
if (res.status === 200 && res.data?.success) {
- this.data = res.data.data ?? [];
- this.totalPages = res.data.totalPages ?? 1;
+ berita.findMany.data = res.data.data ?? [];
+ berita.findMany.totalPages = res.data.totalPages ?? 1;
} else {
- this.data = [];
- this.totalPages = 1;
+ berita.findMany.data = [];
+ berita.findMany.totalPages = 1;
}
} catch (err) {
console.error("Gagal fetch berita paginated:", err);
- this.data = [];
- this.totalPages = 1;
+ berita.findMany.data = [];
+ berita.findMany.totalPages = 1;
} finally {
- this.loading = false;
+ berita.findMany.loading = false;
}
- }
+ },
},
findUnique: {
diff --git a/src/app/admin/(dashboard)/desa/berita/list-berita/[id]/page.tsx b/src/app/admin/(dashboard)/desa/berita/list-berita/[id]/page.tsx
index e703fc82..eddfcf02 100644
--- a/src/app/admin/(dashboard)/desa/berita/list-berita/[id]/page.tsx
+++ b/src/app/admin/(dashboard)/desa/berita/list-berita/[id]/page.tsx
@@ -89,7 +89,7 @@ function DetailBerita() {
@@ -104,7 +104,7 @@ export default function Content({ kategori }: { kategori: string }) {
{/* === Daftar Berita === */}
- Berita {kategori}
+ Daftar Berita
{state.findMany.loading ? (
diff --git a/src/app/darmasaba/(pages)/desa/berita/[kategori]/[id]/page.tsx b/src/app/darmasaba/(pages)/desa/berita/[kategori]/[id]/page.tsx
new file mode 100644
index 00000000..0552714b
--- /dev/null
+++ b/src/app/darmasaba/(pages)/desa/berita/[kategori]/[id]/page.tsx
@@ -0,0 +1,78 @@
+/* eslint-disable react-hooks/exhaustive-deps */
+'use client'
+import stateDashboardBerita from '@/app/admin/(dashboard)/_state/desa/berita';
+import colors from '@/con/colors';
+import { Box, Center, Container, Image, Skeleton, Stack, Text } from '@mantine/core';
+import { useParams } from 'next/navigation';
+import { useEffect, useState } from 'react';
+import { useProxy } from 'valtio/utils';
+import BackButton from '../../../layanan/_com/BackButto';
+
+
+
+function Page() {
+ const params = useParams<{ id: string }>();
+ const id = Array.isArray(params.id) ? params.id[0] : params.id;
+ const state = useProxy(stateDashboardBerita.berita)
+ const [loading, setLoading] = useState(true)
+
+ useEffect(() => {
+ const loadData = async () => {
+ if (!id) return;
+ try {
+ setLoading(true);
+ await state.findUnique.load(id);
+ } catch (error) {
+ console.error('Error loading data:', error);
+ } finally {
+ setLoading(false);
+ }
+ }
+ loadData()
+ }, [id])
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ if (!state.findUnique.data) {
+ return (
+
+ Data tidak ditemukan
+
+ );
+ }
+
+
+ return (
+
+
+
+
+
+ {state.findUnique.data?.judul}
+
+
+ Informasi dan Pelayanan Administrasi Digital
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default Page;