* Add query to get chapter count by manga and chapter number
* Add functions to get chapter count by manga and chapter number
* Only count read chapters
* Add interactor
* Savepoint
* Extract new chapter logic to separate function
* Update javadocs
* Add preference to toggle new functionality
* Add todo
* Add debug logcat
* Use string resource instead of hardcoding title
* Add temporary logcat for debugging
* Fix detekt issues
* Update javadocs
* Update download unread chapters preference
* Remove debug logcat calls
* Update javadocs
* Resolve issue where read chapters were still being downloaded during manual manga fetch
* Apply code review changes
* Apply code review changes
* Revert "Apply code review changes"
This reverts commit 1a2dce78acc66a7c529ce5b572bdaf94804b1a30.
* Revert "Apply code review changes"
This reverts commit ac2a77829313967ad39ce3cb0c0231083b9d640d.
* Group download chapter logic inside the interactor GetChaptersToDownload
* Update javadocs
* Apply code review
* Apply code review
* Apply code review
* Update CHANGELOG.md to include the new feature
* Run spotless
* Update domain/src/main/java/mihon/domain/chapter/interactor/FilterChaptersForDownload.kt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit ca968f162ef7a61a9036b7ab9bea407a6334801d)
# Conflicts:
# CHANGELOG.md
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* Remove detekt (mihonapp/mihon#1130)
Annoying. More annoying in this project.
(cherry picked from commit 777ae2461e1eb277a3aa0c998ff69e4f100387a1)
* Add spotless (with ktlint) (mihonapp/mihon#1136)
(cherry picked from commit 5ae8095ef1ed2ae9f98486f9148e933c77a28692)
* Address spotless lint errors (mihonapp/mihon#1138)
* Add spotless (with ktlint)
* Run spotlessApply
* screaming case screaming case screaming case
* Update PagerViewerAdapter.kt
* Update ReaderTransitionView.kt
(cherry picked from commit d6252ab7703d52ecf9f43de3ee36fd63e665a31f)
* Generate locales_config.xml in build dir
(cherry picked from commit ac41bffdc97b4cfed923de6b9e8e01cccf3eb6eb)
* Address more spotless lint errors in SY
* some more missed
* more missed
* still missing, not sure while it won't report error when running locally
* one more
* more
* more
* correct comment
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Backup/Restore Extension Repos
* Refactor
* Moving to Under App Settings
* Sort by URL, Check existing by SHA and Error Logging
Untested. Currently in a lecture and can't test if the changes really work.
* Changes to logic
* Don't ask me what's happening here
* Renaming Variables
* Fixing restoreAmount & changes to logic
Co-Authored-By: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 31263084eca3ba98624d258a317d53094bba2256)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
* Fixes#1029
* Max Line Length Fix
* Update SettingsLibraryScreen.kt
No idea how this works.
Co-authored-by: Foolbar <118464521+Foolbar@users.noreply.github.com>
---------
Co-authored-by: Foolbar <118464521+Foolbar@users.noreply.github.com>
(cherry picked from commit 88efde8796b0e1cc8fba6cd987bdc487bd97f248)
Non-dynamic themes need to be updated
Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com>
(cherry picked from commit 1df87eabf2b301cf6fc60cfa5f9391756984b790)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/reader/ReaderPageActionsDialog.kt
Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com>
(cherry picked from commit e473c7f09fc009161145aca94bd70027f042b0bf)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/components/GlobalSearchResultItems.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
* chore: don't log the access token from google.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: don't log the access token from google.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: forgot to add sy stuff.
The customInfo and readEntries wasn't taken into account, so when it was disabled it will always sync it because it's true by default in BackupOptions.kt. Should be fixed and now it doesn't reset the check mark.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* fix: same device sync.
When same device is initiating the sync just update the remote that.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: throw early.
When there is network failure or any sort during downloading just throw exception and stop syncing.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor(gdrive): stream the json.
People with over 3k library can't sync because we are hitting OOM ```java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Failed to allocate a 370950192 byte allocation with 25165824 free bytes and 281MB until OOM, target footprint 333990992, growth limit 603979776```. This should fix that for them but only gdrive.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* feat: a demo for sync with new api
* refactor: perform early null checks
* feat: restore even if push failed
* feat: switch to protobuf
* chore: show error notification when sync fails.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* fix: update order by merge
* fix: call pushSyncData twice
---------
Signed-off-by: KaiserBh <kaiserbh@proton.me>
Co-authored-by: Cologler <skyoflw@gmail.com>
* Fix repo name used for URL instead of baseUrl
This applies to both the item being shown in the screen as well as the
"copy to clipboard" button. Before, copying a repo url would return
"The Repo Name/index.json.min". This PR fixes that.
* Correct Misunderstanding
Passing the whole ExtensionRepo data class through now, using the name
for display purposes and the baseUrl for copying the URL.
(cherry picked from commit da20d00481f112802aade5d63fc1eca15c5496ba)
* WIP Extension Repo DB Support
* Wired in to extension screen, browse settings screen
* Detekt changes
* Ui tweaks and open in browser
* Migrate ExtensionRepos on Update
* Migration Cleanup
* Slight cleanup / error handling
* Update ExtensionRepo from Repo.json during extension search.
Added Manual refresh in extension repos page.
* Split repo fetching into separate API module, major refactor work
* Removed development strings
* Moved migration to #3
* Fixed rebase
* Detekt changes
* Added Replace Repository Dialog
* Cleanup, removed platform specific code, PR comments
* Removed extra function, reverted small change
* Detekt cleanup
* Apply suggestions from code review
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Fixed error introduced in cleanup
* Tweak for multiline when
* Moved getCount() to flow
* changed getCount to non-suspend, used property delegation
* Apply suggestions from code review
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Fixed formatting with updated comment string
* Big wave of PR comments, renaming/other tweaks
* onOpenWebsite changes
* onOpenWebsite changes
* trying to make single line
* Renamed ExtensionRepoApi.kt to ExtensionRepoService.kt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4b4e46851083c29ca412c114b1b96136fcc21442)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# data/src/main/sqldelight/tachiyomi/migrations/3.sqm
* feat: add cross device sync.
* chore: add google api.
* chore: add SY specifics.
* feat: add backupSource, backupPref, and "SY" backupSavedSearches.
I forgot to add the data into the merging logic, So remote always have empty value :(. Better late than never.
* feat(sync): Allow to choose what to sync.
Various improvement and added the option to choose what they want to sync. Added sync library button to LibraryTab as well.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* oops.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: fix up the sync triggers, and update imports.
* refactor
* chore: review pointers.
* refactor: update imports
* refactor: add more error guard for gdrive.
Also changed it to be app specific, we don't want them to use sync data from SY or other forks as some of the model and backup is different. So if people using other forks they should use the same data and not mismatch.
* fix: conflict and refactor.
* refactor: update imports.
* chore: fix some of detekt error.
* refactor: add breaks and max retries.
I think we were reaching deadlock or infinite loop causing the sync to go forever.
* feat: db changes to accommodate new syncing logic.
Using timestamp to sync is a bit skewed due to system clock etc and therefore there was a lot of issues with it such as removing a manga that shouldn't have been removed. Marking chapters as unread even though it was marked as a read. Hopefully by using versioning system it should eliminate those issues.
* chore: add migrations
* chore: version and is_syncing fields.
* chore: add SY only stuff.
* fix: oops wrong index.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: review pointers.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove the option to reset timestamp
We don't need this anymore since we are utilizing versioning system.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: Forgot to use the new versioning system.
I forgot to cherry pick this from mihon branch.
* chore: remove isSyncing from Chapter/Manga model.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove unused import.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove isSyncing leftover.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* chore: remove isSyncing.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* refactor: make sure the manga version is bumped.
When there is changes in the chapters table such as reading or updating last read page we should bump the manga version. This way the manga is synced properly as in the History and last_read history is synced properly. This should fix the sorting issue.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
---------
Signed-off-by: KaiserBh <kaiserbh@proton.me>
* Allow disabling reader's zoom out (#62)
* Renamed disable zoom out pref and string
* Zoom to default rate if the scale is inferior
* Fixed null value check and formatting
* Fixed detekt
(cherry picked from commit c15f3f2fd5b11cc9c2088ae2fa444f4fe35ea740)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonFrame.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonRecyclerView.kt
* Add support for localdate based relative times
* Update History Screen to use new localdate based relative times
* Update Updates Screen to use new localdate based relative times
* Cleaned up date util classes
* Updated build time display
* Code cleanup
* Fixed crash in settings
* Updated Preferences item
* Worker Info works
* Fixed Tracker date display
* Code changes to pass detekt
(cherry picked from commit 7ff95e21babda98dd1b479912278d6029cd15f0d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/util/lang/DateExtensions.kt
* replace the windowInsetsPadding for navigationBarsPadding + statusBarsPadding
* Fixing bug in the MultiChoiceSegmentedButtonRow
* Rollback file
(cherry picked from commit 1dd130df9ee389fbacb200ee7a13b6d625b372fc)