513 Commits
Author SHA1 Message Date
Serdar Ozturk 0cb96a6344 Add inbox category handling in Move To
- Extend move-to UI state/content to support inbox category entries
   and category selection handling.
- Adjust reducer, UI mapper, and tests for inbox categories and destination mapping scenarios.

ET-6275
2026-06-08 10:27:02 +00:00
Serdar Ozturk 4ecfe628b3 Align move-to label mapping with Rust destination model
- Add `MoveDestinationMapper` to convert Rust `MoveDestination` trees into app `MailLabel` models.
 - Wire message/conversation repositories to use the new mapper instead of the legacy `toMailLabels` helper.
 - Remove move-to conversion responsibility from `ActionsMapper`.

ET-6275
2026-06-08 10:27:02 +00:00
Serdar Ozturk 1594dc4fdb Generalize move-to contracts and Rust repositories (message + conversation)
- Update message/conversation move-to contracts to expose full Rust move
    destinations instead of only system-folder subsets.
 - Rename move-to fetch use cases to *MoveToDestinations for API clarity.
 - Simplify domain Get*MoveToLocations use cases to rely on repository output
   directly (remove custom-folder side-channel merge logic).

ET-6276
2026-06-08 10:27:02 +00:00
Serdar Ozturk fd4f3c5b54 Move category system label ID ownership to mail-label domain
- Move To-related changes in mail-label require this type.
- Avoid introducing a module dependency from label:domain to category-view:domain.

ET-6275
2026-06-08 10:27:02 +00:00
Niccolò Forlini 16fec011cc Bump Rust SDK to 0.167.0
NOJIRA
2026-06-04 09:36:06 +00:00
Serdar Ozturk beaab5e4eb Add safe fallback mapping for new Rust category-system values
- As part of the Rust bump, handle newly introduced category-related system
   folder values with a defensive fallback strategy.

NOJIRA
2026-06-04 09:33:40 +00:00
Serdar Ozturk e4d7c7e5a4 Rust named Move action classes
- MoveAction -> MoveDestination
 - MovableSystemFolderAction -> SystemFolderDestination
 - CustomFolderAction -> CustomFolderDestination

NOJIRA
2026-06-04 09:33:40 +00:00
Serdar Ozturk 3d6626c885 Add category-aware unread count observation from rust mailbox
- Add unread count/watch wrappers to Rust mailbox wrapper
 - Extend label datasource with unread count flow by label + optional category
 - Implement rust live unread flow with initial read

ET-6221
2026-05-18 11:28:15 +01:00
Serdar Ozturk 68e11aac14 Category View: Scope conversation swipe-next cursor to active category
- Make cursor lookup/reuse honor label + category context.
- Ensure fallback cursor paginator is created/reused per category-aware descriptor.

ET-6185
2026-05-18 11:27:34 +01:00
Serdar Ozturk 2ae7e05934 Category View: Integrate category label into scroller lifecycle and paging setup
- Pass selected category through mailbox/scroller creation flow.
- Recreate scroller on category changes (same as label/view-mode changes).
- Align query/repository mappings and tests with category-aware page descriptors.

ET-6185
2026-05-18 11:27:23 +01:00
Niccolò Forlini d2e9168bf7 Bump Rust SDK to 0.165.5
NOJIRA
2026-05-12 09:33:22 +02:00
Serdar Ozturk 601131afb0 Enable switching active category and updating mailbox content accordingly.
- Allow selecting a new active category from mailbox
- Propagate category selection through UI, vm and domain layers
- Update Rust scroller to reflect active category change
- Handle errors and provide user feedback on failure

ET-6046
2026-05-05 09:49:17 +01:00
Serdar Ozturk b751ec59b4 Integrate category view with Rust and domain layers
- Enables fetching category view data from Rust layer.
  - Add category view domain models (CategoryLabel, CategoryViewStatus)
  - Map Rust category data to domain models
  - Extend conversation/message repositories to expose category view
  - Propagate CategoryViewChanged updates

