From 4b39ffd54c8efd9775bd76800039d9816304802d Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Wed, 21 May 2025 12:06:14 +0800 Subject: [PATCH] fix bug: deskripsi: - bug donasi cerita penggalangan dana - bug login --- .../donasi/[id]/cerita-penggalang/route.ts | 34 ++++++++ .../donasi/cerita_penggalang/[id]/page.tsx | 7 +- .../lib/stiker/comp_button_sticker.tsx | 4 +- .../admin/donasi/detail/detail_review.tsx | 3 +- src/app_modules/auth/login/view.tsx | 4 +- .../detail_main/cerita_penggalang/index.tsx | 86 ++++++++++++------- src/app_modules/donasi/lib/api_donasi.ts | 36 ++++++++ 7 files changed, 134 insertions(+), 40 deletions(-) create mode 100644 src/app/api/donasi/[id]/cerita-penggalang/route.ts diff --git a/src/app/api/donasi/[id]/cerita-penggalang/route.ts b/src/app/api/donasi/[id]/cerita-penggalang/route.ts new file mode 100644 index 00000000..a2f2468f --- /dev/null +++ b/src/app/api/donasi/[id]/cerita-penggalang/route.ts @@ -0,0 +1,34 @@ +import { NextResponse } from "next/server"; +import prisma from "@/lib/prisma"; + +export { GET }; + +async function GET(req: Request, { params }: { params: { id: string } }) { + try { + const donasiId = params.id; + const data = await prisma.donasi_Cerita.findFirst({ + where: { + donasiId: donasiId, + }, + select: { + id: true, + pembukaan: true, + cerita: true, + imageCeritaDonasi: true, + createdAt: true, + imageId: true, + }, + }); + return NextResponse.json({ + success: true, + message: "Data berhasil diambil", + data: data, + }); + } catch (error) { + return NextResponse.json({ + success: false, + message: "Terjadi kesalahan saat mengambil data", + reason: error as Error, + }); + } +} diff --git a/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx index b9518bed..167e2672 100644 --- a/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx +++ b/src/app/dev/(user)/donasi/cerita_penggalang/[id]/page.tsx @@ -1,12 +1,11 @@ import { CeritaPenggalangDonasi } from "@/app_modules/donasi"; import Donasi_getCeritaByDonasiId from "@/app_modules/donasi/fun/get/get_cerita_penggalang"; -export default async function Page({ params }: { params: { id: string } }) { - const dataCerita = await Donasi_getCeritaByDonasiId(params.id); - // console.log(dataCerita) +export default async function Page() { + // const dataCerita = await Donasi_getCeritaByDonasiId(params.id); return ( <> - + ); } diff --git a/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx b/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx index cc467ad2..8ca66dbc 100644 --- a/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx +++ b/src/app_modules/_global/lib/stiker/comp_button_sticker.tsx @@ -57,8 +57,8 @@ export const Comp_ButtonSticker = ({ Sticker belum tersedia - - Silahkan hubungi admin untuk info lebih lanjut + + Silahkan hubungi admin diff --git a/src/app_modules/admin/donasi/detail/detail_review.tsx b/src/app_modules/admin/donasi/detail/detail_review.tsx index 7b1a7f26..cad9dfca 100644 --- a/src/app_modules/admin/donasi/detail/detail_review.tsx +++ b/src/app_modules/admin/donasi/detail/detail_review.tsx @@ -163,10 +163,11 @@ function ButtonOnHeader({ const newData = await AdminDonasi_getOneById(donasi?.id); setData(newData); - // router.back() ComponentAdminGlobal_NotifikasiBerhasil( "Berhasil Mengubah Status Donasi" ); + router.back() + setLoadingPublish(false); } else { setLoadingPublish(false); ComponentAdminGlobal_NotifikasiPeringatan( diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index f3b28d7f..1fae94f6 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -33,13 +33,13 @@ export default function Login({ version }: { version: string }) { setLoading(true); const respone = await apiFetchLogin({ nomor: nomor }); - if (respone) { + if (respone && respone.success) { localStorage.setItem("hipmi_auth_code_id", respone.kodeId); ComponentGlobal_NotifikasiBerhasil(respone.message, 2000); router.push("/validasi", { scroll: false }); } else { setLoading(false); - ComponentGlobal_NotifikasiPeringatan(respone.message); + ComponentGlobal_NotifikasiPeringatan(respone?.message); } } catch (error) { setLoading(false); diff --git a/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx index a7c2b0d8..9cc9aeaf 100644 --- a/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx +++ b/src/app_modules/donasi/detail/detail_main/cerita_penggalang/index.tsx @@ -2,47 +2,71 @@ import { AccentColor } from "@/app_modules/_global/color/color_pallet"; import { ComponentGlobal_LoadImageLandscape } from "@/app_modules/_global/component"; +import ComponentGlobal_IsEmptyData from "@/app_modules/_global/component/is_empty_data"; import { Comp_SetInnerHTML } from "@/app_modules/_global/component/new/comp_set_inner_html"; -import { Comp_V3_SetInnerHTMLWithStiker } from "@/app_modules/_global/component/new/comp_V3_set_html_with_stiker"; +import CustomSkeleton from "@/app_modules/components/CustomSkeleton"; +import { apiGetDonasiCeritaPenggalang } from "@/app_modules/donasi/lib/api_donasi"; import { MODEL_CERITA_DONASI } from "@/app_modules/donasi/model/interface"; import { Stack, Text } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useParams } from "next/navigation"; import { useState } from "react"; +import moment from "moment"; +import "moment/locale/id"; +import { ComponentGlobal_NotifikasiGagal, ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; + +export default function CeritaPenggalangDonasi() { + const param = useParams<{ id: string }>(); + + const [data, setData] = useState(null); + + useShallowEffect(() => { + const getData = async () => { + try { + const response = await apiGetDonasiCeritaPenggalang({ id: param.id }); + if (response.success) { + setData(response.data); + } else { + ComponentGlobal_NotifikasiPeringatan(response.message); + } + } catch (error) { + ComponentGlobal_NotifikasiGagal("Terjadi error saat mengambil data"); + } + }; + getData(); + }, []); + + + + if (!data) return ; -export default function CeritaPenggalangDonasi({ - dataCerita, -}: { - dataCerita: MODEL_CERITA_DONASI; -}) { - const [data, setData] = useState(dataCerita); return ( <> - {/*
{JSON.stringify(data.imageCeritaDonasi, null, 2)}
*/} - - - {new Intl.DateTimeFormat("id-ID", { dateStyle: "full" }).format( - data.createdAt - )} - - #HaloOrangBaik - {/* {data.pembukaan} */} + {data === null ? ( + + ) : ( + + + {moment(data?.createdAt).format("DD MMMM YYYY")} + + #HaloOrangBaik - + - + - - - {/* {data.cerita} */} - + + + )} ); } diff --git a/src/app_modules/donasi/lib/api_donasi.ts b/src/app_modules/donasi/lib/api_donasi.ts index c46cfc0b..b4511798 100644 --- a/src/app_modules/donasi/lib/api_donasi.ts +++ b/src/app_modules/donasi/lib/api_donasi.ts @@ -57,3 +57,39 @@ export const apiGetOneDonasiById = async (path: string, kategori: string) => { }); return await response.json().catch(() => null); }; + + +export const apiGetDonasiCeritaPenggalang = async ({ id }: { id: string }) => { + try { + console.log("id in Fetch>>", id); + // Fetch token from cookie + const { token } = await fetch("/api/get-cookie").then((res) => res.json()); + if (!token) { + console.error("No token found"); + return null; + } + + const response = await fetch(`/api/donasi/${id}/cerita-penggalang`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get donasi cerita penggalang", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get donasi cerita penggalang"); + } + + // Return the JSON response + const data = await response.json(); + console.log("data fetch>>", data); + return data; + } catch (error) { + console.error("Error get donasi cerita penggalang", error); + throw error; // Re-throw the error to handle it in the calling function + } +};