Skip to content

feat(message-list): add unified folder support#10885

Open
rafaeltonholo wants to merge 21 commits intothunderbird:mainfrom
rafaeltonholo:feat/10776/add-unified-folder-support
Open

feat(message-list): add unified folder support#10885
rafaeltonholo wants to merge 21 commits intothunderbird:mainfrom
rafaeltonholo:feat/10776/add-unified-folder-support

Conversation

@rafaeltonholo
Copy link
Copy Markdown
Member

Resolves #10776.
Depends on: #10863.
feature-flag: enable_message_list_new_state

Commits of this PR

Summary

Adds support for the unified folder in the new Message List screen

Screen Recording

Screen.Recording.2026-04-16.at.2.37.52.PM.mov

Update `SortCriteriaMenuList` to use the current account ID when dispatching sort criteria changes, ensuring settings are applied per-account rather than globally. This also adds a check to exclude `UnifiedAccountId` when determining the account ID.
Implemented message focus tracking and updated `MessageListFragment` to use the focused message for keyboard/contextual actions.

- Added `focusedMessage` to `MessageListMetadata` and corresponding focus events to `MessageItemEvent`.
- Updated `MessageListScreenRenderer` to dispatch focus enter/exit events.
- Refactored `MessageListFragment` to use `focusedMessage` for delete, archive, move, copy, and flag toggle operations.
- Implemented `toggleMessageSelect` logic using the view model state.
- Added `OpenMessage` effect to `MessageListEffect`.
- Created `OpenMessageSideEffect` to handle message click events and dispatch the open message effect.
- Updated `SetupLoadedMessagesState` to set active message on message click.
- Integrated `OpenMessageSideEffect` in `MessageListSideEffectsModule`.
- Updated `MessageListFragment` to handle `OpenMessage` effect and open the message.
… mode

- Added `ToggleMessageSideEffect` to handle message click events in selecting mode and dispatch toggle select event.
- Updated `SetupSelectingMessagesState` to toggle message selection state on click.
- Integrated `ToggleMessageSideEffect` in `MessageListSideEffectsModule`.
…age updates

- Created `SetMessageActiveSideEffect` to handle `SetMessageActive` events and scroll to the newly active message
- Updated `SetupLoadedMessagesState` to mark messages as active/inactive in the message list on click and active state changes
- Added `mapMessages()` utility to `MessageListState` for transforming message lists while preserving state type
- Fixed message scrolling comparison to use message IDs instead of object equality
- Replaced `LifecycleStartEffect` with `collectAsStateWithLifecycle` for scroll event collection
- Integrated `SetMessageActiveSideEffect` in `MessageListSideEffectsModule`
- Changed visibility of `MessageListScreenAccessibilityState` and `rememberMessageListScreenAccessibilityState` to internal
- Changed visibility of side effect classes to internal: `SetMessageActiveSideEffect`, `LoadPreferencesSideEffect`, `ToggleMessageSideEffect`, `ChangeSortCriteriaSideEffect`, `AllConfigurationsReadySideEffect`, `OpenMessageSideEffect`, `LoadSwipeActionsStateSideEffectHandler`, `LoadSortCriteriaStateSideEffectHandler`, `LoadFolderInformationSideEffect`
- Changed visibility of `DefaultLocalDeleteOperationDecider` and `MessageListViewModel` to internal
@rafaeltonholo rafaeltonholo added the report: exclude Exclude changes from user-facing reports (internal, minor, or not relevant to users). label Apr 16, 2026
@rafaeltonholo rafaeltonholo requested a review from a team as a code owner April 16, 2026 17:39
@rafaeltonholo rafaeltonholo added the feature-flag Changes guarded by a feature flag. Please add a comment stating the name: "feature-flag: abc" label Apr 16, 2026
@rafaeltonholo rafaeltonholo requested a review from wmontwe April 16, 2026 17:39
@github-actions github-actions bot added the tb-team Tasks and features handled by project maintainers label Apr 16, 2026
@rafaeltonholo rafaeltonholo added the pr: stacked Must be used on a PR that is stacked on top of other(s) label Apr 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature-flag Changes guarded by a feature flag. Please add a comment stating the name: "feature-flag: abc" pr: stacked Must be used on a PR that is stacked on top of other(s) report: exclude Exclude changes from user-facing reports (internal, minor, or not relevant to users). tb-team Tasks and features handled by project maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ML 0.1/UI.04.3] - Add unified folder support

2 participants