From 702a303c28d5474c3a817a80c227d96de595a03c Mon Sep 17 00:00:00 2001 From: Hippo Date: Sun, 12 Mar 2023 14:12:42 +0530 Subject: [PATCH] Add helper function to generate unsubscribe links This is so that we can bulk-generate them to add to places like ChipChoc. --- generate-unsubscribe-links.js | 61 +++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 generate-unsubscribe-links.js diff --git a/generate-unsubscribe-links.js b/generate-unsubscribe-links.js new file mode 100644 index 0000000..09f9de3 --- /dev/null +++ b/generate-unsubscribe-links.js @@ -0,0 +1,61 @@ +let { + Pledge, + makeSerialiser, +} = require('./server') + +function generateBackoutLink(email, unsubscribe=true) { + let serialiser = makeSerialiser(email) + + // format "unsubscribe" for serialisation + let staySubscribed + if (unsubscribe) { + staySubscribed = 'no' + } else { + staySubscribed = 'yes' + } + + let verificationLink = `https://fund.snipettemag.com/back-out?email=${encodeURIComponent(email)}&key=${encodeURIComponent(serialiser.dumps(staySubscribed))}` + + return verificationLink +} + +async function generateBackoutLinks(unsubscribe=true) { + + // get list of pledges + let pledges = ( + await Pledge + .forge() + .orderBy('created_at', 'DESC') + .fetchAll() + ).models + + let verificationLinks = [] + + // get the links + pledges.forEach((pledge) => { + verificationLinks.push( + generateBackoutLink(pledge.get('email'), unsubscribe) + ) + }) + + return verificationLinks +} + +if (!module.parent) { + // figure out if we should unsubscribe + let unsubscribe + + if (process.argv[2] == 'yes' || process.argv[2] == 'stay-subscribed') { + console.log('Backing out but staying subscribed') + unsubscribe = false + } else { + console.log('Backing out and unsubscribing') + unsubscribe = true + } + + // get the links and print 'em out + generateBackoutLinks(unsubscribe).then((links) => { + links.forEach(link => console.log(link)) + return + }) +}