thunderbird / thunderbird/thunderbird-android

[ML 0.5/MVI.02] - Basic Interactions & Use Case Extraction

Open
#10,413 0 comments 0 reactions 2 assignees View on GitHub

@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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.