ET-6046
2026-05-05 09:49:10 +01:00
Serdar Ozturk 882f7c83fc Bump Rust SDK to 0.165.1
- New CategoryViewChanged scroller update added
- New categories added as system labels

Rust changes:
- [ET-6126] Obey Mail Settings for Category View in Scrollers
- [ET-6131] Eager auth refresh for migrated sessions + autoheal
- Change-label scroller's command should modify the category view state
- Android .apk contains libgopenpgp-sys.so

NOJIRA
2026-04-27 12:43:03 +00:00
Niccolò Forlini e08f551dd7 Respect the active theme when loading sender image
ET-4901
2026-04-17 11:58:02 +00:00
Niccolò Forlini 0246091abc Migrate to resolveMessageFromPushNotification when opening push messages
ET-6108
2026-04-16 12:46:56 +00:00
Niccolò Forlini 4cecf5b63d Remove deprecated observe message method
ET-6108
2026-04-16 12:46:56 +00:00
Serdar Ozturk a7923e566c Fixed per MR comments:
- Renamed firstPage to anchorItem to refer to the initial item pointed by Cursor
 - Defined and used LocalItemId typealias when Id may refer to conversation or message
 - Organised Mutex protected parts of cursor repositories

ET-4801
2026-04-15 13:29:48 +00:00
Serdar Ozturk 38f3e1f5d4 Refactor message cursor handling into dedicated repository
Solution:
- Add MessageCursorRepository to manage cursor lifecycle
- Delegate getConversationCursor to the new repository
- Limit RustMessageListQuery to reusing the active paginator only
- First try to reuse Mailbox scroller to create a cursor
- Fall back to a separate cursor scroller scoped to the repository

ET-4801
2026-04-15 13:29:48 +00:00
L10n bot 4d692ff746 i18n(weekly-mr): Upgrade translations from crowdin (e13f78ac). 2026-04-07 09:29:52 +00:00
Stefanija Boshkovska e13f78aceb Remove unused strings from the project
NOJIRA
2026-04-07 08:40:47 +00:00
Serdar Ozturk bd27fbf737 Add WebView dark mode fallback support for old WebView versions
Problem: Dark mode via CSS media query is not reliably supported on older
   WebView versions (< v100).

Solution:
    - detect WebView media query capability based on version
    - disable media-query-based dark mode when unsupported

 - Apply WebView dark mode fallback before processing message body

ET-5932
2026-03-30 09:44:35 +00:00
Serdar Ozturk f769591d8b Pass labelId to PageKey when initializing message cursor
- DefaultPageKey uses its internal default labelId, which may not match the
requested label or even may not exist

ET-5843
2026-03-23 12:27:38 +00:00
Serdar Ozturk f765baf9a2 Use nextPage instead of reload for new paginator
- Rust scrollers are not progressed on creation, so reload may return
an empty list until fetch_more is called.

 - When PageToLoad.All is requested and the paginator was just created,
call nextPage instead of reload. Existing paginators still use reload.

 - Prevents empty mailbox states observed in notification and screen
transition flows.

ET-5843
2026-03-23 12:24:31 +00:00
Serdar Ozturk fc24fd4944 Include userId and labelId in cursor creation
- initialize or reuse the correct paginator for the location of the conversation

   This prevents cursors from being created with incorrect/default label
   values (e.g. labelId=0) when opening conversations from notifications
   or other flows where the mailbox context is not yet established.

