Events in the timeline are not properly updated after the pure event changes
When a event's "pure SDK event" or source changes, it might change how/if it is displayed in the timeline, and the possible user interactions with it.
There are mainly three cases where the source changes:
- The event has been replaced (aka edited): it's unlikely the event's type changed so this one shouldn't actually be a problem.
- The event has been redacted: the event should disappear from the timeline, which is already the case, but is handled as a special case.
- The event has been decrypted: this can happen even if we have the keys in the store, I'm guessing because the keys are fetched asynchronously. It means that even if the user sees the content of the event like they should, it still has the interactions of an encrypted event: it is shown in the timeline even if it shouldn't (eg reactions), it only has the interactions of an encrypted event (eg the context menu only offers to show the source, or we can't send reactions).
This wasn't an issue previously because the events were not decrypted after being received, but we should always trigger the proper notifications for property changes, and make sure those changes trigger the appropriate changes in the timeline. And none of these changes should be handled as a special case.