Santo Shakil
8c7bd28864
fix(mobile): run iOS bg task phases in parallel
...
onIosUpload runs sync local, sync remote, hash and handle backup
sequentially. on the bg refresh task path that's a 20s budget from
iOS, and sync + hash usually eat all of it before backup gets a turn
to enqueue any candidates.
these phases don't actually depend on each other. local + remote sync
touch different tables. hash works off whatever's already in drift.
handle backup reads candidates and just enqueues to URLSession bg.
anything one phase produces in this fire shows up to the others on
the next fire, and server-side dedup catches the rare race where
backup enqueues something sync remote was about to mark as already
uploaded.
so this runs all four concurrently via Future.wait, with hash getting
the full maxSeconds-1 budget instead of a fixed 5s. outer budget
timeout still caps everything before iOS expires.
second small change: getAssetsToHash orders by createdAt DESC instead
of id ASC to match getCandidates. when hash runs inside a refresh
fire it processes recent photos first.
2026-05-08 16:42:03 +06:00
shenlong
bd58db4fcc
fix: periodically execute pragma optimize ( #28241 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-05-07 09:54:35 -05:00
shenlong
79fccdbee0
refactor: yeet old timeline ( #27666 )
...
* refactor: yank old timeline
# Conflicts:
# mobile/lib/presentation/pages/editing/drift_edit.page.dart
# mobile/lib/providers/websocket.provider.dart
# mobile/lib/routing/router.dart
* more cleanup
* remove native code
* chore: bump sqlite-data version
* remove old background tasks from BGTaskSchedulerPermittedIdentifiers
* rebase
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-04-15 23:00:27 +05:30
Mert
a05c8c6087
feat(mobile): use shared native client ( #25942 )
...
* use shared client in dart
fix android
* websocket integration
platform-side headers
update comment
consistent platform check
tweak websocket handling
support streaming
* redundant logging
* fix proguard
* formatting
* handle onProgress
* support videos on ios
* inline return
* improved ios impl
* cleanup
* sync stopForegroundBackup
* voidify
* future already completed
* stream request on android
* outdated ios ws code
* use `choosePrivateKeyAlias`
* return result
* formatting
* update tests
* redundant check
* handle custom headers
* move completer outside of state
* persist auth
* dispose old socket
* use group id for cookies
* redundant headers
* cache global ref
* handle network switching
* handle basic auth
* apply custom headers immediately
* video player update
* fix
* persist url
* potential logout fix
---------
Co-authored-by: Alex <alex.tran1502@gmail.com >
2026-03-05 11:04:45 -06:00
Mert
27a2808470
fix(mobile): mtls on native clients ( #25802 )
...
* handle mtls on ios
* update android impl
* ui improvements
* dead code
* no need to store data separately
* improve concurrency
* dead code
* add migration
* remove unused dependency
* trust user-installed certs
* removed print statement
* fix ios
* improve android styling
* outdated comments
* update lock file
* handle translation
* fix prompt cancellation
* fix video playback
* Apply suggestion from @shenlong-tanwen
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* Apply suggestion from @shenlong-tanwen
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
* formatting
---------
Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com >
2026-02-05 17:42:53 +00:00
Alex
e4443fa43e
chore: dart http foreground upload ( #24883 )
...
* feat: bring back manual backup
* expose iCloud retrieval progress
* wip
* unify http upload method, check for connectivity on iOS
* handle LivePhotos progress
* feat: speed calculation
* wip
* better upload detail page
* handle error
* handle error
* pr feedback
* feat: share intent upload
* feat: manual upload
* feat: manual upload progress
* chore: styling
* refactor
* refactor
* remove unused logs
* fix: background android backup
* feat: add error section
* remove complete section
* remove empty state and prevent slot jumps
* more refactor
* fix: background test
* chore: add metadata to foreground upload
* fix: email and name get reset in auth provider
* pr feedback
* remove version check for metadata field in upload payload
* chore: fix unit test
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2026-01-15 20:10:08 -06:00
Alex
c086a65fa8
chore: update drift ( #23877 )
...
* chore: update drift
* update drift dep
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-11-18 16:07:33 +00:00
shenlong
365abd8906
fix: check if unmetered instead of wifi ( #23380 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-11-05 13:27:38 -06:00
shenlong
ac0d646401
fix: mobile unawaited_futures lint ( #21661 )
...
* 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 >
2025-10-27 09:32:52 -05:00
Alex
f4969694cd
fix: isolate freeze app on older ios device ( #22509 )
...
* fix: isolate freeze app on older ios device
* always use at-least 5 isolates
* fix: bad merge
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-10-22 12:43:03 -05:00
shenlong
cf52b879b1
fix: ios skip posting hash response after detached from engine ( #22695 )
...
* skip posting message after detached from engine
* review changes
* cancel plugin before destroying engine
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-10-13 21:09:12 -05:00
shenlong
8ee495b08f
fix: promote to foreground service before starting engine ( #22517 )
...
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 >
2025-10-07 08:49:43 -05:00
shenlong
ee3c07d049
fix: process upload only after successful remote sync ( #22360 )
...
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-29 10:10:00 -05:00
shenlong
c5fbbee8f6
chore: update android background worker notification text ( #22347 )
...
chore: update android bg notification text
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-26 00:22:17 +05:30
shenlong
35b62cd016
fix: prevent background worker when main app is running ( #22252 )
...
* fix: prevent background worker only when the main app is actively running
* handle ref disposals better
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-21 20:45:47 -05:00
shenlong
532ec10d5f
refactor: hashing service ( #21997 )
...
* download only backup selected assets
* android impl
* fix tests
* limit concurrent hashing to 16
* extension cleanup
* optimized hashing
* hash only selected albums
* remove concurrency limit
* address review comments
* log more info on failure
* add native cancellation
* small batch size on ios, large on android
* fix: get correct resources
* cleanup getResource
* ios better hash cancellation
* handle graceful cancellation android
* do not trigger multiple hashing ops
* ios: fix circular reference, improve cancellation
* kotlin: more cancellation checks
* no need to create result
* cancel previous task
* avoid race condition
* ensure cancellation gets called
* fix cancellation not happening
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-17 23:42:37 -05:00
shenlong
61c3f27fdc
feat: add configurable backup on charging only and delay settings for android ( #22114 )
...
* 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 >
2025-09-17 14:13:49 +00:00
shenlong
b26b452530
fix: do not listen for store updates in isolates ( #21947 )
...
* dispose store on isolate cleanup
* do not listen for store updates in isolates
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-14 14:50:17 -05:00
Mert
17bbcdf584
chore(mobile): add debugPrint lint rule ( #21872 )
...
* add lint rule
* update usages
* stragglers
* use dcm
* formatting
* test ci
* Revert "test ci"
This reverts commit 8f864c4e4d .
* revert whitespace change
2025-09-12 18:56:00 -04:00
Alex
42a03f2556
fix: concurrency issue ( #21830 )
2025-09-11 19:02:03 +00:00
shenlong
722a464e23
fix: android background backups ( #21795 )
...
* 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 >
2025-09-11 12:01:15 -05:00
Alex
56e5236a39
chore: clean up background tasks ( #21785 )
2025-09-10 16:17:37 -05:00
shenlong
e239b8d2fa
fix: android crash on app pause ( #21768 )
...
* revert service locks
* rename backgroundWorkerFgServiceProvider
* refactor: parallel background worker init (#21769 )
* refactor: parallel background worker init
* fix: hashing not running from the background engine (#21773 )
* init and dispose workmanager from background engine
* log message contend
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-09-10 17:15:42 +00:00
Alex
59accbf32a
fix: prevent isolate deadlock ( #21692 )
2025-09-08 19:18:13 +00:00
shenlong
5fe954b3c9
fix: use lock to synchronise foreground and background backup ( #21522 )
...
* 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 >
2025-09-04 11:44:33 -05:00
shenlong
9d3f10372d
refactor: simplify background worker ( #21558 )
...
* chore: log hash starting
* chore: android - bump the min worker delay
* remove local sync only task and always enqueue background workers
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-03 09:57:30 -05:00
shenlong
674faf2e57
fix: local sync task never runs on iOS ( #21491 )
...
* fix: local sync task never runs on iOS
* chore: rename ios register method
* refactor from using dart callback to dart entrypoint + more logs
* check if file exists before hashing
* reschedule local sync task
* chore: rename background worker logger
* refactor: move file exists check inside repo
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
2025-09-03 02:05:58 +05:30
shenlong
0df88fc22b
feat: beta background sync ( #21243 )
...
* feat: ios background sync
# Conflicts:
# mobile/ios/Runner/Info.plist
* feat: Android sync
* add local sync worker and rename stuff
* group upload notifications
* uncomment onresume beta handling
* rename methods
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com >
Co-authored-by: Alex <alex.tran1502@gmail.com >
2025-08-28 14:11:54 +00:00