import { jsonError } from "../../../common.js"; import sendEmail from "../../../email.js"; import { sendPushNotification } from "../../../gcloud.js"; export async function onRequestPost(context: RequestContext) { const { appeal, fcm_token } = context.data; if (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" }`, fcm_token, ); await context.env.D1.prepare( "DELETE FROM push_notifications WHERE event_id = ? AND event_type = 'appeal';", ) .bind(appeal.id) .run(); } 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.", }, ); 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, user = json_remove(user, '$.email') WHERE id = ?;", ) .bind(context.params.id) .run(); const { current_user: currentUser } = context.data; await fetch(context.env.APPEALS_WEBHOOK, { body: JSON.stringify({ embeds: [ { title: "Appeal Denied", color: 0xff0000, description: `Appeal from user ${appeal.user.username} (${appeal.user.id}) was denied.`, fields: [ { name: "Moderator", value: `${currentUser.username} (${currentUser.id})`, }, ], }, ], }), headers: { "content-type": "application/json", }, method: "POST", }); return new Response(null, { status: 204, }); }