thunderbird / thunderbird/thunderbird-android

[ML 0.5/MVI.01] - Foundation & ViewModel Setup

Open
#10,412 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

Establish the MVI architecture for the MessageListFragment. This includes defining the state, events, and effects, and refactoring the ViewModel to follow the UDF (Unidirectional Data Flow) pattern. This is the prerequisite for all subsequent feature migrations.

🎒 Resources

ℹ️ List all relevant resources like BugZilla meta bugs, Figma files, Notion links and other files. These can be filled in later.

🦮 Rules of the Road

ℹ️ Initial definition of requirements and limitations, the scope of this feature and other potential considerations in order to keep the project narrow and focused.

🟢 In Scope
  • Define the MessageList State
  • Define the MessageList Events and Effects
  • Adjust the MessageListViewModel to use a UDF approach
🔴 Out of Scope
  • UI Redesign (unless specified)
  • Migration of specific message actions (Move, Archive, etc.) - scheduled for later milestones.
🚧 Technical and/or Business Requirements
  • Define the MessageList State:
    • The state must contain all data required to display content (Selected folder, List of messages, Swipe action preferences, Loading indicators, Search query, Sorting options).
  • Define the Message List Events and Effects:
    • Define these before connecting real data to organize data requirements and dependencies.
  • Adjust the MessageListViewModel:
    • Must extend the BaseViewModel.
    • Must expose a strong state that the UI relies on.
    • Must handle user events and update state accordingly, replacing the current limited implementation.

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.