As a user I want to be redirected to the correct message when I click on a message permalink so that I can see the message in the context of the timeline.
The room navigation is handled by #574, and here are the specific rules for message navigation:
The message is in the same room than the current room. In this case, the timeline is scrolled to the message position and the message is highlighted. If it's more easy, the app can also add a new timeline on the backstack (we may want to get the product decision here CC @volker)
The message is in another room. See #574 to handle the room navigation first, then the message in the target room is highlighted and the message is visible in the timeline (i.e. the timeline is scrolled to the correct position)
If the user is not yet a member of the room but invited if feasible show the the message after the user accepted the invite. It is also ok to if the user accepts the invite and then has to go back to tap the message -link again.
Also we need a way to highlight the message in the timeline, so that the user can easily see the target message.
Special cases (will be handled on best effort - so maybe later):
The eventId refers to an invisible Event (for instance a reaction): in this case, the timeline should scroll to the next visible Event.
The eventId refers to a state event which is part of a collapsed group: in this case, the set should be expended.
The eventId refers to an unexisting Event. In this case, an error dialog should be displayed.
The eventId refers to an event in a thread. In this case, and since the thread Event are rendered in the main timeline, I guess there is no specific navigation to handle.
Description
As a user I want to be redirected to the correct message when I click on a message permalink so that I can see the message in the context of the timeline.
The room navigation is handled by #574, and here are the specific rules for message navigation:
Also we need a way to highlight the message in the timeline, so that the user can easily see the target message.
Special cases (will be handled on best effort - so maybe later):
eventId
refers to an invisible Event (for instance a reaction): in this case, the timeline should scroll to the next visible Event.eventId
refers to a state event which is part of a collapsed group: in this case, the set should be expended.eventId
refers to an unexisting Event. In this case, an error dialog should be displayed.eventId
refers to an event in a thread. In this case, and since the thread Event are rendered in the main timeline, I guess there is no specific navigation to handle.Acceptance criteria
Size estimate
M
Dependencies
Out of scope
Open questions
Subtasks