element-hq / element-hq/element-x-android
Make the timeline more modular
- Dominant language
- Kotlin
- Stars
- 2.4k
- Forks
- 624
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 149
Description
Right now the timeline sits in a monolithic package called “messages”. As the number of events shown in it increases, the bigger this module becomes making it prone to bloat. It is also currently optimised to show only “static” events, so any event that must have a more complex UI with internal state (e.g. voice messages) will be hard to create.
This proposal is comprised of 2 parts:
* make the timeline modular so that the UI/logic to render the events must not be packaged with the timeline itself but can live in dedicated modules which may be tested independently.
* Allow the events that need it (e.g. voice messages) to manage their internal state through a Presenter class so that its logic can be easily tested.
Contributor guide
Research direction
Start by locating the monolithic messages package and its timeline implementation, then trace how static events are rendered and where event-specific state would need to live. Done means the timeline delegates rendering to independently testable event modules and stateful events can use a testable Presenter class.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100