From 161862712c01649d74c61c194cd5feaa4bd615c3 Mon Sep 17 00:00:00 2001 From: regalijan Date: Thu, 19 Oct 2023 16:51:16 -0400 Subject: [PATCH] Send push notifs on appeal action --- functions/api/appeals/[id]/accept.ts | 39 +++++++++++++++++--------- functions/api/appeals/[id]/deny.ts | 41 ++++++++++++++++++---------- 2 files changed, 53 insertions(+), 27 deletions(-) diff --git a/functions/api/appeals/[id]/accept.ts b/functions/api/appeals/[id]/accept.ts index a1553fa..2c5a53b 100644 --- a/functions/api/appeals/[id]/accept.ts +++ b/functions/api/appeals/[id]/accept.ts @@ -1,26 +1,39 @@ import { jsonError } from "../../../common.js"; import sendEmail from "../../../email.js"; +import { sendPushNotification } from "../../../gcloud.js"; export async function onRequestPost(context: RequestContext) { const { appeal } = context.data; - const emailResponse = await sendEmail( - appeal.user.email, - context.env.MAILGUN_API_KEY, - "Appeal Accepted", - "appeal_accepted", - { - note: context.data.body.feedback || "No note provided.", - }, - ); - if (!emailResponse.ok) { - console.log(await emailResponse.json()); - return jsonError("Failed to accept appeal", 500); + if (appeal.fcm_token) { + await sendPushNotification( + context.env, + "Appeal Accepted", + context.data.body.feedback || "No additional details to display", + appeal.fcm_token, + ); + } else { + const emailResponse = await sendEmail( + appeal.user.email, + context.env.MAILGUN_API_KEY, + "Appeal Accepted", + "appeal_accepted", + { + note: context.data.body.feedback || "No note provided.", + }, + ); + + if (!emailResponse.ok) { + console.log(await emailResponse.json()); + return jsonError("Failed to accept appeal", 500); + } } const { current_user: currentUser } = context.data; - await context.env.D1.prepare("UPDATE appeals SET approved = 1, open = 0 WHERE id = ?;") + await context.env.D1.prepare( + "UPDATE appeals SET approved = 1, open = 0 WHERE id = ?;", + ) .bind(context.params.id) .run(); diff --git a/functions/api/appeals/[id]/deny.ts b/functions/api/appeals/[id]/deny.ts index 8dd7312..71b99cb 100644 --- a/functions/api/appeals/[id]/deny.ts +++ b/functions/api/appeals/[id]/deny.ts @@ -1,25 +1,38 @@ import { jsonError } from "../../../common.js"; import sendEmail from "../../../email.js"; +import { sendPushNotification } from "../../../gcloud.js"; export async function onRequestPost(context: RequestContext) { const { appeal } = context.data; + if (appeal.fcm_token) { + await sendPushNotification( + context.env, + "Appeal Denied", + `Unfortunately, we have decided to deny your appeal for the following reason: ${ + context.data.body.feedback || "No additional details" + }`, + appeal.fcm_token, + ); + } else { + const emailResponse = await sendEmail( + appeal.user.email, + context.env.MAILGUN_API_KEY, + "Appeal Denied", + "appeal_denied", + { + note: context.data.body.feedback || "No note provided.", + }, + ); - const emailResponse = await sendEmail( - appeal.user.email, - context.env.MAILGUN_API_KEY, - "Appeal Denied", - "appeal_denied", - { - note: context.data.body.feedback || "No note provided.", - }, - ); - - if (!emailResponse.ok) { - console.log(await emailResponse.json()); - return jsonError("Failed to deny appeal", 500); + if (!emailResponse.ok) { + console.log(await emailResponse.json()); + return jsonError("Failed to deny appeal", 500); + } } - await context.env.D1.prepare("UPDATE appeals SET approved = 0, open = 0 WHERE id = ?;") + await context.env.D1.prepare( + "UPDATE appeals SET approved = 0, open = 0 WHERE id = ?;", + ) .bind(context.params.id) .run();