From 9d753e3c0e8b1182edf9f03523ebdc86244af517 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Wed, 2 Nov 2022 15:27:30 +0800 Subject: [PATCH] Forward convertkit confirmation email --- .../src/newsletters/convertkit-handler.ts | 18 +- .../test/data/convertkit-confirmation.html | 268 ++++++++++++++++++ .../content-handler/test/newsletter.test.ts | 11 + 3 files changed, 293 insertions(+), 4 deletions(-) create mode 100644 packages/content-handler/test/data/convertkit-confirmation.html diff --git a/packages/content-handler/src/newsletters/convertkit-handler.ts b/packages/content-handler/src/newsletters/convertkit-handler.ts index 15aebae26..cf0b818b5 100644 --- a/packages/content-handler/src/newsletters/convertkit-handler.ts +++ b/packages/content-handler/src/newsletters/convertkit-handler.ts @@ -27,11 +27,21 @@ export class ConvertkitHandler extends ContentHandler { dom: Document }): Promise { const dom = input.dom - return Promise.resolve( - dom.querySelectorAll( - 'img[src*="convertkit.com"], img[src*="convertkit-mail"]' - ).length > 0 + const icons = dom.querySelectorAll( + 'img[src*="convertkit.com"], img[src*="convertkit-mail"]' ) + if (icons.length === 0) { + return Promise.resolve(false) + } + // ignore newsletters that have a confirmation link to the newsletter in the body + const links = dom.querySelectorAll( + 'a[href*="convertkit.com"], a[href*="convertkit-mail"]' + ) + const isConfirmation = Array.from(links).some((e) => { + return e.textContent === 'Confirm your subscription' + }) + + return Promise.resolve(!isConfirmation) } async parseNewsletterUrl( diff --git a/packages/content-handler/test/data/convertkit-confirmation.html b/packages/content-handler/test/data/convertkit-confirmation.html new file mode 100644 index 000000000..99218b36d --- /dev/null +++ b/packages/content-handler/test/data/convertkit-confirmation.html @@ -0,0 +1,268 @@ + + + + + + + +
+ + + + + + + + +
+ + + + diff --git a/packages/content-handler/test/newsletter.test.ts b/packages/content-handler/test/newsletter.test.ts index 481abd982..9d859a1dd 100644 --- a/packages/content-handler/test/newsletter.test.ts +++ b/packages/content-handler/test/newsletter.test.ts @@ -246,6 +246,17 @@ describe('Newsletter email test', () => { }) expect(handler).to.be.instanceOf(ConvertkitHandler) }) + + it('returns undefined for convertkit confirmation email', async () => { + const html = load('./test/data/convertkit-confirmation.html') + const handler = await getNewsletterHandler({ + html, + postHeader: '', + from: '', + unSubHeader: '', + }) + expect(handler).to.be.undefined + }) }) describe('findNewsletterUrl', async () => {