feat(cloud): sync subscriber preferences on unsubscribe
This commit is contained in:
@@ -158,6 +158,7 @@ export function createDatabaseHooks(db: dbClient) {
|
||||
|
||||
try {
|
||||
await createSubscriber({
|
||||
publicId: user.id,
|
||||
email: user.email,
|
||||
externalId: user.id,
|
||||
firstName,
|
||||
|
||||
@@ -2,4 +2,7 @@ export const name = "email";
|
||||
|
||||
export { sendEmail } from "./sendEmail";
|
||||
export { notificationClient } from "./notificationClient";
|
||||
export { createSubscriber } from "./subscriberClient";
|
||||
export {
|
||||
createSubscriber,
|
||||
updateSubscriberPreferences,
|
||||
} from "./subscriberClient";
|
||||
|
||||
@@ -15,6 +15,7 @@ export const subscriberClient =
|
||||
: null;
|
||||
|
||||
interface CreateSubscriberInput {
|
||||
publicId: string;
|
||||
email: string;
|
||||
externalId: string;
|
||||
firstName?: string;
|
||||
@@ -51,3 +52,40 @@ export async function createSubscriber(input: CreateSubscriberInput) {
|
||||
log.error({ err: error }, "Error creating subscriber.dev subscriber");
|
||||
}
|
||||
}
|
||||
|
||||
interface UpdateSubscriberPreferencesInput {
|
||||
email: boolean;
|
||||
}
|
||||
|
||||
export async function updateSubscriberPreferences(
|
||||
subscriberId: string,
|
||||
input: UpdateSubscriberPreferencesInput,
|
||||
) {
|
||||
if (!subscriberClient) return;
|
||||
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${subscriberClient.apiUrl}/environments/${subscriberClient.environmentId}/subscribers/${subscriberId}/preferences`,
|
||||
{
|
||||
method: "PATCH",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-API-Key": subscriberClient.apiKey,
|
||||
},
|
||||
body: JSON.stringify(input),
|
||||
},
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
log.error(
|
||||
{
|
||||
status: response.status,
|
||||
body: await response.text().catch(() => undefined),
|
||||
},
|
||||
"Failed to update subscriber preferences",
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
log.error({ err: error }, "Error updating subscriber.dev preferences");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user