feat(unsubscribe): RFC 8058 one-click unsubscribe on feed deletion
Capture each sender's List-Unsubscribe one-click URL during ingestion (stored per sender in feed metadata, mirroring the iconDomain pattern) and fire one-click POSTs via ctx.waitUntil when a feed is deleted, so newsletters stop mailing the now-dead address. Tracked with a new unsubscribes_sent counter surfaced on the status page and /api/stats. Co-Authored-By: Claude Opus 4.7 <[email protected]>
This commit is contained in:
1 parent
eb12f21894
commit
3ad0188bc0
14 files changed
+558
-4
No files matched your search
@@ -8,6 +8,7 @@ const EMPTY_COUNTERS: Counters = {
|
||||
feeds_deleted: 0,
|
||||
emails_received: 0,
|
||||
emails_rejected: 0,
|
||||
unsubscribes_sent: 0,
|
||||
};
|
||||
|
||||
export async function getCounters(kv: KVNamespace): Promise<Counters> {
|
||||
@@ -39,6 +40,7 @@ export async function bumpCounters(
|
||||
current.feeds_deleted += changes.feeds_deleted ?? 0;
|
||||
current.emails_received += changes.emails_received ?? 0;
|
||||
current.emails_rejected += changes.emails_rejected ?? 0;
|
||||
current.unsubscribes_sent += changes.unsubscribes_sent ?? 0;
|
||||
if (changes.last_email_at) current.last_email_at = changes.last_email_at;
|
||||
if (changes.last_feed_created_at)
|
||||
current.last_feed_created_at = changes.last_feed_created_at;
|
||||
|
||||
Reference in new issue
Block a user