thunderbird / thunderbird/thunderbird-android

[ML 0.7/LL.02] - Mediator Implementation & Unified Support

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

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

Implement the heavy lifting of the data layer: the RemoteMediator itself (handling the source of truth between Database and Remote) and the complex logic required to paginate "Unified Folders" across multiple accounts.

🎒 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

🟢 In Scope
  • Implement the MessageListRemoteMediator API.
  • Build pagination logic for Unified Folders.
🔴 Out of Scope
  • UI Integration and Event triggering.
🚧 Technical and/or Business Requirements
  • Remote Mediator Implementation:
    • Use the Database as the single source of truth.
    • Request data from remote only when the database lacks results.
  • Unified Folder Pagination:
    • Ideally, we should tackle this only after the database work is done.
    • If it is not finalized, we will need to figure out a way to paginate the unified folder.
    • Complexity Alert: This requires a "logical cursor" approach:
      • Maintain a list of Account IDs with their respective next pagination cursors.
      • Calculate limits divided by account count.
      • Fetch and merge pages from different accounts, handling sorting and deduplication carefully.

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.