feat(cloud): email unsubscribe (#258)

* feat(cloud): add email unsubscribe

* chore: add translations
This commit is contained in:
Henry
2025-11-27 21:44:51 +00:00
committed by GitHub
parent 56e4c43cfa
commit c5d85cdb2d
27 changed files with 769 additions and 653 deletions

View File

@@ -18,6 +18,7 @@ import * as userRepo from "@kan/db/repository/user.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import * as schema from "@kan/db/schema";
import { notificationClient, sendEmail } from "@kan/email";
import { createEmailUnsubscribeLink } from "@kan/shared";
import { createStripeClient } from "@kan/stripe";
export const configuredProviders = socialProviderList.reduce<
@@ -401,6 +402,10 @@ export const initAuth = (db: dbClient) => {
? `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${avatarKey}`
: undefined;
const unsubscribeUrl = await createEmailUnsubscribeLink(
user.id,
);
await notificationClient.trigger({
to: {
subscriberId: user.id,
@@ -415,6 +420,9 @@ export const initAuth = (db: dbClient) => {
updatedAt: user.updatedAt,
},
},
payload: {
emailUnsubscribeUrl: unsubscribeUrl,
},
workflowId: "user-signup",
});
@@ -489,6 +497,8 @@ async function triggerWorkflow(
if (!user || !notificationClient) return;
const unsubscribeUrl = await createEmailUnsubscribeLink(user.id);
await notificationClient.trigger({
to: {
subscriberId: user.id,
@@ -496,6 +506,7 @@ async function triggerWorkflow(
payload: {
...subscription,
cancellationDetails,
emailUnsubscribeUrl: unsubscribeUrl,
},
workflowId,
});