disappearing messages
Value
- As a signal user adopting signalboost, I expect disappearing messages to "just work"
- Because they do on signal
- (So that i can have some level of assurance that sensitive messages are likely to disappear more often than they are to be retained because someone who wants to retain them must take a screenshot, which is more work.)
Behavior
[ ] Setting default expiry for new users
GIVEN a maintainer has just created a channel
- THEN the first admin will receive a welcome message with the disappearing message timer set to 1 week
GIVEN a user has just subscribed to a channel
- THEN they will receive a welcome message with the disappearing message timer set to 1 week
[x] Changing expiry time
GIVEN a channel with disappearing messages set to 1 week
- WHEN an admin sets the disappearing message timer to 6 hours (in her conversation with the channel)
- THEN the disappearing message timer will be set to 6 hours for all admins and all subscribers (on their own conversations with the channel)
[x] Enforcing expiry time
GIVEN a channel with disappearing messages set to 1 hour
- WHEN a subscriber sets the disappearing message timer to off (or any other value other than 1 hour)
- THEN the channel changes the disappearing messages timer back to 1 hour
- AND THEN the channel sends a message that says
Sorry, only admins are allowed to set the disappearing message timer on this channel.
Implementaiton Notes
- all solutions will involve:
- adding an
expiryTime
field (with valid enum values) to thechannels
table - sending a signald message of type
set_expiration
from the channel number to every member of the channel to set and enforce the admin-proscribed expiry time - working around upstream issues blocking correct functioning of that message. see https://gitlab.com/thefinn93/signald/issues/10 and ask @aguestuser about how updating will require adapting to breaking changes to the safety number changing API utilized in #100 (closed)
- adding an
- Option 1 for triggering expiry time updates will involve:
- inspecting the
expiryTime
field on incoming signald messages from admins and looking for values that do not match the storedexpirtyTime
(normal expiry time changes show up in signald as empty messages with a new expiry time), then setting the channel'sexpiryTime
for the new value
- inspecting the
- Option 2 will involve parsing english language text for valid enums, which is sort of a bummer. hopefully option 1 works!
Edited by aguestuser