* feature(mobile, beta, Android): handle remote asset trash/restore events and rescan media
- Handle move to trash and restore from trash for remote assets on Android
- Trigger MediaScannerConnection to rescan affected media files
* feature(mobile, beta, Android): fix rescan
* fix imports
* fix checking conditions
* refactor naming
* fix line breaks
* refactor code
rollback changes in BackgroundServicePlugin
* refactor code (use separate TrashService)
* refactor code
* parallelize restoreFromTrash calls with Future.wait
format trash.provider.dart
* try to re-format trash.provider.dart
* re-format trash.provider.dart
* rename TrashService to TrashSyncService to avoid duplicated names
revert changes in original trash.provider.dart
* refactor code (minor nitpicks)
* process restoreFromTrash sequentially instead of Future.wait
* group local assets by checksum before moving to trash
delete LocalAssetEntity records when moved to trash
refactor code
* fix format
* use checksum for asset restoration
refactro code
* fix format
* sync trash only for backup-selected assets
* feat(db): add local_trashed_asset table and integrate with restoration flow
- Add new `local_trashed_asset` table to store metadata of trashed assets
- Save trashed asset info into `local_trashed_asset` before deletion
- Use `local_trashed_asset` as source for asset restoration
- Implement file restoration by `mediaId`
* resolve merge conflicts
* fix index creating on migration
* rework trashed assets handling
- add new table trashed_local_asset
- mirror trashed assets data in trashed_local_asset.
- compute checksums for assets trashed out-of-app.
- restore assets present in trashed_local_asset and non-trashed in remote_asset.
- simplify moving-to-trash logic based on remote_asset events.
* resolve merge conflicts
use updated approach for calculating checksums
* use CurrentPlatform instead _platform
fix mocks
* revert redundant changes
* Include trashed items in getMediaChanges
Process trashed items delta during incremental sync
* fix merge conflicts
* fix format
* trashed_local_asset table mirror of local_asset table structure
trashed_local_asset<->local_asset transfer data on move to trash or restore
refactor code
* refactor and format code
* refactor TrashedAsset model
fix missed data transfering
* refactor code
remove unused model
* fix label
* fix merge conflicts
* optimize, refactor code
remove redundant code and checking
getTrashedAssetsForAlbum for iOS
tests for hash trashed assets
* format code
* fix migration
fix tests
* fix generated file
* reuse exist checksums on trash data update
handle restoration errors
fix import
* format code
* sync_stream.service depend on repos
refactor assets restoration
update dependencies in tests
* remove trashed asset model
remove trash_sync.service
refactor DriftTrashedLocalAssetRepository, LocalSyncService
* rework fetching trashed assets data on native side
optimize handling trashed assets in local sync service
refactor code
* update NativeSyncApi on iOS side
remove unused code
* optimize sync trashed assets call in full sync mode
refactor code
* fix format
* remove albumIds from getTrashedAssets params
fix upsert in trashed local asset repo
refactor code
* fix getTrashedAssets params
* fix(trash-sync): clean up NativeSyncApiImplBase and correct applyDelta
* refactor(trash-sync): optimize performance and fix minor issues
* refactor(trash-sync): add missed index
* feat(trash-sync): remove sinceLastCheckpoint param from getTrashedAssets
* fix(trash-sync): fix target table
* fix(trash-sync): remove unused extension
* fix(trash-sync): remove unused code
* fix(trash-sync): refactor code
* fix(trash-sync): reformat file
* fix(trash_sync): refactor code
* fix(trash_sync): improve moving to trash
* refactor(trash_sync): integrate MANAGE_MEDIA permission request into login flow and advanced settings
* refactor(trash_sync): add additional checking for experimental trash sync flag and MANAGE_MEDIA permission.
* refactor(trash_sync): resolve merge conflicts
* refactor(trash_sync): fix format
* resolve merge conflicts
add await for alert dialog
add missed request
* refactor(trash_sync): rework MANAGE_MEDIA info widget
show rationale text in permission request alert dialog
refactor setting getter
* fix(trash_sync): restore missing text values
* fix(trash_sync): format file
* fix(trash_sync): check backup enabled and remove remote asset existence check
* fix(trash_sync): remove checking backup enabled
test(trash_sync): cover sync-stream trash/restore paths and dedupe mocks
* test(trash_sync): cover trash/restore flows for local_sync_service
* chore(e2e): restore test-assets submodule pointer
---------
Co-authored-by: Peter Ombodi <peter.ombodi@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
fix: show notification from native
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: add configurable on charging only and delay
* Segmented and style the settings
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix: complete does not destroy engine on close
* reset flutterApi on cleanup
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* upload using dart client
* add connectivity api
* respect backup network setting
* comment as to why we need to wait for setForegroundAsync call
* log assets skipped due to network constraint
* dynamic spawning -> false
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix: use lock to synchronise foreground and background backup
# Conflicts:
# mobile/lib/domain/services/background_worker.service.dart
# mobile/lib/platform/background_worker_api.g.dart
# mobile/pigeon/background_worker_api.dart
* add timeout to the splash-screen acquire lock
* fix: null check on created date
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: video player
* use remote asset id in local query
* fix: error from pre-caching beyond total assets
* fix: flipped local videos
* incorrect aspect ratio on iOS
* ignore other storage id during equals check
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* initial cast framework complete and mocked cast dialog working
* wip casting
* casting works!
just need to add session key check and remote video controls
* cleanup of classes
* add session expiration checks
* cast dialog now shows connected device at top of list with a list header. Discovered devices are also cached for app session.
* cast video player finalized
* show fullsize assets on casting
* translation already happens on the text element
* remove prints
* fix lintings
* code review changes from @shenlong-tanwen
* fix connect method override
* fix alphabetization
* remove important
* filter chromecast audio devices
* fix some disconnect command ordering issues and unawaited futures
* remove prints
* only disconnect if we are connected
* don't try to reconnect if its the current device
* add cast button to top bar
* format sessions api
* more formatting issues fixed
* add snack bar to tell user that we cannot cast an asset that is not uploaded to server
* make casting icon change to primary color when casting is active
* only show casting snackbar if we are casting
* dont show cast button if asset is remote and we are not casting
* stop playing media if we seek to an asset that is not remote
* remove https check since it works with local http IP addresses
* remove unneeded imports
* fix recasting when socket closes
* fix info plist formatting
* only show cast button if there is an active websocket connection (ie the server is accessible)
* add device capability bitmask checks
* small comment about bitmask
* feat: delta sync
* fix: ignore iCloud assets
* feat: dev logs
* add full sync button
* remove photo_manager dep for sync
* misc logs and fix
* add time taken to DLog
* fix: build release iOS
* ios sync go brrr
* rename local sync service
* update isar fork
* rename to platform assets / albums
* fix ci check
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>