From 38cbc921f58337f0f7a43cb0bda36cae2fd8f156 Mon Sep 17 00:00:00 2001 From: amel Date: Tue, 19 Nov 2024 10:30:03 +0800 Subject: [PATCH] upd: cek notifikasi Deskripsi: - menambahkan button sementara pada fitur untuk mengetes push notifikasi No Issues --- src/app/api/push-notification/route.ts | 3 ++ src/module/home/ui/view_detail_feature.tsx | 49 ++++++++++++++++++---- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/app/api/push-notification/route.ts b/src/app/api/push-notification/route.ts index adab183..c165538 100644 --- a/src/app/api/push-notification/route.ts +++ b/src/app/api/push-notification/route.ts @@ -6,6 +6,7 @@ WibuServerPush.init({ VAPID_PRIVATE_KEY: process.env.VAPID_PRIVATE_KEY!, }) +// UNTUK SUBSCRIBE USER DEVICE export async function POST(req: Request) { const { user, subscription } = await req.json() const upsert = await prisma.subscribe.upsert({ @@ -25,6 +26,8 @@ export async function POST(req: Request) { } + +// UNTUK KIRIM NOTIFIKASI export async function PUT(req: Request) { const sub = await prisma.subscribe.findMany() const subs: PushSubscription[] = sub.map((v) => JSON.parse(v.subscription)) as PushSubscription[] diff --git a/src/module/home/ui/view_detail_feature.tsx b/src/module/home/ui/view_detail_feature.tsx index 97b0654..be83fa3 100644 --- a/src/module/home/ui/view_detail_feature.tsx +++ b/src/module/home/ui/view_detail_feature.tsx @@ -1,14 +1,13 @@ 'use client' -import { globalRole, LayoutNavbarNew, TEMA, WARNA } from '@/module/_global'; +import { globalRole, LayoutNavbarNew, TEMA } from '@/module/_global'; +import { useHookstate } from '@hookstate/core'; import { ActionIcon, Box, Center, SimpleGrid, Text } from '@mantine/core'; -import React from 'react'; -import { HiMiniUserGroup, HiMiniPresentationChartBar, HiMegaphone, HiSquares2X2, HiChevronLeft, HiUserGroup, HiUsers } from "react-icons/hi2"; -import { PiUsersFourFill } from "react-icons/pi"; +import { useMediaQuery } from '@mantine/hooks'; import { useRouter } from 'next/navigation'; import { FaUserTag, FaUserTie } from 'react-icons/fa6'; -import { useHookstate } from '@hookstate/core'; -import { useMediaQuery } from '@mantine/hooks'; -import { IoColorPalette, IoColorPaletteOutline } from 'react-icons/io5'; +import { HiMegaphone, HiMiniPresentationChartBar, HiMiniUserGroup } from "react-icons/hi2"; +import { IoColorPalette } from 'react-icons/io5'; +import { PiUsersFourFill } from "react-icons/pi"; import { RiLayoutTop2Fill } from "react-icons/ri"; export default function ViewDetailFeature() { @@ -16,6 +15,24 @@ export default function ViewDetailFeature() { const roleLogin = useHookstate(globalRole) const isMobile = useMediaQuery('(max-width: 369px)'); const tema = useHookstate(TEMA) + + async function onKirim() { + try { + const res = await fetch('/api/push-notification', { + method: 'PUT', + }) + + const dataText = await res.text() + if (!res.ok) { + alert(dataText) + throw new Error(dataText) + } + alert("berhasil kirim") + } catch (error) { + console.error(error); + } + } + return ( <> } /> @@ -158,6 +175,24 @@ export default function ViewDetailFeature() { } + {/* DELETE SOON */} + { onKirim() }}> +
+ + + +
+
+ Kirim Notifikasi +
+
+