Skip to content

Features

Benny Neugebauer edited this page Oct 12, 2016 · 10 revisions

Ephemeral messages

How ephemeral messages work

  • Alice sets a 5 seconds timer (time is variable) and sends an ephemeral message to Bob
  • After Alice sent the message, a timer starts on her side and blurres the message after 5 seconds
  • Notice: The ephemeral message will not be send to Alice other clients (no syncing across sender's clients)
  • When Bob receives the ephemeral message, his timer starts (5 seconds)
  • After Bob's timer times out, he sends a "delete for everyone" message, do destroy the ephemeral message for him and for Alice

Limitations of ephemeral messages

  • Ephemeral messages are only supported in 1:1 conversations
  • Ephemeral messages are not synced across the senders clients
  • Ephemeral messages don't support extra features like "edit" or "like"
  • When an ephemeral message gets deleted, it's completly deleted (absolutely no trace in the UI, no trash can, no sender name, etc.)

Types

  • Asset (upload_files)
  • z.proto.ImageAsset (upload_images)
  • z.proto.Knock (send_knock)
  • Location (/)
  • z.proto.Text (send_message)

Details

  • Once a timer is set for an ephemeral message (ephemeral message mode), this timer is remembered for all following messages (until it's reset)

Edge Cases

  • If we receive ephemeral messages with timeouts different from the preset we specified, then we map those values to the closest value of our preset (improves compatiblity with 3rd-party clients without breaking our UX)

Resources

Implementation

Type Value Meaning
boolean false Not an ephemeral message
boolean true Ephemeral message which timed out
string Long.js Ephemeral message, where the timeout hasn't been started (Long.js format)
number Timestamp Ephemeral message, where the timeout is running (absolute time when message expires)