timeline: fix incorrect headers on encrypted messages
The logic used to display headers in the timeline relies on the
Event::can_hide_header
method. This method returns false
for
encrypted messages. Decryption is performed asynchronously so it is
possible for the view to be rendered before the decryption has
completed, therefore can_hide_header
returns false
for messages
which should in fact have a header.
This commit adds a "decrypted" event which is emitted by Event
.
Timeline
listens to this event and updates the header states of
messages on receiving it.