From 9a6a4d66df756164893196e5377c904716a72cfc Mon Sep 17 00:00:00 2001 From: amal Date: Tue, 30 Sep 2025 14:40:37 +0800 Subject: [PATCH] upd: notif insert Deskripsi: - mengganti kalimat notifikasi sesuai dengan content yg diinputkan - upd api version No Issues --- src/app/api/announcement/route.ts | 6 +++--- src/app/api/discussion-general/route.ts | 4 ++-- src/app/api/discussion/route.ts | 10 ++++++---- src/app/api/division/route.ts | 8 ++++---- src/app/api/mobile/announcement/route.ts | 8 ++++---- .../discussion-general/[id]/comment/route.ts | 4 +++- src/app/api/mobile/discussion-general/route.ts | 6 +++--- .../mobile/discussion/[id]/comment/route.ts | 4 +++- src/app/api/mobile/discussion/route.ts | 12 +++++++----- src/app/api/mobile/division/route.ts | 10 +++++----- src/app/api/mobile/project/route.ts | 10 +++++----- src/app/api/mobile/task/route.ts | 18 +++++++++--------- src/app/api/project/route.ts | 8 ++++---- src/app/api/task/route.ts | 17 ++++++++--------- src/app/api/version-app/route.ts | 2 +- 15 files changed, 67 insertions(+), 60 deletions(-) diff --git a/src/app/api/announcement/route.ts b/src/app/api/announcement/route.ts index 0c1cdda..0829e49 100644 --- a/src/app/api/announcement/route.ts +++ b/src/app/api/announcement/route.ts @@ -184,7 +184,7 @@ export async function POST(request: Request) { category: 'announcement', idContent: data.id, title: 'Pengumuman Baru', - desc: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' + desc: title })) const dataPush = memberNotif.map((v: any) => ({ @@ -217,7 +217,7 @@ export async function POST(request: Request) { category: 'announcement', idContent: data.id, title: 'Pengumuman Baru', - desc: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' + desc: title }) dataPush.push({ @@ -229,7 +229,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Pengumuman Baru', body: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Pengumuman Baru', body: title } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) diff --git a/src/app/api/discussion-general/route.ts b/src/app/api/discussion-general/route.ts index ae383a6..c3489e0 100644 --- a/src/app/api/discussion-general/route.ts +++ b/src/app/api/discussion-general/route.ts @@ -147,7 +147,7 @@ export async function POST(request: Request) { category: 'discussion', idContent: data.id, title: 'Diskusi Umum Baru', - desc: 'Terdapat diskusi umum baru. Silakan periksa detailnya.' + desc: title })) if (userRoleLogin != "supadmin") { @@ -173,7 +173,7 @@ export async function POST(request: Request) { category: 'discussion', idContent: data.id, title: 'Diskusi Umum Baru', - desc: 'Terdapat diskusi umum baru. Silakan periksa detailnya.' + desc: title }) } diff --git a/src/app/api/discussion/route.ts b/src/app/api/discussion/route.ts index 582163a..cc59f3d 100644 --- a/src/app/api/discussion/route.ts +++ b/src/app/api/discussion/route.ts @@ -146,6 +146,8 @@ export async function POST(request: Request) { } }) + const descNotif = desc.length > 300 ? desc.substring(0, 300) + '...' : desc + // mengirim notifikasi // datanotif untuk realtime notifikasi @@ -157,7 +159,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: descNotif })) const dataPush = memberDivision.map((v: any) => ({ @@ -189,7 +191,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: descNotif }) dataPush.push({ @@ -221,7 +223,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: descNotif }) dataPush.push({ @@ -232,7 +234,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: 'Terdapat diskusi baru. Silakan periksa detailnya.', title: 'Diskusi Baru' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: descNotif, title: 'Diskusi Baru' } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) diff --git a/src/app/api/division/route.ts b/src/app/api/division/route.ts index 672467c..bd6c9d5 100644 --- a/src/app/api/division/route.ts +++ b/src/app/api/division/route.ts @@ -174,7 +174,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` })) const selectUser = await prisma.divisionMember.findMany({ @@ -225,7 +225,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` }) dataPush.push({ @@ -262,7 +262,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` })) const omitPush = atasanGroup.map((v: any) => ({ @@ -279,7 +279,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Divisi Baru', body: 'Terdapat divisi baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Divisi Baru', body: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) diff --git a/src/app/api/mobile/announcement/route.ts b/src/app/api/mobile/announcement/route.ts index 478ae4a..c5b0764 100644 --- a/src/app/api/mobile/announcement/route.ts +++ b/src/app/api/mobile/announcement/route.ts @@ -203,7 +203,7 @@ export async function POST(request: Request) { category: 'announcement', idContent: data.id, title: 'Pengumuman Baru', - desc: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' + desc: title })) @@ -244,7 +244,7 @@ export async function POST(request: Request) { category: 'announcement', idContent: data.id, title: 'Pengumuman Baru', - desc: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' + desc: title }) dataPush.push({ @@ -258,7 +258,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Pengumuman Baru', body: 'Anda memiliki pengumuman baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Pengumuman Baru', body: title } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotifFilter }) @@ -267,7 +267,7 @@ export async function POST(request: Request) { await sendFCMNotificationMany({ token: tokenUnique, title: "Pengumuman Baru", - body: "Anda memiliki pengumuman baru. Silakan periksa detailnya.", + body: title, data: { id: data.id, category: "announcement", content: data.id } }) diff --git a/src/app/api/mobile/discussion-general/[id]/comment/route.ts b/src/app/api/mobile/discussion-general/[id]/comment/route.ts index 0ce9d22..34f78a2 100644 --- a/src/app/api/mobile/discussion-general/[id]/comment/route.ts +++ b/src/app/api/mobile/discussion-general/[id]/comment/route.ts @@ -103,11 +103,13 @@ export async function POST(request: Request, context: { params: { id: string } } tokenDup.push(perbekel?.TokenDeviceUser.map((v: any) => v.token).flat()) } + const commentNotif = data.comment.length > 300 ? data.comment.substring(0, 300) + '...' : data.comment; + const tokenUnique = [...new Set(tokenDup.flat())].filter((v: any) => v != undefined && v != null && v != ""); await sendFCMNotificationMany({ token: tokenUnique, title: "Komentar Baru", - body: `${userSent?.name}: ${data.comment}`, + body: `${userSent?.name}: ${commentNotif}`, data: { id: data.id, category: "discussion-general", content: id } }) diff --git a/src/app/api/mobile/discussion-general/route.ts b/src/app/api/mobile/discussion-general/route.ts index 6fd308c..556a2c4 100644 --- a/src/app/api/mobile/discussion-general/route.ts +++ b/src/app/api/mobile/discussion-general/route.ts @@ -172,7 +172,7 @@ export async function POST(request: Request) { category: 'discussion', idContent: data.id, title: 'Diskusi Umum Baru', - desc: 'Terdapat diskusi umum baru. Silakan periksa detailnya.' + desc: title })) if (userRoleLogin != "supadmin") { @@ -205,7 +205,7 @@ export async function POST(request: Request) { category: 'discussion', idContent: data.id, title: 'Diskusi Umum Baru', - desc: 'Terdapat diskusi umum baru. Silakan periksa detailnya.' + desc: title }) } @@ -219,7 +219,7 @@ export async function POST(request: Request) { await sendFCMNotificationMany({ token: tokenUnique, title: "Diskusi Umum Baru", - body: "Anda memiliki diskusi umum baru. Silakan periksa detailnya.", + body: title, data: { id: data.id, category: "discussion", content: data.id } }) diff --git a/src/app/api/mobile/discussion/[id]/comment/route.ts b/src/app/api/mobile/discussion/[id]/comment/route.ts index 77ddd80..b205fcb 100644 --- a/src/app/api/mobile/discussion/[id]/comment/route.ts +++ b/src/app/api/mobile/discussion/[id]/comment/route.ts @@ -119,11 +119,13 @@ export async function POST(request: Request, context: { params: { id: string } } tokenDup.push(perbekel?.TokenDeviceUser.map((v: any) => v.token).flat()) } + const commentNotif = comment.length > 300 ? comment.substring(0, 300) + '...' : comment; + const tokenUnique = [...new Set(tokenDup.flat())].filter((v: any) => v != undefined && v != null && v != ""); await sendFCMNotificationMany({ token: tokenUnique, title: "Komentar Baru", - body: `${userSent?.name}: ${comment}`, + body: `${userSent?.name}: ${commentNotif}`, data: { id: data.id, category: `division/${dataDivision?.idDivision}/discussion`, content: id } }) diff --git a/src/app/api/mobile/discussion/route.ts b/src/app/api/mobile/discussion/route.ts index 0553ab4..38c2176 100644 --- a/src/app/api/mobile/discussion/route.ts +++ b/src/app/api/mobile/discussion/route.ts @@ -155,6 +155,8 @@ export async function POST(request: Request) { } }) + const deskripsiNotif = desc.length > 300 ? desc.substring(0, 300) + '...' : desc; + // mengirim notifikasi // dataFCM untuk push notifikasi mobile @@ -173,7 +175,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: deskripsiNotif })) const dataPush = memberDivision.map((v: any) => ({ @@ -212,7 +214,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: deskripsiNotif }) dataPush.push({ @@ -251,7 +253,7 @@ export async function POST(request: Request) { category: 'division/' + idDivision + '/discussion', idContent: data.id, title: 'Diskusi Baru', - desc: 'Terdapat diskusi baru. Silakan periksa detailnya.' + desc: deskripsiNotif }) dataPush.push({ @@ -264,7 +266,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: 'Terdapat diskusi baru. Silakan periksa detailnya.', title: 'Diskusi Baru' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: deskripsiNotif, title: 'Diskusi Baru' } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotifFilter }) @@ -274,7 +276,7 @@ export async function POST(request: Request) { await sendFCMNotificationMany({ token: tokenUnique, title: "Diskusi Baru", - body: "Anda memiliki diskusi baru. Silakan periksa detailnya.", + body: deskripsiNotif, data: { id: data.id, category: "division/" + idDivision + "/discussion", content: data.id } }) diff --git a/src/app/api/mobile/division/route.ts b/src/app/api/mobile/division/route.ts index 8f79bde..4a8638d 100644 --- a/src/app/api/mobile/division/route.ts +++ b/src/app/api/mobile/division/route.ts @@ -183,7 +183,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` })) const selectUser = await prisma.divisionMember.findMany({ @@ -252,7 +252,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` }) dataPush.push({ @@ -299,7 +299,7 @@ export async function POST(request: Request) { category: 'division', idContent: data.id, title: 'Divisi Baru', - desc: 'Terdapat divisi baru. Silakan periksa detailnya.' + desc: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` })) const omitPush = atasanGroup.map((v: any) => ({ @@ -317,7 +317,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Divisi Baru', body: 'Terdapat divisi baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Divisi Baru', body: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.` } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotifFilter }) @@ -326,7 +326,7 @@ export async function POST(request: Request) { await sendFCMNotificationMany({ token: tokenUnique, title: "Divisi Baru", - body: "Anda memiliki divisi baru. Silakan periksa detailnya.", + body: `Divisi ${sent.data.name} telah dibuat. Silakan periksa detailnya.`, data: { id: data.id, category: "division", content: data.id } }) diff --git a/src/app/api/mobile/project/route.ts b/src/app/api/mobile/project/route.ts index 252b743..d0ed52f 100644 --- a/src/app/api/mobile/project/route.ts +++ b/src/app/api/mobile/project/route.ts @@ -284,7 +284,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title })) const dataPush = memberNotif.map((v: any) => ({ @@ -323,7 +323,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title }) dataPush.push({ @@ -370,7 +370,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title })) const omitPush = atasanGroup.map((v: any) => ({ @@ -387,7 +387,7 @@ export async function POST(request: Request) { const dataNotifFilter = dataNotif.filter((item) => item.idUserTo != undefined && item.idUserTo != null && item.idUserTo != "" && item.idUserTo != userId) const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Kegiatan Baru', body: 'Terdapat kegiatan baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Kegiatan Baru', body: title } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotifFilter }) @@ -396,7 +396,7 @@ export async function POST(request: Request) { await sendFCMNotificationMany({ token: tokenUnique, title: "Kegiatan Baru", - body: "Anda memiliki kegiatan baru. Silakan periksa detailnya.", + body: title, data: { id: data.id, category: "project", content: data.id } }) diff --git a/src/app/api/mobile/task/route.ts b/src/app/api/mobile/task/route.ts index 7b8bde7..5d36a81 100644 --- a/src/app/api/mobile/task/route.ts +++ b/src/app/api/mobile/task/route.ts @@ -267,8 +267,8 @@ export async function POST(request: Request) { idUserFrom: String(userMobile.id), category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title })) const dataPush = memberDivision.map((v: any) => ({ @@ -306,8 +306,8 @@ export async function POST(request: Request) { idUserFrom: userId, category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title }) dataPush.push({ @@ -345,8 +345,8 @@ export async function POST(request: Request) { idUserFrom: userId, category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title }) dataPush.push({ @@ -358,7 +358,7 @@ export async function POST(request: Request) { const dataNotifFilter = dataNotif.filter((v: any) => v.idUserTo != undefined && v.idUserTo != null && v.idUserTo != "" && v.idUserTo != userId) const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: 'Terdapat tugas baru. Silakan periksa detailnya.', title: 'Tugas Baru' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: title, title: 'Tugas Divisi Baru' } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotifFilter }) @@ -366,8 +366,8 @@ export async function POST(request: Request) { const tokenUnique = [...new Set(tokenDup.flat())].filter((v: any) => v != undefined && v != null && v != ""); await sendFCMNotificationMany({ token: tokenUnique, - title: "Tugas Baru", - body: "Anda memiliki tugas baru. Silakan periksa detailnya.", + title: "Tugas Divisi Baru", + body: title, data: { id: data.id, category: 'division/' + idDivision + '/task', content: data.id } }) diff --git a/src/app/api/project/route.ts b/src/app/api/project/route.ts index 598d11a..2f05c5a 100644 --- a/src/app/api/project/route.ts +++ b/src/app/api/project/route.ts @@ -262,7 +262,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title })) const dataPush = memberNotif.map((v: any) => ({ @@ -294,7 +294,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title }) dataPush.push({ @@ -330,7 +330,7 @@ export async function POST(request: Request) { category: 'project', idContent: data.id, title: 'Kegiatan Baru', - desc: 'Terdapat kegiatan baru. Silakan periksa detailnya.' + desc: title })) const omitPush = atasanGroup.map((v: any) => ({ @@ -346,7 +346,7 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Kegiatan Baru', body: 'Terdapat kegiatan baru. Silakan periksa detailnya.' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { title: 'Kegiatan Baru', body: title } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) diff --git a/src/app/api/task/route.ts b/src/app/api/task/route.ts index ba2d4f3..ba4d224 100644 --- a/src/app/api/task/route.ts +++ b/src/app/api/task/route.ts @@ -253,8 +253,8 @@ export async function POST(request: Request) { idUserFrom: String(user.id), category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title })) const dataPush = memberDivision.map((v: any) => ({ @@ -285,8 +285,8 @@ export async function POST(request: Request) { idUserFrom: userId, category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title }) dataPush.push({ @@ -317,8 +317,8 @@ export async function POST(request: Request) { idUserFrom: userId, category: 'division/' + idDivision + '/task', idContent: data.id, - title: 'Tugas Baru', - desc: 'Terdapat tugas baru. Silakan periksa detailnya.' + title: 'Tugas Divisi Baru', + desc: title }) dataPush.push({ @@ -329,13 +329,12 @@ export async function POST(request: Request) { const pushNotif = dataPush.filter((item) => item.subscription != undefined) - const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: 'Terdapat tugas baru. Silakan periksa detailnya.', title: 'Tugas Baru' } }) + const sendWebPush = await funSendWebPush({ sub: pushNotif, message: { body: title, title: 'Tugas Divisi Baru' } }) const insertNotif = await prisma.notifications.createMany({ data: dataNotif }) - - // create log user + // create log userc const log = await createLogUser({ act: 'CREATE', desc: 'User membuat tugas divisi baru', table: 'divisionProject', data: data.id }) diff --git a/src/app/api/version-app/route.ts b/src/app/api/version-app/route.ts index 33baf80..eca496f 100644 --- a/src/app/api/version-app/route.ts +++ b/src/app/api/version-app/route.ts @@ -2,7 +2,7 @@ import { NextResponse } from "next/server"; export async function GET(request: Request) { try { - return NextResponse.json({ success: true, version: "2.0.3", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 }); + return NextResponse.json({ success: true, version: "2.0.4", tahap: "beta", update: "-api mobile; -login tanpa otp (mobile app); -tambah laporan pada project dan tugas divisi; -tambah upload link pada project dan tugas divisi; -tambah detail tanggal dan jam pada project dan tugas divisi; -api jenna ai; -privacy policy" }, { status: 200 }); } catch (error) { console.error(error); return NextResponse.json({ success: false, version: "Gagal mendapatkan version, coba lagi nanti (error: 500)", reason: (error as Error).message, }, { status: 500 });