element-hq / element-hq/element-x-android

Make the timeline more modular

Open
#1,856 1 comment 0 reactions 0 assignees View on GitHub
T-Task Team: Chapter
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.