thunderbird / thunderbird/thunderbird-android
[ML 0.5/MVI.02] - Basic Interactions & Use Case Extraction
Open
@dani-zilla is already working on this.
Since Jan 23, 2026.
- Dominant language
- Kotlin
- Stars
- 14k
- Forks
- 2.8k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 57
Description
🎯 The objective
Migrate core message list interactions (selection, read/unread, star, delete, spam) from the MessagingController and Fragment to the new ViewModel and dedicated Use Cases.
🦮 Rules of the Road
🟢 In Scope
Extract "Toggle selection" to ViewModel state change(Just state change, need the message list items to be using the new state)Extract "Select all" to ViewModel state change(same as above)- Extract "Mark as read/unread" to
ChangeMessageReadStatusUseCase(Partially covered by #10510) - Extract "Add/remove star" to
AddRemoveStartUseCase(Partially covered by #10510) - Extract "Delete" action to
DeleteMessageUseCase(#10517, #10518) - Extract "Spam" action to
MarkUnmarkMessageAsSpamUseCase(Covered by #10509)
🔴 Out of Scope
- Complex navigation flows (Move/Archive dialogs)
🚧 Technical and/or Business Requirements
- Selection Logic: "Toggle selection" and "Select all" should be pure state changes in the VM; the UI must reflect this state without Fragment-side logic.
- Use Case Extraction:
- Logic currently inside
MessagingController(Read, Star, Delete, Spam) must be extracted to Use Cases. - The VM should call these Use Cases directly.
- Logic currently inside
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.