From 76042d9224c2d47baeed2d89253adfd9a107f01d Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Mon, 3 Mar 2025 14:11:04 +0800 Subject: [PATCH 1/4] fix notifikasi deskripsi: - fix load data notifikasi: semua, event, job, donasi, investasi --- run.env.dev | 2 +- run.env.start.dev | 2 +- .../notifikasi/donasi/transaksi/[id]/route.ts | 39 ++++++++ .../api/notifikasi/kategori/[name]/route.ts | 89 +++++++++++++++++++ src/app/api/notifikasi/kategori/route.ts | 88 ++++++++++++++++++ .../_global/lib/master_list_app.ts | 37 +++++++- .../notifikasi/_ui/ui_notifikasi.tsx | 5 +- .../notifikasi/component/card_view.tsx | 64 ++++--------- .../notifikasi/component/path/donasi.ts | 71 ++++++++------- .../notifikasi/component/path/event.ts | 14 --- .../notifikasi/component/path/forum.ts | 44 ++++++--- .../notifikasi/component/path/investasi.ts | 6 -- .../notifikasi/component/path/job.ts | 15 ---- .../notifikasi/component/path/voting.ts | 17 ---- .../notifikasi/lib/api_fetch_notifikasi.ts | 46 ++++++++++ .../notifikasi/lib/api_fetch_ntf_donasi.ts | 44 +++++++++ .../notifikasi/lib/api_notifikasi.ts | 10 --- 17 files changed, 428 insertions(+), 165 deletions(-) create mode 100644 src/app/api/notifikasi/donasi/transaksi/[id]/route.ts create mode 100644 src/app/api/notifikasi/kategori/[name]/route.ts create mode 100644 src/app/api/notifikasi/kategori/route.ts create mode 100644 src/app_modules/notifikasi/lib/api_fetch_notifikasi.ts create mode 100644 src/app_modules/notifikasi/lib/api_fetch_ntf_donasi.ts delete mode 100644 src/app_modules/notifikasi/lib/api_notifikasi.ts diff --git a/run.env.dev b/run.env.dev index e6f383d2..f7b13b98 100644 --- a/run.env.dev +++ b/run.env.dev @@ -1 +1 @@ -bun --env-file=.env run --bun dev -p 3005 \ No newline at end of file +bun --env-file=.env run --bun dev -p 3000 \ No newline at end of file diff --git a/run.env.start.dev b/run.env.start.dev index 0c717313..0ca14666 100644 --- a/run.env.start.dev +++ b/run.env.start.dev @@ -1 +1 @@ -bun --env-file=.env run --bun start \ No newline at end of file +bun --env-file=.env run --bun start -p 3005 \ No newline at end of file diff --git a/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts b/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts new file mode 100644 index 00000000..ab819369 --- /dev/null +++ b/src/app/api/notifikasi/donasi/transaksi/[id]/route.ts @@ -0,0 +1,39 @@ +import { prisma } from "@/lib"; +import _ from "lodash"; +import { NextResponse } from "next/server"; + +export async function GET( + request: Request, + { params }: { params: { id: string } } +) { + try { + const { id } = params; + console.log("id server", id); + const data = await prisma.donasi_Invoice.findUnique({ + where: { + id: id, + }, + select: { + // DonasiMaster_Status: true, + DonasiMaster_StatusInvoice: true, + }, + }); + + return NextResponse.json({ + success: true, + message: "Berhasil di check transaksis donasi", + statusTransaksi: _.lowerCase(data?.DonasiMaster_StatusInvoice?.name), + }); + } catch (error) { + return NextResponse.json( + { + success: false, + message: "Gagal di check transaksis donasi", + reason: (error as Error).message, + }, + { + status: 500, + } + ); + } +} diff --git a/src/app/api/notifikasi/kategori/[name]/route.ts b/src/app/api/notifikasi/kategori/[name]/route.ts new file mode 100644 index 00000000..e0c20d2d --- /dev/null +++ b/src/app/api/notifikasi/kategori/[name]/route.ts @@ -0,0 +1,89 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { ICategoryapp } from "@/app_modules/notifikasi/model/interface"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, + { params }: { params: { name: string } } +) { + try { + let fixData; + const { name } = params; + const { searchParams } = new URL(request.url); + const page = searchParams.get("page"); + + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 404 } + ); + + if (!page) { + fixData = await prisma.notifikasi.findMany({ + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + const fixNameKategori = _.startCase(name); + if (fixNameKategori === "Semua") { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + kategoriApp: _.upperCase(name), + }, + }); + } + } + + return NextResponse.json( + { success: true, data: fixData, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data notifikasi: " + error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app/api/notifikasi/kategori/route.ts b/src/app/api/notifikasi/kategori/route.ts new file mode 100644 index 00000000..097601e1 --- /dev/null +++ b/src/app/api/notifikasi/kategori/route.ts @@ -0,0 +1,88 @@ +import { prisma } from "@/lib"; +import { funGetUserIdByToken } from "@/app_modules/_global/fun/get"; +import { ICategoryapp } from "@/app_modules/notifikasi/model/interface"; +import backendLogger from "@/util/backendLogger"; +import _ from "lodash"; +import { NextResponse } from "next/server"; +export const dynamic = "force-dynamic"; + +export async function GET( + request: Request, +) { + try { + let fixData; + const { searchParams } = new URL(request.url); + const category = searchParams.get("category") as ICategoryapp; + const page = searchParams.get("page"); + + const takeData = 10; + const skipData = Number(page) * takeData - takeData; + + const userLoginId = await funGetUserIdByToken(); + if (!userLoginId) + return NextResponse.json( + { success: false, message: "User not found" }, + { status: 404 } + ); + + if (!page) { + fixData = await prisma.notifikasi.findMany({ + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + const fixNameKategori = _.startCase(category); + if (fixNameKategori === "Semua") { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + }, + }); + } else { + fixData = await prisma.notifikasi.findMany({ + take: takeData, + skip: skipData, + orderBy: [ + { + isRead: "asc", + }, + { createdAt: "desc" }, + ], + where: { + userId: userLoginId, + userRoleId: "1", + kategoriApp: _.upperCase(category), + }, + }); + } + } + + return NextResponse.json( + { success: true, data: fixData, message: "Berhasil mendapatkan data" }, + { status: 200 } + ); + } catch (error) { + backendLogger.error("Error get data notifikasi: " + error); + return NextResponse.json( + { success: false, message: "Gagal mendapatkan data" }, + { status: 500 } + ); + } +} diff --git a/src/app_modules/_global/lib/master_list_app.ts b/src/app_modules/_global/lib/master_list_app.ts index a9eeb1aa..6b08101b 100644 --- a/src/app_modules/_global/lib/master_list_app.ts +++ b/src/app_modules/_global/lib/master_list_app.ts @@ -1,4 +1,5 @@ -import statusTransaksi from "../../../../src/bin/seeder/master/master_status_transaksi.json" +import statusTransaksi from "../../../../src/bin/seeder/master/master_status_transaksi.json"; +import masterKategoriApp from "../../../../src/bin/seeder/master/master_kategori_app.json"; export const globalStatusApp = [ { @@ -19,4 +20,36 @@ export const globalStatusApp = [ }, ]; -export const globalStatusTransaksi = statusTransaksi; \ No newline at end of file +export const globalStatusTransaksi = statusTransaksi; + +export const globalMasterApp = [ + { id: "0", name: "Semua" }, + { + id: "1", + name: "Event", + }, + { + id: "2", + name: "Job", + }, + { + id: "3", + name: "Voting", + }, + { + id: "4", + name: "Donasi", + }, + { + id: "5", + name: "Investasi", + }, + { + id: "6", + name: "Forum", + }, + { + id: "7", + name: "Collaboration", + }, +]; diff --git a/src/app_modules/notifikasi/_ui/ui_notifikasi.tsx b/src/app_modules/notifikasi/_ui/ui_notifikasi.tsx index 7c6149b0..fe1fc271 100644 --- a/src/app_modules/notifikasi/_ui/ui_notifikasi.tsx +++ b/src/app_modules/notifikasi/_ui/ui_notifikasi.tsx @@ -15,8 +15,8 @@ import { Notifikasi_ComponentSkeletonView, } from "../component"; import { gs_notifikasi_kategori_app } from "../lib"; -import { apiGetAllNotifikasiByCategory } from "../lib/api_notifikasi"; import { MODEL_NOTIFIKASI } from "../model/interface"; +import { apiGetAllNotifikasiByCategory } from "../lib/api_fetch_notifikasi"; export default function Notifikasi_UiMain({ userLoginId, @@ -82,9 +82,6 @@ export default function Notifikasi_UiMain({ {(item) => ( )} diff --git a/src/app_modules/notifikasi/component/card_view.tsx b/src/app_modules/notifikasi/component/card_view.tsx index f6fb1704..bc5be2f7 100644 --- a/src/app_modules/notifikasi/component/card_view.tsx +++ b/src/app_modules/notifikasi/component/card_view.tsx @@ -1,6 +1,5 @@ "use client"; -import { gs_count_ntf } from "@/lib/global_state"; import { AccentColor, MainColor, @@ -11,6 +10,8 @@ import { gs_event_hotMenu } from "@/app_modules/event/global_state"; import { gs_investas_menu } from "@/app_modules/investasi/g_state"; import { gs_job_hot_menu } from "@/app_modules/job/global_state"; import { gs_vote_hotMenu } from "@/app_modules/vote/global_state"; +import { gs_count_ntf } from "@/lib/global_state"; +import { clientLogger } from "@/util/clientLogger"; import { Badge, Card, Divider, Group, Stack, Text } from "@mantine/core"; import { IconCheck, IconChecks } from "@tabler/icons-react"; import { useAtom } from "jotai"; @@ -24,18 +25,12 @@ import { notifikasi_eventCheckStatus } from "./path/event"; import { redirectInvestasiPage } from "./path/investasi"; import { notifikasi_jobCheckStatus } from "./path/job"; import { notifikasi_votingCheckStatus } from "./path/voting"; -import { clientLogger } from "@/util/clientLogger"; +import { redirectDetailForumPage } from "./path/forum"; export function ComponentNotifiaksi_CardView({ data, - onLoadData, - categoryPage, - userLoginId, }: { data: MODEL_NOTIFIKASI; - onLoadData: (val: any) => void; - categoryPage: string; - userLoginId?: string }) { const router = useRouter(); const [visible, setVisible] = useState(false); @@ -65,25 +60,19 @@ export function ComponentNotifiaksi_CardView({ try { setVisible(true); + console.log("data", data); // JOB if (data?.kategoriApp === "JOB") { await notifikasi_jobCheckStatus({ appId: data.appId, dataId: data.id, - categoryPage: categoryPage, router: router, - onLoadDataJob(val) { - onLoadData(val); - }, onSetJobMenuId(val) { setJobMenuId(val); }, onSetVisible(val) { setVisible(val); }, - onLoadCountNtf(val) { - setLoadCountNtf(val); - }, }); return; @@ -94,20 +83,13 @@ export function ComponentNotifiaksi_CardView({ await notifikasi_eventCheckStatus({ appId: data.appId, dataId: data.id, - categoryPage: categoryPage, router: router, - onLoadDataEvent(val) { - onLoadData(val); - }, onSetVisible(val) { setVisible(val); }, onSetEventMenuId(val) { setEventMenuId(val); }, - onLoadCountNtf(val) { - setLoadCountNtf(val); - }, }); return; @@ -118,20 +100,13 @@ export function ComponentNotifiaksi_CardView({ await notifikasi_votingCheckStatus({ appId: data.appId, dataId: data.id, - categoryPage: categoryPage, router: router, - onLoadDataEvent(val) { - onLoadData(val); - }, onSetVisible(val) { setVisible(val); }, onSetMenuId(val) { setVotingMenu(val); }, - onLoadCountNtf(val) { - setLoadCountNtf(val); - }, }); return; @@ -143,21 +118,13 @@ export function ComponentNotifiaksi_CardView({ appId: data.appId, dataId: data.id, userId: data.userId, - userLoginId: userLoginId as any, - categoryPage: categoryPage, router: router, - onLoadDataEvent(val) { - onLoadData(val); - }, onSetVisible(val) { setVisible(val); }, onSetMenuId(val) { setDonasiMenu(val); }, - onLoadCountNtf(val) { - setLoadCountNtf(val); - }, }); return; @@ -168,30 +135,29 @@ export function ComponentNotifiaksi_CardView({ redirectInvestasiPage({ appId: data.appId, dataId: data.id, - categoryPage: categoryPage, router: router, - onLoadDataEvent(val) { - onLoadData(val); - }, onSetVisible(val) { setVisible(val); }, onSetMenuId(val) { setInvestasiMenu(val); }, - onLoadCountNtf(val) { - setLoadCountNtf(val); - }, }); return; } - // data?.kategoriApp === "FORUM" && - // redirectDetailForumPage({ - // data: data, - // router: router, - // }); + if (data?.kategoriApp === "FORUM") { + redirectDetailForumPage({ + data: data, + router: router, + onSetVisible(val) { + setVisible(val); + }, + }); + + return; + } // data?.kategoriApp === "COLLABORATION" && // redirectDetailCollaborationPage({ diff --git a/src/app_modules/notifikasi/component/path/donasi.ts b/src/app_modules/notifikasi/component/path/donasi.ts index 3cf8c948..1478be45 100644 --- a/src/app_modules/notifikasi/component/path/donasi.ts +++ b/src/app_modules/notifikasi/component/path/donasi.ts @@ -8,63 +8,66 @@ import notifikasi_countUserNotifikasi from "../../fun/count/fun_count_by_id"; import notifikasi_funUpdateIsReadById from "../../fun/update/fun_update_is_read_by_user_id"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; import { notifikasi_checkAuthorDonasiById } from "../../fun/check/fun_check_author_donasi_by_id"; +import { apiNotifikasiDonasiCheckTransaksiById } from "../../lib/api_fetch_ntf_donasi"; +import { cookies } from "next/headers"; export async function redirectDonasiPage({ appId, dataId, - categoryPage, userId, - userLoginId, router, - onLoadDataEvent, onSetMenuId, onSetVisible, - onLoadCountNtf, }: { appId: string; dataId: string; - categoryPage: string; userId: string; - userLoginId: string; router: AppRouterInstance; - onLoadDataEvent: (val: any) => void; onSetMenuId(val: number): void; onSetVisible(val: boolean): void; - onLoadCountNtf(val: number): void; }) { const check = await notifikasi_funDonasiCheckStatus({ id: appId }); - const checkAuthor = await notifikasi_checkAuthorDonasiById({ - donasiId: appId, - userId: userId, - }); - if (check.status == 200) { - // const loadListNotifikasi = await notifikasi_getByUserId({ - // page: 1, - // kategoriApp: categoryPage as any, - // }); - // onLoadDataEvent(loadListNotifikasi); - - // const loadCountNotifikasi = await notifikasi_countUserNotifikasi(); - // onLoadCountNtf(loadCountNotifikasi); - - const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ - notifId: dataId, + if (check.statusName == "") { + const checkTransaksi = await apiNotifikasiDonasiCheckTransaksiById({ + id: appId, }); - if (updateReadNotifikasi.status == 200) { - const pathToCreator = `/dev/donasi/detail/${check.statusName}/${appId}`; - const pathToAllUser = `/dev/donasi/detail/main/${appId}`; + if (checkTransaksi.success) { + const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ + notifId: dataId, + }); - if (checkAuthor) { - router.push(pathToCreator, { scroll: false }); - } else { - router.push(pathToAllUser, { scroll: false }); - onSetMenuId(1); + if (updateReadNotifikasi.status == 200) { + router.push(RouterDonasi.main_donasi_saya, { scroll: false }); + onSetMenuId(2); } } } else { - onSetVisible(false); - ComponentGlobal_NotifikasiPeringatan("Status tidak ditemukan"); + const checkAuthor = await notifikasi_checkAuthorDonasiById({ + donasiId: appId, + userId: userId, + }); + + if (check.status == 200) { + const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ + notifId: dataId, + }); + + if (updateReadNotifikasi.status == 200) { + const pathToCreator = `/dev/donasi/detail/${check.statusName}/${appId}`; + const pathToAllUser = `/dev/donasi/detail/main/${appId}`; + + if (checkAuthor) { + router.push(pathToCreator, { scroll: false }); + } else { + router.push(pathToAllUser, { scroll: false }); + onSetMenuId(1); + } + } + } else { + onSetVisible(false); + ComponentGlobal_NotifikasiPeringatan("Status tidak ditemukan"); + } } } diff --git a/src/app_modules/notifikasi/component/path/event.ts b/src/app_modules/notifikasi/component/path/event.ts index 34f0cbb3..c4062b41 100644 --- a/src/app_modules/notifikasi/component/path/event.ts +++ b/src/app_modules/notifikasi/component/path/event.ts @@ -8,33 +8,19 @@ import notifikasi_countUserNotifikasi from "../../fun/count/fun_count_by_id"; export async function notifikasi_eventCheckStatus({ appId, dataId, - categoryPage, router, - onLoadDataEvent, onSetEventMenuId, onSetVisible, - onLoadCountNtf, }: { appId: string; dataId: string; - categoryPage: string router: AppRouterInstance; - onLoadDataEvent: (val: any) => void; onSetEventMenuId(val: number): void; onSetVisible(val: boolean): void; - onLoadCountNtf(val: number): void; }) { const check = await notifikasi_funEventCheckStatus({ id: appId }); if (check.status == 200) { - const loadListNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: categoryPage as any, - }); - onLoadDataEvent(loadListNotifikasi); - - const loadCountNotifikasi = await notifikasi_countUserNotifikasi(); - onLoadCountNtf(loadCountNotifikasi); const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ notifId: dataId, diff --git a/src/app_modules/notifikasi/component/path/forum.ts b/src/app_modules/notifikasi/component/path/forum.ts index c6bcca3c..a8a382b6 100644 --- a/src/app_modules/notifikasi/component/path/forum.ts +++ b/src/app_modules/notifikasi/component/path/forum.ts @@ -1,26 +1,46 @@ import { RouterForum } from "@/lib/router_hipmi/router_forum"; import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; import { MODEL_NOTIFIKASI } from "../../model/interface"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; +import notifikasi_funUpdateIsReadById from "../../fun/update/fun_update_is_read_by_user_id"; -export function redirectDetailForumPage({ +export async function redirectDetailForumPage({ data, router, + onSetVisible, }: { data: MODEL_NOTIFIKASI; router: AppRouterInstance; + onSetVisible(val: boolean): void; }) { - if (data.status === null) { - const path = RouterForum.main_detail + data.appId; - router.push(path, { scroll: false }); - } + try { + if (data.status === null) { + const path = RouterForum.main_detail + data.appId; + router.push(path, { scroll: false }); + } - if (data.status === "Report Komentar") { - const path = RouterForum.detail_report_komentar + data.appId; - router.push(path, { scroll: false }); - } + if (data.status === "Report Komentar") { + const path = RouterForum.detail_report_komentar + data.appId; + router.push(path, { scroll: false }); + } - if (data.status === "Report Posting") { - const path = RouterForum.detail_report_posting + data.appId; - router.push(path, { scroll: false }); + if (data.status === "Report Posting") { + const path = RouterForum.detail_report_posting + data.appId; + router.push(path, { scroll: false }); + } + + const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ + notifId: data.id, + }); + + if (updateReadNotifikasi.status == 200) { + onSetVisible(true); + + } + + + } catch (error) { + console.error("Error get all forum :", error); + ComponentGlobal_NotifikasiPeringatan("Status tidak ditemukan"); } } diff --git a/src/app_modules/notifikasi/component/path/investasi.ts b/src/app_modules/notifikasi/component/path/investasi.ts index 5d24d7dd..588db101 100644 --- a/src/app_modules/notifikasi/component/path/investasi.ts +++ b/src/app_modules/notifikasi/component/path/investasi.ts @@ -16,21 +16,15 @@ import { export async function redirectInvestasiPage({ appId, dataId, - categoryPage, router, - onLoadDataEvent, onSetMenuId, onSetVisible, - onLoadCountNtf, }: { appId: string; dataId: string; - categoryPage: string; router: AppRouterInstance; - onLoadDataEvent: (val: any) => void; onSetMenuId(val: number): void; onSetVisible(val: boolean): void; - onLoadCountNtf(val: number): void; }) { const check = await notifikasi_funInvestasiCheckStatus({ id: appId }); const checkInvestor = await notifikasi_funInvestasiChecInvestaorStatus({ diff --git a/src/app_modules/notifikasi/component/path/job.ts b/src/app_modules/notifikasi/component/path/job.ts index b9471bd2..fef128df 100644 --- a/src/app_modules/notifikasi/component/path/job.ts +++ b/src/app_modules/notifikasi/component/path/job.ts @@ -8,35 +8,20 @@ import notifikasi_countUserNotifikasi from "../../fun/count/fun_count_by_id"; export async function notifikasi_jobCheckStatus({ appId, dataId, - categoryPage, router, - onLoadDataJob, onSetJobMenuId, onSetVisible, - onLoadCountNtf, }: { appId: string; dataId: string; - categoryPage:string router: AppRouterInstance; - onLoadDataJob: (val: any) => void; onSetJobMenuId(val: number): void; onSetVisible(val: boolean): void; - onLoadCountNtf(val: number): void; }) { const check = await notifikasi_funJobCheckStatus({ id: appId, }); - const loadListNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: categoryPage as any, - }); - onLoadDataJob(loadListNotifikasi); - - const loadCountNotifikasi = await notifikasi_countUserNotifikasi(); - onLoadCountNtf(loadCountNotifikasi); - if (check.status == 200) { const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ notifId: dataId, diff --git a/src/app_modules/notifikasi/component/path/voting.ts b/src/app_modules/notifikasi/component/path/voting.ts index 3b8a3a92..cd61770f 100644 --- a/src/app_modules/notifikasi/component/path/voting.ts +++ b/src/app_modules/notifikasi/component/path/voting.ts @@ -10,34 +10,19 @@ import notifikasi_funUpdateIsReadById from "../../fun/update/fun_update_is_read_ export async function notifikasi_votingCheckStatus({ appId, dataId, - categoryPage, router, - onLoadDataEvent, onSetMenuId, onSetVisible, - onLoadCountNtf, }: { appId: string; dataId: string; - categoryPage: string; router: AppRouterInstance; - onLoadDataEvent: (val: any) => void; onSetMenuId(val: number): void; onSetVisible(val: boolean): void; - onLoadCountNtf(val: number): void; }) { const check = await notifikasi_funVotingCheckStatus({ id: appId }); if (check.status == 200) { - const loadListNotifikasi = await notifikasi_getByUserId({ - page: 1, - kategoriApp: categoryPage as any, - }); - onLoadDataEvent(loadListNotifikasi); - - const loadCountNotifikasi = await notifikasi_countUserNotifikasi(); - onLoadCountNtf(loadCountNotifikasi); - const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ notifId: dataId, }); @@ -52,6 +37,4 @@ export async function notifikasi_votingCheckStatus({ } else { ComponentGlobal_NotifikasiPeringatan("Status tidak ditemukan"); } - - } diff --git a/src/app_modules/notifikasi/lib/api_fetch_notifikasi.ts b/src/app_modules/notifikasi/lib/api_fetch_notifikasi.ts new file mode 100644 index 00000000..beea94b5 --- /dev/null +++ b/src/app_modules/notifikasi/lib/api_fetch_notifikasi.ts @@ -0,0 +1,46 @@ +import { API_RouteNotifikasi } from "@/lib/api_user_router/route_api_notifikasi"; +import { ICategoryapp } from "../model/interface"; + +export const apiGetAllNotifikasiByCategory = async ({ + category, + page, +}: { + category: ICategoryapp; + page: number; +}) => { + try { + // 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 isCategory = category ? `?category=${category}` : ""; + const isPage = page ? `&page=${page}` : ""; + const response = await fetch( + `/api/notifikasi/kategori${isCategory}${isPage}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + } + ); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error("Failed to get all forum:", response.statusText, errorData); + throw new Error(errorData?.message || "Failed to get all forum"); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error get all forum", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; diff --git a/src/app_modules/notifikasi/lib/api_fetch_ntf_donasi.ts b/src/app_modules/notifikasi/lib/api_fetch_ntf_donasi.ts new file mode 100644 index 00000000..bf8fecb4 --- /dev/null +++ b/src/app_modules/notifikasi/lib/api_fetch_ntf_donasi.ts @@ -0,0 +1,44 @@ +export { apiNotifikasiDonasiCheckTransaksiById }; + +const apiNotifikasiDonasiCheckTransaksiById = async ({ + id, +}: { + id: string; +}) => { + try { + // 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/notifikasi/donasi/transaksi/${id}`, { + method: "GET", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + // Check if the response is OK + if (!response.ok) { + const errorData = await response.json().catch(() => null); + console.error( + "Failed to check donasi transaksi:", + response.statusText, + errorData + ); + throw new Error( + errorData?.message || "Failed to check donasi transaksi:" + ); + } + + // Return the JSON response + return await response.json(); + } catch (error) { + console.error("Error to check donasi transaksi:", error); + throw error; // Re-throw the error to handle it in the calling function + } +}; diff --git a/src/app_modules/notifikasi/lib/api_notifikasi.ts b/src/app_modules/notifikasi/lib/api_notifikasi.ts deleted file mode 100644 index 83ea01d1..00000000 --- a/src/app_modules/notifikasi/lib/api_notifikasi.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { API_RouteNotifikasi } from "@/lib/api_user_router/route_api_notifikasi"; -import { ICategoryapp } from "../model/interface"; - -export const apiGetAllNotifikasiByCategory = async ({category, page}: {category: ICategoryapp; page: number}) => { - const respone = await fetch( - `/api/notifikasi/get-all-by-category?category=${category}&page=${page}` - ); - - return await respone.json().catch(() => null); -} \ No newline at end of file From 55ecd9191c09ed37761db94f35834762dab17d78 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Mon, 3 Mar 2025 14:25:12 +0800 Subject: [PATCH 2/4] fix notifikasi forum deskripsi: - fix load data notifikasi: forum --- src/app_modules/home/view_home.tsx | 20 +++++++++---------- src/app_modules/home/view_home_new.tsx | 6 +++--- .../notifikasi/component/card_view.tsx | 12 +++++------ 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/app_modules/home/view_home.tsx b/src/app_modules/home/view_home.tsx index c9741486..5a7e52e5 100644 --- a/src/app_modules/home/view_home.tsx +++ b/src/app_modules/home/view_home.tsx @@ -1,5 +1,5 @@ "use client"; -import { gs_count_ntf, gs_user_ntf } from "@/lib/global_state"; +import { gs_user_ntf } from "@/lib/global_state"; import { useShallowEffect } from "@mantine/hooks"; import { useAtom } from "jotai"; import { useState } from "react"; @@ -22,7 +22,7 @@ export default function HomeView({ }) { const [countNtf, setCountNtf] = useState(countNotifikasi); const [newUserNtf, setNewUserNtf] = useAtom(gs_user_ntf); - const [countLoadNtf, setCountLoadNtf] = useAtom(gs_count_ntf); + // const [countLoadNtf, setCountLoadNtf] = useAtom(gs_count_ntf); const userRoleId = dataUser.masterUserRoleId; // useShallowEffect(() => { @@ -33,15 +33,15 @@ export default function HomeView({ // } // }, [userRoleId]); - useShallowEffect(() => { - onLoadNotifikasi({ - onLoad(val) { - setCountNtf(val); - }, - }); + // useShallowEffect(() => { + // onLoadNotifikasi({ + // onLoad(val) { + // setCountNtf(val); + // }, + // }); - setCountNtf(countLoadNtf as any); - }, [countLoadNtf, setCountNtf]); + // setCountNtf(countLoadNtf as any); + // }, [countLoadNtf, setCountNtf]); useShallowEffect(() => { setCountNtf(countNtf + newUserNtf); diff --git a/src/app_modules/home/view_home_new.tsx b/src/app_modules/home/view_home_new.tsx index fad2762c..6c2e699f 100644 --- a/src/app_modules/home/view_home_new.tsx +++ b/src/app_modules/home/view_home_new.tsx @@ -1,5 +1,5 @@ "use client"; -import { gs_count_ntf, gs_user_ntf } from "@/lib/global_state"; +import { gs_user_ntf } from "@/lib/global_state"; import global_limit from "@/lib/limit"; import { RouterProfile } from "@/lib/router_hipmi/router_katalog"; import { RouterNotifikasi } from "@/lib/router_hipmi/router_notifikasi"; @@ -20,7 +20,7 @@ import FooterHome from "./component/footer_home"; import { apiGetDataHome, apiGetNotifikasiHome } from "./fun/get/api_home"; export default function HomeViewNew() { - const [countNtf, setCountNtf] = useAtom(gs_count_ntf); + const [countNtf, setCountNtf] = useState(null); const [newUserNtf, setNewUserNtf] = useAtom(gs_user_ntf); const [dataUser, setDataUser] = useState(null); const [categoryPage, setCategoryPage] = useAtom(gs_notifikasi_kategori_app); @@ -31,7 +31,7 @@ export default function HomeViewNew() { setCountNtf(countNtf + newUserNtf); setNewUserNtf(0); } - }, [newUserNtf, countNtf]); + }, [newUserNtf]); useShallowEffect(() => { hanlderLoadData(); diff --git a/src/app_modules/notifikasi/component/card_view.tsx b/src/app_modules/notifikasi/component/card_view.tsx index bc5be2f7..168c4d40 100644 --- a/src/app_modules/notifikasi/component/card_view.tsx +++ b/src/app_modules/notifikasi/component/card_view.tsx @@ -10,7 +10,6 @@ import { gs_event_hotMenu } from "@/app_modules/event/global_state"; import { gs_investas_menu } from "@/app_modules/investasi/g_state"; import { gs_job_hot_menu } from "@/app_modules/job/global_state"; import { gs_vote_hotMenu } from "@/app_modules/vote/global_state"; -import { gs_count_ntf } from "@/lib/global_state"; import { clientLogger } from "@/util/clientLogger"; import { Badge, Card, Divider, Group, Stack, Text } from "@mantine/core"; import { IconCheck, IconChecks } from "@tabler/icons-react"; @@ -22,10 +21,10 @@ import { useState } from "react"; import { MODEL_NOTIFIKASI } from "../model/interface"; import { redirectDonasiPage } from "./path/donasi"; import { notifikasi_eventCheckStatus } from "./path/event"; +import { redirectDetailForumPage } from "./path/forum"; import { redirectInvestasiPage } from "./path/investasi"; import { notifikasi_jobCheckStatus } from "./path/job"; import { notifikasi_votingCheckStatus } from "./path/voting"; -import { redirectDetailForumPage } from "./path/forum"; export function ComponentNotifiaksi_CardView({ data, @@ -34,7 +33,6 @@ export function ComponentNotifiaksi_CardView({ }) { const router = useRouter(); const [visible, setVisible] = useState(false); - const [loadCountNtf, setLoadCountNtf] = useAtom(gs_count_ntf); const [jobMenuId, setJobMenuId] = useAtom(gs_job_hot_menu); const [eventMenuId, setEventMenuId] = useAtom(gs_event_hotMenu); @@ -59,8 +57,8 @@ export function ComponentNotifiaksi_CardView({ onClick={async () => { try { setVisible(true); - console.log("data", data); + // JOB if (data?.kategoriApp === "JOB") { await notifikasi_jobCheckStatus({ @@ -114,7 +112,7 @@ export function ComponentNotifiaksi_CardView({ // DONASI if (data?.kategoriApp === "DONASI") { - redirectDonasiPage({ + await redirectDonasiPage({ appId: data.appId, dataId: data.id, userId: data.userId, @@ -132,7 +130,7 @@ export function ComponentNotifiaksi_CardView({ // INVESTASI if (data?.kategoriApp === "INVESTASI") { - redirectInvestasiPage({ + await redirectInvestasiPage({ appId: data.appId, dataId: data.id, router: router, @@ -148,7 +146,7 @@ export function ComponentNotifiaksi_CardView({ } if (data?.kategoriApp === "FORUM") { - redirectDetailForumPage({ + await redirectDetailForumPage({ data: data, router: router, onSetVisible(val) { From 0d2d39ccc4d82d2f19545688824c85057698b66e Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Mon, 3 Mar 2025 15:27:01 +0800 Subject: [PATCH 3/4] fix collaboration notifikasi --- .../detail/list_partisipasi_user.tsx | 57 +++++++++------- .../fun_create_partisipan_by_user_id.ts | 65 +++++++++++-------- src/app_modules/home/view_home_new.tsx | 7 +- .../notifikasi/component/card_view.tsx | 17 +++-- .../component/path/collaboration.ts | 38 +++++++---- src/lib/global_state.ts | 4 +- src/lib/realtime_provider.tsx | 11 ++++ 7 files changed, 126 insertions(+), 73 deletions(-) diff --git a/src/app_modules/colab/component/detail/list_partisipasi_user.tsx b/src/app_modules/colab/component/detail/list_partisipasi_user.tsx index 609d4f58..f313f41a 100644 --- a/src/app_modules/colab/component/detail/list_partisipasi_user.tsx +++ b/src/app_modules/colab/component/detail/list_partisipasi_user.tsx @@ -36,6 +36,8 @@ import colab_funCreatePartisipan from "../../fun/create/fun_create_partisipan_by import { MODEL_COLLABORATION_PARTISIPASI } from "../../model/interface"; import { Collaboration_SkeletonListPrtisipanIsUser } from "../skeleton_view"; import ComponentColab_AuthorNameOnListPartisipan from "./header_author_list_partisipan"; +import { WibuRealtime } from "wibu-pkg"; +import { IRealtimeData } from "@/lib/global_state"; export default function ComponentColab_DetailListPartisipasiUser({ userLoginId, @@ -103,37 +105,42 @@ export default function ComponentColab_DetailListPartisipasiUser({ }); if (res.status === 201) { - // const dataNotif = { - // appId: res?.data?.ProjectCollaboration?.id, - // userId: res?.data?.ProjectCollaboration?.userId, - // pesan: res?.data?.ProjectCollaboration?.title, - // status: "Partisipan Project", - // kategoriApp: "COLLABORATION", - // title: "Partisipan baru telah bergabung !", - // }; + const dataNotifikasi: IRealtimeData = { + appId: res?.data?.ProjectCollaboration?.id, + userId: res?.data?.ProjectCollaboration?.userId as any, + pesan: res?.data?.ProjectCollaboration?.title, + status: "Partisipan Project" as any, + kategoriApp: "COLLABORATION", + title: "Partisipan baru telah bergabung !", + }; - // const createNotifikasi = await notifikasiToUser_funCreate({ - // data: dataNotif as any, - // }); + const createNotifikasi = await notifikasiToUser_funCreate({ + data: dataNotifikasi as any, + }); - // if (createNotifikasi.status === 201) { - // mqtt_client.publish( - // "USER", - // JSON.stringify({ - // userId: dataNotif.userId, - // count: 1, - // }) - // ); - // } + if (createNotifikasi.status === 201) { + WibuRealtime.setData({ + type: "trigger", + pushNotificationTo: "USER", + dataMessage: dataNotifikasi, + }); + // mqtt_client.publish( + // "USER", + // JSON.stringify({ + // userId: dataNotif.userId, + // count: 1, + // }) + // ); + } - const respone = await apiGetOneCollaborationById({ + const response = await apiGetOneCollaborationById({ id: params.id, kategori: "list_partisipan", page: `${activePage}`, }); - if (respone) { - setData(respone.data); + if (response) { + setData(response.data); } const cekPartisipan = await apiGetOneCollaborationById({ @@ -274,8 +281,8 @@ export default function ComponentColab_DetailListPartisipasiUser({ } styles={{ input: { - backgroundColor: MainColor.white - } + backgroundColor: MainColor.white, + }, }} placeholder="Deskripsikan diri anda yang sesuai dengan proyek ini.." minRows={4} diff --git a/src/app_modules/colab/fun/create/fun_create_partisipan_by_user_id.ts b/src/app_modules/colab/fun/create/fun_create_partisipan_by_user_id.ts index 50b690ab..d0b5e4af 100644 --- a/src/app_modules/colab/fun/create/fun_create_partisipan_by_user_id.ts +++ b/src/app_modules/colab/fun/create/fun_create_partisipan_by_user_id.ts @@ -12,37 +12,46 @@ export default async function colab_funCreatePartisipan({ id: string; deskripsi: string; }) { - const userLoginId = await funGetUserIdByToken(); + try { + const userLoginId = await funGetUserIdByToken(); - if (userLoginId == null) { - return { - status: 500, - message: "Gagal mendapatkan data, user id tidak ada", - }; - } + if (!userLoginId) { + return { + status: 404, + message: "Gagal mendapatkan data, user id tidak ada", + }; + } - const create = await prisma.projectCollaboration_Partisipasi.create({ - data: { - projectCollaborationId: id, - userId: userLoginId, - deskripsi_diri: deskripsi, - }, - select: { - ProjectCollaboration: { - select: { - id: true, - title: true, - userId: true, + const create = await prisma.projectCollaboration_Partisipasi.create({ + data: { + projectCollaborationId: id, + userId: userLoginId, + deskripsi_diri: deskripsi, + }, + select: { + ProjectCollaboration: { + select: { + id: true, + title: true, + userId: true, + }, }, }, - }, - }); + }); - if (!create) return { status: 400, message: "Gagal menambahkan partisipan" }; - revalidatePath(RouterColab.main_detail + id); - return { - data: create, - status: 201, - message: "Berhasil menambahkan partisipan", - }; + if (!create) + return { status: 400, message: "Gagal menambahkan partisipan" }; + revalidatePath(RouterColab.main_detail + id); + return { + data: create, + status: 201, + message: "Berhasil menambahkan partisipan", + }; + } catch (error) { + return { + status: 500, + message: "Error menambahkan partisipan", + error: (error as Error).message, + }; + } } diff --git a/src/app_modules/home/view_home_new.tsx b/src/app_modules/home/view_home_new.tsx index 6c2e699f..991a3b03 100644 --- a/src/app_modules/home/view_home_new.tsx +++ b/src/app_modules/home/view_home_new.tsx @@ -77,6 +77,9 @@ export default function HomeViewNew() { } } + console.log("count >", countNtf); + console.log("user >", dataUser); + return ( <> @@ -111,7 +114,7 @@ export default function HomeViewNew() { ) } customButtonRight={ - !dataUser || !countNtf ? ( + !dataUser && !countNtf ? ( diff --git a/src/app_modules/notifikasi/component/card_view.tsx b/src/app_modules/notifikasi/component/card_view.tsx index 168c4d40..bf80c8ee 100644 --- a/src/app_modules/notifikasi/component/card_view.tsx +++ b/src/app_modules/notifikasi/component/card_view.tsx @@ -25,6 +25,7 @@ import { redirectDetailForumPage } from "./path/forum"; import { redirectInvestasiPage } from "./path/investasi"; import { notifikasi_jobCheckStatus } from "./path/job"; import { notifikasi_votingCheckStatus } from "./path/voting"; +import { redirectDetailCollaborationPage } from "./path/collaboration"; export function ComponentNotifiaksi_CardView({ data, @@ -157,11 +158,17 @@ export function ComponentNotifiaksi_CardView({ return; } - // data?.kategoriApp === "COLLABORATION" && - // redirectDetailCollaborationPage({ - // data: data, - // router: router, - // }); + if (data?.kategoriApp === "COLLABORATION") { + await redirectDetailCollaborationPage({ + data: data, + router: router, + onSetVisible(val) { + setVisible(val); + }, + }); + + return; + } } catch (error) { setVisible(false); clientLogger.error("Error redirect notification page", error); diff --git a/src/app_modules/notifikasi/component/path/collaboration.ts b/src/app_modules/notifikasi/component/path/collaboration.ts index 9a9acde5..edf91e4b 100644 --- a/src/app_modules/notifikasi/component/path/collaboration.ts +++ b/src/app_modules/notifikasi/component/path/collaboration.ts @@ -1,26 +1,40 @@ import { RouterColab } from "@/lib/router_hipmi/router_colab"; import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime"; import { MODEL_NOTIFIKASI } from "../../model/interface"; +import notifikasi_funUpdateIsReadById from "../../fun/update/fun_update_is_read_by_user_id"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; -export function redirectDetailCollaborationPage({ +export async function redirectDetailCollaborationPage({ data, router, + onSetVisible, }: { data: MODEL_NOTIFIKASI; router: AppRouterInstance; + onSetVisible(val: boolean): void; }) { - if (data.status === "Partisipan Project") { - const path = RouterColab.main_detail + data.appId; - router.push(path, { scroll: false }); + try { + if (data.status === "Partisipan Project") { + const path = RouterColab.main_detail + data.appId; + router.push(path, { scroll: false }); + } + + if (data.status === "Collaboration Group") { + const path = RouterColab.grup_diskusi; + router.push(path, { scroll: false }); + } + + const updateReadNotifikasi = await notifikasi_funUpdateIsReadById({ + notifId: data.id, + }); + + if (updateReadNotifikasi.status == 200) { + onSetVisible(true); + } + } catch (error) { + console.error("Error get all forum :", error); + ComponentGlobal_NotifikasiPeringatan("Status tidak ditemukan"); } - - - - if (data.status === "Collaboration Group") { - const path = RouterColab.grup_diskusi; - router.push(path, { scroll: false }); - } - // if (data.status === "Report Komentar") { // const path = RouterForum.detail_report_komentar + data.appId; // router.push(path, { scroll: false }); diff --git a/src/lib/global_state.ts b/src/lib/global_state.ts index 4efaf286..8e73e281 100644 --- a/src/lib/global_state.ts +++ b/src/lib/global_state.ts @@ -17,7 +17,9 @@ export type ITypeStatusNotifikasi = | "Berhasil" | "Proses" | "Menunggu" - | "Gagal"; + | "Gagal" + // Collaboration + | "Partisipan Project" /** * @param kategoriApp | "JOB", "VOTING", "EVENT", "DONASI", "INVESTASI", "COLLABORATION", "FORUM" diff --git a/src/lib/realtime_provider.tsx b/src/lib/realtime_provider.tsx index d85d0186..e579ed26 100644 --- a/src/lib/realtime_provider.tsx +++ b/src/lib/realtime_provider.tsx @@ -246,6 +246,17 @@ export default function RealtimeProvider({ } // ---------------------- INVESTASI ------------------------- // + + // ---------------------- COLLABORATION ------------------------- // + if ( + data.type == "trigger" && + data.pushNotificationTo == "USER" && + data.dataMessage?.kategoriApp == "COLLABORATION" && + data.dataMessage?.status == "Partisipan Project" + ) { + setNewUserNtf((e) => e + 1); + } + // ---------------------- COLLABORATION ------------------------- // }, }); From ceab376a62e5aa77bf7fc414d5769a22a55ab36e Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Mon, 3 Mar 2025 15:37:23 +0800 Subject: [PATCH 4/4] fix event draft ajukan kembali --- src/app_modules/event/detail/draft/index.tsx | 46 +++++++++++--------- src/app_modules/home/view_home_new.tsx | 2 - 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/app_modules/event/detail/draft/index.tsx b/src/app_modules/event/detail/draft/index.tsx index 132b6d2f..93ecca6a 100644 --- a/src/app_modules/event/detail/draft/index.tsx +++ b/src/app_modules/event/detail/draft/index.tsx @@ -23,33 +23,36 @@ import { Event_funDeleteById } from "../../fun/delete/fun_delete"; import { Event_funEditStatusById } from "../../fun/edit/fun_edit_status_by_id"; export default function Event_DetailDraft() { - const params = useParams<{ id: string }>(); - const eventId = params.id as string; - const [data, setData] = useState(null); + const params = useParams<{ id: string }>(); + const eventId = params.id as string; + const [data, setData] = useState(null); - useShallowEffect(() => { - onLoadData(); - }, []); + useShallowEffect(() => { + onLoadData(); + }, []); - async function onLoadData() { - try { - const respone = await apiGetEventDetailById({ - id: eventId, - }); + async function onLoadData() { + try { + const respone = await apiGetEventDetailById({ + id: eventId, + }); - if (respone) { - setData(respone.data); - } - } catch (error) { - clientLogger.error("Error get data detail event", error); - } - } + if (respone) { + setData(respone.data); + } + } catch (error) { + clientLogger.error("Error get data detail event", error); + } + } return ( <> - + ); @@ -62,7 +65,6 @@ function ButtonAction({ eventId, endDate }: { eventId: string; endDate: any }) { const [openModal1, setOpenModal1] = useState(false); const [openModal2, setOpenModal2] = useState(false); - async function onDelete() { try { const res = await Event_funDeleteById(eventId); @@ -86,7 +88,9 @@ function ButtonAction({ eventId, endDate }: { eventId: string; endDate: any }) { } async function onAjukan() { - if (moment(endDate.toISOString().toString()).diff(moment(), "minutes") < 0) + // console.log("end Date", endDate) + + if (moment(endDate).diff(moment(), "minutes") < 0) return ComponentGlobal_NotifikasiPeringatan("Waktu acara telah lewat"); try { diff --git a/src/app_modules/home/view_home_new.tsx b/src/app_modules/home/view_home_new.tsx index 991a3b03..868d3126 100644 --- a/src/app_modules/home/view_home_new.tsx +++ b/src/app_modules/home/view_home_new.tsx @@ -77,8 +77,6 @@ export default function HomeViewNew() { } } - console.log("count >", countNtf); - console.log("user >", dataUser); return ( <>