* fix(mobile): hide latest version if disabled
If the version check feature is disabled, the server will currently send
stale data to the client. In addition to no longer sending stale data,
the client should also not show the latest version if the feature is
disabled.
This complements the server PR #25688.
* lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat: album exclusion filter in free up space
* feat: make keep options into persistent settings
* chore: refactor
* chore: refactor
* add free up space to app bar dialog
* fix: date selection rerender
* more copywriting
* Update i18n/en.json
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
* add file size information
* styling
* clear up stale album id
* keep messaging album on first use
* feedback
* feedback
---------
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
* use adjustment time in iOS for hash reset
# Conflicts:
# mobile/lib/infrastructure/repositories/local_album.repository.dart
# mobile/lib/presentation/pages/drift_asset_troubleshoot.page.dart
* migration
* feat: sync cloudId and eTag on sync
* fixes fixes
* more fixes
* re-sync updated eTags
* add server version check & auto sync cloud ids on compatible servers
* fix test
* remove button from sync status page
* chore: modify for testing
* more changes
* chore: add commas in toString
* use cached provider in splash screen
* read upload service provider to prevent reset
* log errors from fetching cloud id mapping
* WIP: migrate cloud id - debug log
* ignore locked asset update
* bulk update metadata
* change log text
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(server): Support camera `make`, `model`, and `lensModel` in Storage Template (#24650)
* add support for make, model, lensModel in storage template
* no pkg lock
* Apply suggestion from @danieldietzler
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* query and formatting
---------
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* wip: copy-writing
* feat: cutoff date preset options and filter options
* fix: don't include iCloud Shared Album
* chore: message about excluding shared album assets
* feat: show preview in a separate page
* feat: show clean up hint modal after success deletion
* pr feedback
* pr feedback
* pr feedback
---------
Co-authored-by: Rahul Kumar Saini <rahul-kumar-saini@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
* fix(mobile): persist album sorting in settings
* fix(mobile): persist album layout
* fix: fixed store model id
* fix: corrupted AppSettingsEnum
* chore: refactor to remove RemoteAlbumSortMode
* refactor: use t instead of tr
* chore: break sheet tile into own file
* feat: set location from bottom sheet
* refactor: location picker
There was a lot of confusing controls here, simplified to 1 mode
* fix: local asset check
* chore: refactoring of location details widget
* fix: update currentAssetExifProvider when changing location
* chore: use SheetTile for location header
* chore: remove coordinate change check
* chore: remove comment
* 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(mobile): ignore patch releases for app version alerts
* chore: make difference type nullable to indicate when versions match
* chore: add error handling for semver parsing
* chore: tests
* feat: show "appears in" albums on asset viewer bottom sheet
fix: multiple RemoteAlbumPages in navigation stack
this also allows us to not have to set the current album before navigating to RemoteAlbumPage
chore: clarification comments
handle nested album pages
fix: hide "appears in" when an asset is not in any albums
fix: way more bottom padding
for some reason we can't query the safe area here :/
* fix: bottom sheet now is usable when navigating to another asset viewer
* fix: rebase conflict
* fix: restore ancestors album to currentRemoteAlbumProvider when popping
* fix: view flashing when dismissing a album viewer
* chore: code review changes
* fix: styling and padding
* chore: rework currentRemoteAlbumProvider to be scoped by the Remote album page
* fix: override remote album provider on required pages
* chore: convert query to all SQL calls instead of matching in Dart
* fix: album query
* fix: unawaited future
* Update deep_link.service.dart
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* chore: add unawaited_futures lint as warning
# Conflicts:
# mobile/analysis_options.yaml
* remove unused dcm lints
They will be added back later on a case by case basis
* fix warning
# Conflicts:
# mobile/lib/presentation/pages/drift_remote_album.page.dart
* auto gen file
* review changes
* conflict resolution
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* feat(mobile): open assetviewer via album activities page
* adjust ui behavior: keep current asset & disable initial forcus
* fix: Run 'make build' and 'make pigeon'
* feat: improved update messaging on app bar server info
* chore: message improvements
* chore: failed to fetch version error message
* feat: open latest release when tapping "Update" on server out of date message
* fix: text alignment states
* chore: code review updates
* Apply suggestion from @alextran1502
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Apply suggestion from @alextran1502
Co-authored-by: Alex <alex.tran1502@gmail.com>
* chore: lots of rework of the version checking code to be cleaner
Added a semver utility class to simplify comparisons, broke the update notification logic into own widget, reworked view construction and colors.
* fix: show warnign without having to tap on app bar icon
* chore: colors
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* chore: refresh backup stats when entering backup page
* check for success status
* remove logs
* remove sync remote when toggle the button
* show status immediately after navigating to screen
* pr feedback