diff --git a/packages/api/src/routers/svc/emails.ts b/packages/api/src/routers/svc/emails.ts index e8ccc8c05..95f6d12bf 100644 --- a/packages/api/src/routers/svc/emails.ts +++ b/packages/api/src/routers/svc/emails.ts @@ -28,6 +28,7 @@ interface ForwardEmailMessage { unsubHttpUrl?: string text?: string forwardedFrom?: string + icon?: string } const logger = buildLogger('app.dispatch') @@ -92,6 +93,7 @@ export function emailsServiceRouter() { unsubMailTo: data.unsubMailTo, unsubHttpUrl: data.unsubHttpUrl, newsletterEmail, + icon: data.icon, }, ctx ) diff --git a/packages/api/src/services/save_newsletter_email.ts b/packages/api/src/services/save_newsletter_email.ts index ecf5177dd..cad5c8a66 100644 --- a/packages/api/src/services/save_newsletter_email.ts +++ b/packages/api/src/services/save_newsletter_email.ts @@ -22,6 +22,7 @@ interface NewsletterMessage { unsubMailTo?: string unsubHttpUrl?: string newsletterEmail?: NewsletterEmail + icon?: string } // Returns true if the link was created successfully. Can still fail to @@ -71,14 +72,15 @@ export const saveNewsletterEmail = async ( } // creates or updates subscription - const subscription = await saveSubscription( - newsletterEmail.user.id, - data.author, - newsletterEmail.address, - data.unsubMailTo, - data.unsubHttpUrl - ) - console.log('subscription', subscription) + const subscription = await saveSubscription({ + userId: newsletterEmail.user.id, + name: data.author, + newsletterEmail: newsletterEmail.address, + unsubscribeMailTo: data.unsubMailTo, + unsubscribeHttpUrl: data.unsubHttpUrl, + icon: data.icon, + }) + console.log('subscription saved', subscription) // adds newsletters label to page const result = await addLabelToPage(saveCtx, page.id, { diff --git a/packages/api/src/services/subscriptions.ts b/packages/api/src/services/subscriptions.ts index f0d7997ac..7ac233e83 100644 --- a/packages/api/src/services/subscriptions.ts +++ b/packages/api/src/services/subscriptions.ts @@ -6,6 +6,15 @@ import axios from 'axios' import { NewsletterEmail } from '../entity/newsletter_email' import { createNewsletterEmail } from './newsletters' +interface SaveSubscriptionInput { + userId: string + name: string + newsletterEmail: string + unsubscribeMailTo?: string + unsubscribeHttpUrl?: string + icon?: string +} + const sendUnsubscribeEmail = async ( unsubscribeMailTo: string, newsletterEmail: string @@ -30,13 +39,14 @@ const sendUnsubscribeHttpRequest = async (url: string): Promise => { } } -export const saveSubscription = async ( - userId: string, - name: string, - newsletterEmail: string, - unsubscribeMailTo?: string, - unsubscribeHttpUrl?: string -): Promise => { +export const saveSubscription = async ({ + userId, + name, + newsletterEmail, + unsubscribeMailTo, + unsubscribeHttpUrl, + icon, +}: SaveSubscriptionInput): Promise => { const subscription = await getRepository(Subscription).findOneBy({ name, user: { id: userId }, @@ -46,6 +56,7 @@ export const saveSubscription = async ( // if subscription already exists, updates updatedAt subscription.status = SubscriptionStatus.Active subscription.newsletterEmail = newsletterEmail + icon && (subscription.icon = icon) unsubscribeMailTo && (subscription.unsubscribeMailTo = unsubscribeMailTo) unsubscribeHttpUrl && (subscription.unsubscribeHttpUrl = unsubscribeHttpUrl) return getRepository(Subscription).save(subscription) @@ -59,6 +70,7 @@ export const saveSubscription = async ( status: SubscriptionStatus.Active, unsubscribeHttpUrl, unsubscribeMailTo, + icon, }) }