mirror of
https://github.com/lukevella/rallly.git
synced 2025-07-23 03:07:25 +02:00
✨ Support locale in message queue (#1447)
This commit is contained in:
parent
a452e5b764
commit
7c5f4e3692
4 changed files with 31 additions and 24 deletions
|
@ -1,22 +1,18 @@
|
|||
import * as Sentry from "@sentry/nextjs";
|
||||
import { verifySignatureAppRouter } from "@upstash/qstash/nextjs";
|
||||
import type { NextRequest } from "next/server";
|
||||
import { NextResponse } from "next/server";
|
||||
|
||||
import { getEmailClient } from "@/utils/emails";
|
||||
|
||||
const emailClient = getEmailClient();
|
||||
import { verifySignature } from "./verify-signature";
|
||||
|
||||
export const POST = async (req: NextRequest) => {
|
||||
/**
|
||||
* We need to call verifySignatureAppRouter inside the route handler
|
||||
* to avoid the build breaking when env vars are not set.
|
||||
*/
|
||||
return verifySignatureAppRouter(async (req: NextRequest) => {
|
||||
export const POST = verifySignature(async (req: NextRequest) => {
|
||||
const body = await req.json();
|
||||
|
||||
// TODO: Add validation for templateName and options
|
||||
|
||||
const emailClient = getEmailClient(body.locale);
|
||||
|
||||
try {
|
||||
await emailClient.sendTemplate(body.templateName, body.options);
|
||||
|
||||
|
@ -29,5 +25,4 @@ export const POST = async (req: NextRequest) => {
|
|||
{ status: 500 },
|
||||
);
|
||||
}
|
||||
})(req);
|
||||
};
|
||||
});
|
||||
|
|
12
apps/web/src/app/api/send-email/verify-signature.ts
Normal file
12
apps/web/src/app/api/send-email/verify-signature.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { verifySignatureAppRouter } from "@upstash/qstash/dist/nextjs";
|
||||
import type { NextRequest } from "next/server";
|
||||
|
||||
export async function verifySignature(
|
||||
handler: (req: NextRequest) => Promise<Response>,
|
||||
) {
|
||||
/**
|
||||
* We need to call verifySignatureAppRouter inside the route handler
|
||||
* to avoid the build breaking when env vars are not set.
|
||||
*/
|
||||
return (req: NextRequest) => verifySignatureAppRouter(handler)(req);
|
||||
}
|
|
@ -5,5 +5,5 @@ export function createQstashClient() {
|
|||
return null;
|
||||
}
|
||||
|
||||
return new Client({ token: process.env.QSTASH_TOKEN! });
|
||||
return new Client({ token: process.env.QSTASH_TOKEN });
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ export class EmailClient {
|
|||
queue
|
||||
.enqueueJSON({
|
||||
url: absoluteUrl("/api/send-email"),
|
||||
body: { templateName, options },
|
||||
body: { locale: this.config.locale, templateName, options },
|
||||
})
|
||||
.catch(() => {
|
||||
Sentry.captureException(new Error("Failed to queue email"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue