mirror-immich/mobile/test
Peter Ombodi 9d4a6614b1
feat(mobile): Android. Immich as a gallery / image viewer app (#26109)
* feat(mobile): handle Android ACTION_VIEW intent
- add ViewIntent Pigeon API and generated bindings
- implement Android ViewIntentPlugin + iOS no-op host
- route ExternalMediaViewer by ViewIntentAttachment
- buffer pending view intents and flush on user ready/resume

* feat(mobile): fallback to computed checksum for timeline match
- hash local asset on-demand when checksum missing
- search main timeline by localId or checksum before standalone viewer
- persist computed hash into local_asset_entity

* fix(mobile): proper handling is user authenticated

* feat(mobile): open ACTION_VIEW fallback in AssetViewer
drop ExternalMediaViewer route

* feat(mobile): add logger

* test(mobile): add unit tests for view intent pending/flush flow

* fix(mobile): fix format

* fix(mobile): remove redundant iOS code
update code related to LocalAsset model and asset viewer

* refactor(mobile): simplify view intent flow and support file-backed ACTION_VIEW assets
remove redundant view intent model/repository layer
handle transient ACTION_VIEW files in viewer/upload flow
clean up managed temp files for fallback assets

* refactor(mobile): extract MediaStore utils and resolve view intents via merged assets

* refactor(mobile): move deferred view intents into providers, split view-intent providers, and clean up ACTION_VIEW handling

* refactor(mobile): resolve merge conflicts
use NativeSyncApi for hash files instead method from removed BackgroundServicePlugin.kt

* style(mobile): format files

* style(mobile): format files #2

* refactor(mobile): lazily materialize view-intent files and clean up temp-file handling

* fix(mobile): flush pending view intents after login navigation

* refactor(mobile): split view intent handler by platform and trigger it from app events

* refactor(mobile): move view intent handling behind platform-specific factories

* refactor(mobile): simplify code

* fix(mobile): hand off deep-link viewer to main timeline after upload
Add MainTimelineHandoffCoordinator to switch the asset viewer to the main timeline once a view-intent asset is uploaded and becomes available, and guard viewer reload/navigation transitions to avoid race conditions and crashes.

* refactor(mobile): use remote asset ids for view intent handoff and simplify resolver

* refactor(mobile): resolve merge conflicts

* style(mobile): reformat code

* style(mobile): reformat code #2

* fix(mobile): stabilize Android view intent asset resolution and fallback viewer

* refactor(mobile): share AssetViewer pre-navigation state preparation

* fix(mobile): wait for main timeline before deferred view intent handoff

* refactor(mobile): decouple view intent asset resolver from providers

* fix(mobile): avoid double pop when canceling upload dialog

* fix(mobile): resolve view intent MIME type with fallbacks

* docs(mobile): clarify view intent fallback asset TODO

* fix(mobile): resolve merge conflicts

* cleanup

* lint

---------

Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2026-06-03 12:05:52 -05:00
..
domain fix(mobile): proper background task cleanup (#28694) 2026-06-03 08:16:19 -04:00
drift/main refactor: rename metadata to settings (#28691) 2026-05-30 10:27:55 -05:00
fixtures feat(mobile): add three-state field serialization (#27231) 2026-06-03 08:13:17 -04:00
infrastructure refactor: rename metadata to settings (#28691) 2026-05-30 10:27:55 -05:00
medium refactor: rename metadata to settings (#28691) 2026-05-30 10:27:55 -05:00
mocks feat: opt-in sync of deletes and restores from web to Android (beta timeline) (#20473) 2025-11-10 16:20:51 +00:00
modules refactor(mobile): Migrate durationInSeconds to durationMs (#26615) 2026-04-20 23:28:11 -04:00
presentation/widgets fix(mobile): images loads sometimes cancel too early (#27067) 2026-03-27 10:35:50 -04:00
providers/view_intent feat(mobile): Android. Immich as a gallery / image viewer app (#26109) 2026-06-03 12:05:52 -05:00
services feat(mobile): Android. Immich as a gallery / image viewer app (#26109) 2026-06-03 12:05:52 -05:00
test_utils refactor: yeet old timeline (#27666) 2026-04-15 23:00:27 +05:30
unit fix(mobile): proper background task cleanup (#28694) 2026-06-03 08:16:19 -04:00
utils_legacy fix(mobile): use correct delete action (#26575) 2026-05-14 11:57:19 +00:00
api.mocks.dart refactor: yeet old timeline (#27666) 2026-04-15 23:00:27 +05:30
mock_http_override.dart chore: bump dart sdk to 3.8 (#20355) 2025-07-28 14:04:03 -05:00
openapi_patches_coverage.dart ci: verify mobile backward compatibility (#28786) 2026-06-03 15:21:23 +00:00
repository.mocks.dart feat(mobile): add manage media APIs to NativeSyncApi (#28441) 2026-05-22 17:40:11 +05:30
service.mocks.dart refactor: yeet old timeline (#27666) 2026-04-15 23:00:27 +05:30
test_utils.dart feat: recently added assets page (#28272) 2026-05-11 21:35:10 +00:00
utils.dart refactor: medium repository context helpers (#28311) 2026-05-09 08:19:31 -05:00
widget_tester_extensions.dart chore: bump dart sdk to 3.8 (#20355) 2025-07-28 14:04:03 -05:00