* 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>
* add user metadata table and use to filter persons in person.getAllForUser query
* update PersonRepository.getAllForUser query
* remove minFaces from PersonSearchOptions interface
* fix person.getAllForUser query
* update types and openapi specs
* add minFaces field to user settings page
* remove old arg from tests
* add e2e test to verify minimumFace user preference
* add i18n label and description for english
* update default min faces
* fetch minFaces ML default and use as per-user default in frontend
* update e2e tests
* fix bugs in people getAllForUser query
* update person getNumberOfPeople query to reflect correct number of people according to minFaces threshold
* updated mobile openapi specs?
* use subquery in coalesce instead of join
* remove out of scope query update
* feat(mobile): better downloading while sharing
* chore: separate download group
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix(mobile): preserve zoom level when new images load in asset viewer
* fix(mobile): use actual child size for live photo
* revert fixes
* fix(mobile): keep zoom consistent when scale boundaries change
* fix(mobile): simplify scale handling in photo_view_core.dart
* feat(shared-link): enhance shared link UI and functionality with new expiry options and improved layout
* rebase & cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* add bulk_tag_assets_action_button to general_bottom_sheet.widget
include create tag tile in 'Add Tags' action modal
* follow provider -> svc -> repo pattern for tags
* rebase and cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>