ET-5843
2026-03-23 12:17:55 +00:00
Niccolò Forlini edce018fd3 Bump Rust SDK to 0.164.0
NOJIRA
2026-03-11 10:54:30 +00:00
LisaBot 83273aec51 fix(deps): update dependency me.proton.mail.common:lib to v0.163.1 2026-02-13 09:28:47 +01:00
Serdar Ozturk 1f1bb90c5a Add unique id to PageInvalidationEvent to for logging diagnostics
ET-5843
2026-02-11 17:39:22 +00:00
Stefanija Boshkovska ad0b70c532 Bump Rust lib version to 0.161.21 2026-02-02 08:49:44 +00:00
Stefanija Boshkovska 00067767a0 Add domain auth failed banner
ET-5766
2026-01-29 15:04:11 +01:00
Serdar Ozturk 01b2676f33 Remove redundant IO dispatcher switch from getMessages
- Remove the nested withContext(ioDispatcher) from getMessages since
   it's is already called from an IO context in RustPagingSource

ET-5700
2026-01-22 14:49:51 +00:00
Serdar Ozturk a762e15089 Remove redundant logging from getMessages function
ET-5700
2026-01-22 14:49:51 +00:00
Serdar Ozturk 67c32f3d6f Propagate scrollerId & stable debug names for scroller updates
- Add scrollerId to Rust scroller update/domain flow and expand
   logging to make scroller issues traceable across creation,
   update, and disconnect.

ET-5700
2026-01-22 14:49:51 +00:00
Serdar Ozturk c9fd2024fb Rename function to align message & conversation wrappers
- In Conversation wrapper we use disconnect()

ET-5700
2026-01-22 14:49:51 +00:00
Niccolò Forlini 440815d866 Clean up redundant Timber calls
ET-5549
2026-01-22 12:57:06 +00:00
Serdar Ozturk 0b583b58e4 Bump Rust version to 0.161.9
- scrollerId has been added to scroller updates

NOJIRA
2026-01-20 08:38:18 +00:00
Niccolò Forlini bc851c607a Expose privacy locks from the message body wrapper
ET-5535
2026-01-19 13:11:27 +00:00
Niccolò Forlini c7ad5f37e7 Bump Rust to 0.161.5
ET-5699
2026-01-15 12:16:23 +00:00
Niccolò Forlini df2357273f Bump Rust to 0.161.3
NOJIRA
2026-01-09 10:28:56 +01:00
Stefanija Boshkovska d1ebd90165 Add a data class to encapsulate raw message data
ET-5543
ET-5545
2026-01-02 08:24:38 +00:00
Stefanija Boshkovska 1322343b9c Clicking the "View Headers" or "View HTML" actions should open the raw data screen
ET-5543
ET-5545
2026-01-02 08:24:38 +00:00
Stefanija Boshkovska ff6ad7532c Create mechanisms to get raw message headers and body
ET-5543
ET-5545
2026-01-02 08:24:38 +00:00
Marino Meneghel 3481914dbc Do not log image url when failing to load it
NOJIRA
2025-12-24 12:55:36 +00:00
Niccolò Forlini c3a5dd7046 Bump Rust to 0.160.5
NOJIRA
2025-12-05 15:31:58 +01:00
Seren 71c28a0a15 Rename attachments in message to reflect its limitation (10)
ET-5525
2025-12-03 09:54:51 +00:00
Seren 84582936de Fix attachments limited to 10, get attachments from decryptedMessageBody
ET-5525
2025-12-03 09:54:51 +00:00
L10n bot 26c682fa21 i18n: Upgrade translations from crowdin (0bff08ec). 2025-12-01 12:13:59 +00:00
Serdar Ozturk 5bda1c9050 Observe message scroller FetchNew events
- observing “fetch new” start/end events from the Rust message scroller
 - Defined MessageScrollerFetchNewStatus domain model
 - Mapper to map local data to domain model
 - Updated query, local data source and repository classes

ET-5069
2025-11-24 15:40:55 +00:00
Niccolò Forlini eea14b5852 Update Rust to 0.158.0
NOJIRA
2025-11-21 15:33:50 +00:00
Stefanija Boshkovska cac3f26d44 Handle the "Load images" click on the "Images failed to load" banner
ET-5026
2025-11-21 15:47:02 +01:00