status-im / status

0 stars 1 forks source link

Disappearing Messages 👻 #47

Open errorists opened 4 years ago

errorists commented 4 years ago

Feature Issue

The scope of this issue is to add a disappearing messages feature, something which can already be found on other privacy sensitive messengers and a frequent user request. The purpose of this, is to enable ephemeral conversations where the things you say expire and are deleted once said.

ghostmessages

User Story

As a user, I want to set my messages to disappear after they've been received, so that if someone were to gain access to my chats, he wouldn't be able to read the history or just to keep my conversations tidy.

Description

First of all, this is limited to private chats only.

  1. First the feature requires us to place a menu with the different options for toggling disappearing messages. It's conveniently accessed by pressing and holding the Send button.

Available options are • 30 seconds • 1 hour • 1 day • Never (off)

This setting persists in the chat, it has to be manually turned off or changed to deactivate. Each setting is indicated by a ring surrounding the Send button, the ring reflects the duration shown in the menu, ¼ for 30 seconds, ½ for 1 hour and ¾ for 1 day. The ring disappears if the feature is disabled.

Long press on the button should be followed by haptic feedback when the event to open the menu fires. The upward send arrow inside it should change to a 'cancel' once opened. • Pressing the button again dismissed the menu. • Pressing outside of the menu, dismissed it. • Pressing on any of the options dismisses the menu with selecting the option

Menu opens and closes with an animation, I used a Spring physics animation but I believe a bezier like cubic-bezier(0.165, 0.84, 0.44, 1) would work equally well. 0.3 seconds for the duration.

Behind the menu there's a 10% black overlay, same animation values as the menu

  1. Once a disappearing message is composed and the Send button is pressed, we send the message as we usually do but with a timer placed next to the timestamp.

This timer counts down the time until the message is removed from your chat. The recipient of this message will have the same timer placed in his message, that starts to count down when the message is first seen (opened and scrolled to in chat). If notifications were to be introduced before this feature, a push notification for a disappearing message would trigger the timer only once you press on the notification. Alternatively we can substitute the message text in such notification with a 'Disappearing message' text label so the body of the message is hidden until made visible, this way there's no trace of history in your notifications tray. TBD

This should be divided into a smaller amount of steps, I used 24 for the prototype above. I believe it might help with performance and we don't need to animate it that precisely

  1. Once the timer reaches 0, we remove the message from chat, reordering messages.

Acceptance Criteria

The design in its entirety is introduced into the UI and the switch to enable messages to disappear makes its way into our lovely protocol.

You can play with a rough draft of a prototype here

You can find the designs here

Notes

🙏 Thanks, everyone who contributes to this issue is awesome in my book! 🙏

cammellos commented 4 years ago

One clarification, correct me if anything is not accurate:

1) I set messages to disappear in the chat to 30 seconds, I am A and chatting with B, which has not turned on this feature. 2) I send a message to B. This message will disappear from my device after 30 seconds. The message will disappear from B's device 30 seconds after it was read. 3) B sends me a reply. This message will disappear from A device 30 seconds from it has been read. by me. What happens though on B's device? will it disappear after 30 seconds after it was sent, or it will stay there?

Essentially the question is whether the settings apply to both A & B devices or are a bit asymmetrical.

errorists commented 4 years ago

@cammellos So B has not turned on this feature. Then all messages sent from B's device will not have the timer or the 'disappearing flag' enabled. they will stay in history on both B's and A's device, and this can't be changed retroactively. So I think, yes. it's asymmetrical. I think it's best to think of it as a per message feature, and it's only you who composed and is about to send this message, that can say if it should disappear or not

cammellos commented 4 years ago

As discussed in chat, I post this for reference on how signal's implements it:

I have checked signal's app, just to make sure, it seems like they are doing it differently from what we are going for: Settings are for the whole chat, so if either me or you set a timer on the chat, any message (on both sides), sent from either of us will disappear in the time set. A notification is set on the chat every time this changes.

errorists commented 4 years ago

By popular demand, I designed this with a chat setting similar to what @cammellos described above. Once we're ready to work on this we can discuss which one to choose

Screenshot 2020-04-15 at 12 47 26

0xc1c4da commented 4 years ago

Really looking forward to this feature, agree the chat-wide for both parties makes a lot of sense, but we should have one-shot messages also.

I realise this is just design, but to put this somewhere, another common period is 1 week which should be included. The term "dissapearing messages" is too weak and wafty, we could probably come up with something better there. "Message Shredder", "Destroy Message", "Self-destructing Messages". Something shorter with more punch is more fitting for this.

kberey commented 4 years ago

By popular demand, I designed this with a chat setting similar to what @cammellos described above. Once we're ready to work on this we can discuss which one to choose

Screenshot 2020-04-15 at 12 47 26

how about edit button isn't available?

errorists commented 4 years ago

@kberey can you elaborate what you wish to edit in the interface? The exact duration of a disappearing message, or the message itself?

kberey commented 4 years ago

@kberey can you elaborate what you wish to edit in the interface? The exact duration of a disappearing message, or the message itself?

@errorists the message itself. for typos or some grammar error.

errorists commented 4 years ago

@kberey that's outside the scope of this issue, feel free to start a discuss thread with a feature request to edit messages after sending them, so we can take it over from there, thanks.

ghost commented 3 years ago

Hey guys. Any updates on the disappearing messages feature? No one has been assigned and I think this is a really top priority feature as every other privacy messenger has this.