Watchers: double opt-in
redoal_watchers starts pending; /watching (the confirmation mail's landing page) confirms to open or drops. Only open watchers are told. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
865c426266
commit
dcbeda34b7
+7
-2
@@ -14,10 +14,15 @@ aggregates:
|
|||||||
unsubscribed: { event: unsubscribed }
|
unsubscribed: { event: unsubscribed }
|
||||||
transitions:
|
transitions:
|
||||||
open: [unsubscribed]
|
open: [unsubscribed]
|
||||||
|
# Double opt-in: a watcher is pending until the address confirms from
|
||||||
|
# the mail n8n sends (redoal: confirm watching); only open watchers
|
||||||
|
# are told when something lands at their shape.
|
||||||
- bucket: redoal_watchers
|
- bucket: redoal_watchers
|
||||||
initial: open
|
initial: pending
|
||||||
states:
|
states:
|
||||||
open: { event: subscribed }
|
pending: { event: requested }
|
||||||
|
open: { event: confirmed }
|
||||||
unsubscribed: { event: unsubscribed }
|
unsubscribed: { event: unsubscribed }
|
||||||
transitions:
|
transitions:
|
||||||
|
pending: [open, unsubscribed]
|
||||||
open: [unsubscribed]
|
open: [unsubscribed]
|
||||||
|
|||||||
@@ -68,7 +68,14 @@ alternatives:
|
|||||||
bucket: redoal_watchers
|
bucket: redoal_watchers
|
||||||
requires_group: owners
|
requires_group: owners
|
||||||
transitions:
|
transitions:
|
||||||
- to: unsubscribed
|
- from: pending
|
||||||
|
to: open
|
||||||
|
label: Confirm by hand
|
||||||
|
- from: pending
|
||||||
|
to: unsubscribed
|
||||||
|
label: Drop
|
||||||
|
- from: open
|
||||||
|
to: unsubscribed
|
||||||
label: Unsubscribe
|
label: Unsubscribe
|
||||||
|
|
||||||
- name: Announced pages
|
- name: Announced pages
|
||||||
|
|||||||
@@ -68,7 +68,9 @@ alternatives:
|
|||||||
- name: Where the note goes
|
- name: Where the note goes
|
||||||
description: >
|
description: >
|
||||||
The note is about one exact address, so it needs one exact
|
The note is about one exact address, so it needs one exact
|
||||||
place to land.
|
place to land. One mail comes first, asking you to confirm —
|
||||||
|
nothing is sent before you do, and at most one note a day
|
||||||
|
after.
|
||||||
icon: lucide:mail
|
icon: lucide:mail
|
||||||
requirements:
|
requirements:
|
||||||
- name: email
|
- name: email
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Landing page of the confirmation mail: /watching?chain=<record>&email=<address>.
|
||||||
|
# A followup - never in the nav; the record id in the link is the only
|
||||||
|
# way here, and it plus the matching email is what authorizes the
|
||||||
|
# transition (portal's self_transition).
|
||||||
|
followup: true
|
||||||
|
name: Are you watching this address?
|
||||||
|
description: >
|
||||||
|
Someone asked to hear from a shape on redoal with your address. Say
|
||||||
|
yes and you get one note when something is left there — nothing
|
||||||
|
else, ever. Say it wasn't you and the request is dropped.
|
||||||
|
alternatives:
|
||||||
|
- name: Yes, watch it
|
||||||
|
description: >
|
||||||
|
One note per day at most, only when a recording or a program
|
||||||
|
lands at exactly this shape.
|
||||||
|
self_transition:
|
||||||
|
bucket: redoal_watchers
|
||||||
|
to: open
|
||||||
|
label: Yes, watch it
|
||||||
|
|
||||||
|
- name: That wasn't me
|
||||||
|
description: >
|
||||||
|
The request is dropped and the address stays unused.
|
||||||
|
self_transition:
|
||||||
|
bucket: redoal_watchers
|
||||||
|
to: unsubscribed
|
||||||
|
label: Drop it
|
||||||
Reference in New Issue
Block a user