Penerapan notifikasi pada event
Fix: - src/app/api/mobile/admin/event/[id]/route.ts - src/app/api/mobile/admin/job/[id]/route.ts - src/app/api/mobile/event/route.ts - src/app/api/mobile/job/route.ts - src/app/api/mobile/notification/[id]/route.ts - src/lib/mobile/notification/send-notification.ts - src/lib/mobile/route-page-mobile.ts - types/type-mobile-notification.ts ### No Issue
This commit is contained in:
@@ -43,7 +43,7 @@ export async function sendNotificationMobileToOneUser({
|
||||
|
||||
// 2. Ambil semua token aktif milik penerima
|
||||
const tokens = await prisma.tokenUserDevice.findMany({
|
||||
where: { userId: recipientId, isActive: true },
|
||||
where: { userId: recipientId },
|
||||
select: { token: true, id: true },
|
||||
});
|
||||
|
||||
@@ -53,7 +53,6 @@ export async function sendNotificationMobileToOneUser({
|
||||
}
|
||||
|
||||
// 3. Kirim FCM ke semua token
|
||||
|
||||
await Promise.allSettled(
|
||||
tokens.map(async ({ token, id }) => {
|
||||
try {
|
||||
@@ -80,12 +79,11 @@ export async function sendNotificationMobileToOneUser({
|
||||
});
|
||||
} catch (fcmError: any) {
|
||||
// Hapus token jika invalid
|
||||
console.log("fcmError", fcmError);
|
||||
if (fcmError.code === "messaging/invalid-registration-token") {
|
||||
await prisma.tokenUserDevice.delete({ where: { id: id } });
|
||||
console.log(`❌ Invalid token removed: ${token}`);
|
||||
if (fcmError.code === "messaging/registration-token-not-registered") {
|
||||
// Hapus token dari DB
|
||||
await prisma.tokenUserDevice.delete({ where: { id } });
|
||||
console.log(`🗑️ Invalid token removed: ${id}`);
|
||||
}
|
||||
console.error(`FCM failed for token ${token}:`, fcmError.message);
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
@@ -9,12 +9,21 @@ const routeAdminMobile = {
|
||||
`/admin/job/${id}/${status}`,
|
||||
jobByStatus: ({ status }: { status: StatusApp }) =>
|
||||
`/admin/job/${status}/status`,
|
||||
|
||||
// EVENT
|
||||
eventByStatus: ({ status }: { status: StatusApp }) =>
|
||||
`/admin/event/${status}/status`,
|
||||
};
|
||||
|
||||
const routeUserMobile = {
|
||||
home: `/(user)/home`,
|
||||
// JOB
|
||||
jobDetailPublised: ({ id }: { id: string }) => `/job/${id}`,
|
||||
jobByStatus: ({ status }: { status?: StatusApp }) =>
|
||||
`/job/(tabs)/status?status=${status}`,
|
||||
jobDetailPublised: ({ id }: { id: string }) => `/job/${id}`,
|
||||
|
||||
// EVENT
|
||||
eventByStatus: ({ status }: { status?: StatusApp }) =>
|
||||
`/event/(tabs)/status?status=${status}`,
|
||||
eventDetailPublised: ({ id }: { id: string }) => `/event/${id}/publish`,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user