KaiserBh
eb5b1610d0
feat: Enhanced SyncYomi with Robust Locking Mechanism
...
- Introduced `LockFile` data class to manage sync status and ownership.
- Enumerated `SyncStatus` to clearly indicate the stage of synchronization: Pending, Syncing, or Success.
- Implemented a new `beforeSync` method utilizing `OkHttpClient` for secure HTTP calls to manage the lock file.
- Added JSON serialization for lock file management and status updates.
- Implemented exponential backoff strategy to handle concurrent sync attempts and reduce race conditions.
- Added comprehensive logging for debugging and monitoring sync processes.
This update enhances the reliability and concurrency handling of SyncYomi's synchronization process, ensuring users experience seamless and efficient data syncing in a self-hosted environment.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2024-01-07 09:50:30 +11:00
KaiserBh
39d5714a1b
feat: Implemented Lock Mechanism for Synchronization.
...
- Refactored beforeSync() to incorporate a robust locking mechanism.
- Added backoff strategy to handle race conditions during concurrent sync attempts.
- Ensured single instance of sync data file on Google Drive to prevent duplication.
- Optimized lock file checking and handling for efficient synchronization process.
This update significantly improves the reliability and efficiency of the syncing process by preventing race conditions and ensuring that synchronization actions are atomic.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2024-01-07 09:48:44 +11:00
arkon
80b7d14af1
Fix RAR loading
...
Closes #10302
2024-01-06 17:09:38 -05:00
arkon
bbd8098a61
Avoid showing WebView button in reader errors if page isn't actually from web
2024-01-06 16:55:50 -05:00
arkon
f8ef0f143b
Add link to storage guide during onboarding step
2024-01-06 13:33:56 -05:00
KaiserBh
2e5686372a
Merge branch 'master' into sync-part-final
2024-01-06 16:35:24 +11:00
arkon
8321ff6000
Bump dependencies
2024-01-05 23:21:19 -05:00
arkon
9c899e97a9
Clean up external repos
...
- Accept full URL as input instead, which allows for non-GitHub
- Remove automatic CDN fallback in favor of adding that as an external repo if needed
2024-01-05 23:13:16 -05:00
arkon
556f5a42a7
Fix lint error
2024-01-05 17:49:19 -05:00
arkon
850813820c
Disable customized fetch intervals for stable builds for now
...
Until some of the issues get ironed out.
2024-01-05 17:39:12 -05:00
arkon
dba5e6fbfd
Revert "Implement predictive back animation ( #10273 )"
...
This reverts commit 9c120e6231
.
Potentially too buggy for a stable release for now.
2024-01-05 17:37:04 -05:00
arkon
c17ada2c98
Support external repos
...
Largely taken from SY.
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
2024-01-05 17:28:08 -05:00
arkon
32bed9b041
Change fetch interval action to show days until next expected update
2024-01-05 17:08:39 -05:00
arkon
e0a0942015
Remove custom extension readme/changelog URLs
...
These were barely used/maintained, so just killing them.
Changelog menu item still exists to take you to the relevant git history.
2024-01-05 17:07:49 -05:00
arkon
493da5c3f4
Force users to retrust unknown extensions on cold starts
2024-01-05 08:53:45 -05:00
arkon
4e221397ce
Remove tmp chapter files after exiting reader
2024-01-04 18:02:40 -05:00
KaiserBh
b987e12db0
refactor: flipped the function names.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2024-01-04 22:14:40 +11:00
KaiserBh
7bd9c2f7c0
Merge branch 'master' into sync-part-final
2024-01-03 00:45:44 +11:00
arkon
22589a9c30
Fix next expected update being weird number sometimes
...
Occurs if manga.lastUpdate has never been set yet.
2024-01-01 18:32:21 -05:00
KaiserBh
977b55df8c
chore: Ktlint.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2024-01-02 08:15:32 +11:00
KaiserBh
e0e433349b
chore: merge upstream.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2024-01-02 08:13:34 +11:00
arkon
ec478cbb1b
Defer ACRA reporting until device is idle/not low battery/on unmetered network
2024-01-01 09:53:21 -05:00
arkon
b5e3f429fc
Fix extension settings icon trying to install update instead of opening details
2023-12-31 23:46:07 -05:00
arkon
83130f9bf9
Try to show actual path in invalid location downloader notification
...
Instead of the class/hashCode, which doesn't mean much to a user.
2023-12-31 23:33:10 -05:00
arkon
6f34c5e894
Prevent creating backups with no valid options selected
2023-12-31 09:33:19 -05:00
arkon
74931fad86
Use Material3 version of AboutLibraries
2023-12-31 08:57:11 -05:00
arkon
6ab8e1e73d
Don't use reflection for handling backup options as boolean array
...
Wasn't working correctly in release build, _probably_ because of R8 despite kotlin-reflect
shipping with Proguard rules and us already keeping all Tachiyomi classes.
2023-12-30 20:29:12 -05:00
arkon
1cdaa761b7
Dedupe common LazyColumn with action at bottom layout
2023-12-30 20:08:28 -05:00
arkon
54f4711f7b
Show next expected update in interval dialog
...
Related: #9793
2023-12-30 19:15:52 -05:00
arkon
3d0d5c0472
Misc refactoring
...
- Abstract away relative date string building
- Dedupe large update warning logic
2023-12-30 18:33:35 -05:00
arkon
f0a0ecfd4a
Allow creating backups without library entries
...
- In case you want a backup of just settings?
- Also disable backup options if dependent option is disabled (and fix being able to toggle disabled items)
- Also fix crash in RestoreBackupScreen due to attempt to parcelize Uri
- Make restore validation message a bit nicer
2023-12-30 16:02:36 -05:00
arkon
f3b7eaf4a3
Shorten restore warning message a bit
2023-12-30 12:16:53 -05:00
arkon
5bba7af24a
Allow partial restores (library/settings)
...
Closes #3136
2023-12-30 12:09:55 -05:00
arkon
32c3269291
Filter out empty source preferences when creating backups
2023-12-30 10:38:32 -05:00
arkon
a1e84911be
Clean up create backup UI
2023-12-30 10:36:30 -05:00
arkon
6bb77bcf1a
Minor cleanup/address lint warnings
2023-12-30 10:30:32 -05:00
KaiserBh
ea536b04f1
chore: fix build error.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-30 21:44:28 +11:00
KaiserBh
6466bf040a
chore: ktlint
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-30 21:39:15 +11:00
KaiserBh
cf58a6d871
chore: merge upstream.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-30 21:34:44 +11:00
arkon
ccec5c3efe
Add ability to create manual backups with private preferences too
2023-12-28 17:38:37 -05:00
arkon
8735836498
Refactor backup option flags to normal data class of booleans
2023-12-28 16:44:46 -05:00
arkon
8b65fd5751
Minor exception message cleanup
2023-12-28 16:33:54 -05:00
arkon
f0710df356
Don't make install permission required during onboarding
...
Closes #10257
We show a warning banner in the extensions list and also rely on the system
alert popup if someone attempts to install without the permission already
granted.
2023-12-28 15:48:08 -05:00
arkon
3afcee81f4
Hide private installer option for stable builds
2023-12-28 14:55:31 -05:00
KaiserBh
8cd7774054
chore: lint
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-29 05:58:47 +11:00
KaiserBh
57f9aed411
Merge branch 'master' into sync-part-final
2023-12-29 05:57:56 +11:00
KaiserBh
646ec0c947
refactor
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-29 05:57:27 +11:00
KaiserBh
5dbeda6b65
Revert "chore: ktlint"
...
This reverts commit 6677c90a39
.
2023-12-29 05:43:05 +11:00
KaiserBh
080192a1a5
revert: comparison clean up, simple equality check makes the restore longer.
...
I think when library get updated so will last_modified_at field since one of the field in the row changes and the trigger get triggered, so it's best to ignore it if the only difference is last_modified_at.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-29 04:25:17 +11:00
Ivan Iskandar
9c120e6231
Implement predictive back animation ( #10273 )
...
For home screen tabs, Navigator screens and most dialogs
2023-12-28 11:01:01 -05:00
KaiserBh
440b624903
refactor: Ktlint and replace enum.values with Enum.entries.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-29 02:06:43 +11:00
KaiserBh
ae8b1d8913
refactor: clean up comparison.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-29 00:58:40 +11:00
KaiserBh
6677c90a39
chore: ktlint
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-28 23:52:32 +11:00
KaiserBh
309bfd1733
refactor: SyncManager uses them as well can't be private.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-28 23:10:51 +11:00
KaiserBh
fbf8c46b74
refactor: tidy up and fix upstream conflicts.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-28 23:10:14 +11:00
KaiserBh
80570a823f
chore: merge upstream changes.
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-28 22:48:32 +11:00
arkon
4b208fc7ce
Move backup models back to main app module
...
I didn't realize the package name change would break compatibility with forks
that still have the old package names...
2023-12-27 13:45:44 -05:00
arkon
a9b0ac43c4
Allow deleting downloaded chapters even if source isn't available
...
Fixes #9160
2023-12-26 17:14:24 -05:00
arkon
fca4f25122
Always show chapter download indicators
...
- Local chapters are just always "downloaded", but you can't delete them from the app
- Unavailable sources show proper state so long as it's stubbed with the name still, but
you can't download anything new
2023-12-26 17:11:26 -05:00
arkon
bfb0d31ff6
Remove skipped updates notification
...
Seems to cause more confusion than it's worth.
Will update the UI for the library update skip options to better
explain what they're for later.
2023-12-26 13:13:33 -05:00
arkon
8939274b5c
Simplify storage usage bar UI implementation
2023-12-25 22:58:05 -05:00
arkon
4571dc6b56
Tweak page flashing
...
Closes #10269 , maybe. I don't really have something to test with.
2023-12-25 18:13:52 -05:00
arkon
f31bc47757
Clean up storage usage info
...
- Show bar representation of used/total space
- Handle all mounted storages
- Also included a bunch of unrelated immutables changes, sorry
2023-12-25 18:11:22 -05:00
arkon
950b4a6c90
Fix read duration statistic getting inflated when restoring history
2023-12-25 16:35:13 -05:00
arkon
2d7650537d
Address some build warnings
2023-12-25 16:31:40 -05:00
arkon
80d6d412f3
Avoid crashing if loading non-read-only private extension
...
Fixes #10252
2023-12-24 22:53:35 -05:00
arkon
6887d98f15
Minor tracking cleanups
2023-12-24 22:25:22 -05:00
arkon
6d74a86711
Some domain Track model migrations
2023-12-24 18:30:24 -05:00
arkon
5908bd1930
Move backup models to domain module
2023-12-24 18:01:58 -05:00
arkon
1a559124eb
Split up BackupCreator into smaller classes
2023-12-24 16:56:16 -05:00
arkon
54ba1d719e
Don't include settings as defaults when manually creating backup
2023-12-24 16:45:07 -05:00
arkon
93cbeca5c0
Highlight restore backup setting when navigating from onboarding step
2023-12-24 16:35:18 -05:00
arkon
19f0175a56
Don't use localized numbers for downloaded image filenames
...
Probably fixes #10258
2023-12-22 19:13:06 -05:00
arkon
bf3899d04a
Whoops, accidentally made the create backup button unusable before
2023-12-22 09:23:00 -05:00
arkon
9f90ee358b
Initial move of restore backup into a separate screen
2023-12-21 22:47:23 -05:00
arkon
565317d99c
Show MIUI warning more prominently in CreateBackupScreen
2023-12-21 22:41:48 -05:00
arkon
83a67feb48
Foundations for partial restores
...
Related to #3136
2023-12-21 22:16:42 -05:00
KaiserBh
cc5e14088c
chore: set foreground service type for SyncDataJob
...
Signed-off-by: KaiserBh <kaiserbh@proton.me>
2023-12-20 11:30:51 +11:00
KaiserBh
040c7a0fc1
chore: Ktlint
2023-12-20 05:08:26 +11:00
KaiserBh
7cee8288d5
refactor: fixed imports.
...
Fixed the imports and removed backupNotify and backupRestorer since it's separated now.
2023-12-20 05:06:13 +11:00
KaiserBh
a462b40cad
refactor: added isSync to MangaRestorer
...
Instead of overwriting it for the backup when restoring chapters we take into account if it's sync then overwrite read status, otherwise keep the old function. Where it only mark it as a read only if the dbchapter is marked as read.
2023-12-20 05:04:46 +11:00
KaiserBh
18fb63cd01
chore: merge upstream.
2023-12-20 02:46:21 +11:00
arkon
c10cd6c808
Prevent backing out from initial onboarding
2023-12-17 18:30:43 -05:00
Ivan Iskandar
f9b57800b1
DownloadJob: Network check changes ( #10242 )
...
Mostly pulled from WorkManager
2023-12-17 09:57:55 -05:00
Ivan Iskandar
387159b5af
PackageInstallerInstaller: Fix intent used for install session ( #10240 )
...
Use explicit intent as it's a requirement when targeting v34+
2023-12-17 09:56:33 -05:00
Ivan Iskandar
09531e7f5a
MangaScreenModel: Start downloads in IO dispatcher ( #10241 )
2023-12-17 09:55:54 -05:00
Ivan Iskandar
13b3bec8ad
Target Android 14 (SDK 34) and add permission onboarding step
...
(cherry picked from commit 9e0068715f3ba3d1627c4b7539b90fb782f8122f)
2023-12-16 15:51:56 -05:00
arkon
8aaf8df708
Set foreground service type for ExtensionInstallService
2023-12-16 12:11:19 -05:00
arkon
db3ddf07ee
Set foreground service types for remaining jobs
2023-12-16 12:08:08 -05:00
arkon
cd16522805
Split restoring logic into smaller classes
2023-12-16 11:43:18 -05:00
arkon
5fec881387
Clean up history restoring
2023-12-16 11:15:09 -05:00
arkon
3ac68e810d
Workaround for broken nav bar icon colors
2023-12-16 11:15:09 -05:00
Ivan Iskandar
65e1e2cf4f
Refactor onboarding steps
...
(cherry picked from commit 2ca3ab077192a7e5e2e7a5fb00c303a5a633372e)
2023-12-16 10:59:14 -05:00
arkon
e36a2c68f1
Avoid crashing in SourcePreferencesFragment if source can't be loaded
...
Should probably wait for sources to definitely be loaded first, but that's
sort of a bigger change and needs to be lifecycle-aware.
2023-12-16 10:16:05 -05:00
arkon
ad3d915fc5
Skip updating unchanged chapters and tracks when restoring backup
2023-12-15 23:11:14 -05:00
arkon
36f400d542
Fix download indexing with changed storage locations
...
Fixes #10218
2023-12-15 18:44:37 -05:00
arkon
dd1a19745a
Remove redundant job setup calls in migrations
...
We always set them up earlier in the migrations anyway.
2023-12-15 18:43:48 -05:00
arkon
58daedc89e
Clean up manga restoring logic
...
Some behavior changes:
- It prioritizes new entries, then anything more recently updated
- It copies the more recently updated entry's metadata (description, thumbnail, etc.)
2023-12-14 23:26:02 -05:00
arkon
d20a8fcf13
Proper check for when to navigate to tracker settings from tracking action
2023-12-14 19:52:49 -05:00
KaiserBh
3532074a70
Merge branch 'master' into sync-part-final
2023-12-15 07:01:37 +11:00