* Add private extension install method
Private extensions are put inside private data directory of the running app, so
this kind of extensions can only be used by the running app and not shared with
other apps.
One limitation of private extension is the lack of deeplink handlers (if there's
any) since the extension APK is not installed to the system.
When both kinds of extensions are installed with a same package name, shared
extension (the one installed to the system) will be used unless the version
codes are different. In that case the one with higher version code will be used.
* update
(cherry picked from commit 627f07408e0fe62ab89dcd8881275141591b328d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt
Fix bug of not fetch update if manual library refresh, no auto
If somehow manga missed check period, we would not give new next update cycle and it would forever left behind
(cherry picked from commit d874f20362217bf1752b16f513143f1f83972f69)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
Contents' UIs should probably be improved, but that can happen separately.
(cherry picked from commit 73080902885c9d219f5534002ccf5d16a07a678f)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
* Add support to kotlin.time APIs in the rate limit interceptor.
* Add a missing line break in the doc.
* Move the specific host to the same file.
* Add kotlin.time rule to Proguard and remove specific host rule.
* Mark the old version as deprecated and address review.
* Remove unused import.
* Remove yet another unused import.
(cherry picked from commit 9b6567f5e4bfa4b8a4845400216551fd28545094)
Not really much point in keeping these as singletons.
Hopefully allows for these to be GC-ed after closing them.
(cherry picked from commit c9a1bd86b58ce4a41bfc0eeb527cac9d30802353)
* Add Predict Interval Test
* Get mangas next update and interval in library update
* Get next update and interval in backup restore
* Display and set intervals, nextUpdate in Manga Info
* Move logic function to MangeScreen and InfoHeader
Update per suggestion
---------
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit cb639f4e90121b98221ba7358108200c46b6657f)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/components/MangaDialogs.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* refactor: backup and restore to support cross device sync.
* chore: Updated string resources
* refactor: change function name.
* refactor: Use URI SyncHolder.kt not needed anymore.
(cherry picked from commit 7b2764e8f70ff4564fb744f48c1c53692f55f289)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
Still needs better refactoring to dedupe all of this stuff though...
(cherry picked from commit dd3ca0c131f4251302e0852265893f68c142f6a4)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt
The per-series settings aren't quite functional yet, but they're also
accessible outside of the sheet.
(cherry picked from commit 28131ac1357e1134d75c02e2a3bb5e3161a3ecfe)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/reader/settings/ReadingModePage.kt
# app/src/main/res/layout/reader_activity.xml
# app/src/main/res/values/attrs.xml
# app/src/main/res/values/themes.xml
Pinned only setting is removed in favor of the UI in the global search screen itself, which defaults to pinned only.
This needs more UX improvements, but I'm not really sure what it should be like right now.
(cherry picked from commit 12e7ee9d0caaa56d551908d179788fa637768397)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt
* add pinned and available filter chips to global search
* split filter predicate into seperate function
* change the global search available filter to has Results
* reordering of imports
(cherry picked from commit cbcec8c4d9d6f08ecb6ab50eff9aa51d4a3728a0)
Also allow webtoon side padding to be any amount between 0 - 25%.
(cherry picked from commit 2f0133986a60fbd4218e32fce19df6171bad4e71)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsSheet.kt
# app/src/main/res/layout/reader_pager_settings.xml
# app/src/main/res/layout/reader_webtoon_settings.xml
Could probably call this if we ever make it update tracking on manually
marking chapters as read.
(cherry picked from commit efabe801be56476bf9ee536747f39ab8d486ca12)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
* feat: added migrations.
* feat: create triggers, account for new installs.
* feat: update mappers to include the new field.
* feat: update backupManga and backupChapter.
Include the new fields to be backed up as well.
* feat: add sql query to fetch all manga with `last_favorited_at` field.
* feat: version bump.
* chore: revert and refactor.
* chore: forgot to lower case the field name.
* chore: added getAllManga query as well renamed `fetchMangaWithLastFavorite` to `getMangasWithFavoriteTimestamp`
* chore: oops that's not meant to be there.
* feat: back fill and set last_modified_at to not null.
* chore: remove redundant triggers.
* fix: build error, accidentally removed insert.
* fix: build error, accidentally removed insert.
* refactor: review pointer, make fields not null.
(cherry picked from commit a577f5534f31086174b1cc851d8b489d69f557e8)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
# data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
# data/src/main/sqldelight/tachiyomi/data/mangas.sq
# data/src/main/sqldelight/tachiyomi/migrations/25.sqm
# domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt
Using swipe (the library) and added haptic feedback
(cherry picked from commit 8287c9d1935ac16980f9dd0ac4e0284775554a74)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/presentation/manga/components/MangaChapterListItem.kt
Fixes#9564
Avoids the issue of clearing the cache when the app is backgrounded despite being in the reader.
We could do a job on idle, but we'd still need to be careful around whether the reader is active,
so this is just simpler considering it's a separate activity.
(cherry picked from commit 53c6230afebe8e8cddca216f281fdec70e450a33)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
add function to delete downloaded chapters when migrating manga and getFlagsFromPositions fix
(cherry picked from commit 4882896f4d65acabb82771699906b797b3de7662)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
Fixes#9668
Could probably refactor this a bit more, but the reader view model stuff is a mess in general anyway.
(cherry picked from commit 6fe5e6e21bfaef2f03ecca3659e03835fc354602)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
* Show a progress indicator while checking for updates.
* Remove a unused import.
* Remove the initial toast.
(cherry picked from commit 2a7cca6ea43f88e10db313f3361184d90ae80c4c)
It'll eventually be a tab with the other settings again once the other tabs are also
migrated over so it's just a single Compose sheet.
(cherry picked from commit fe82cdb9c85274e0c9b904ec6b37fac97d01ea37)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt
# app/src/main/res/layout/reader_activity.xml
I missed this in the PR that it came with, but I guess it'll be useful if we go multiplatform.
(cherry picked from commit f344831d5877d1d0a7772b00f498ddfb6e86da04)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
Referring at the examples and other internal usages, the
resulting stateful Modifier should be separated from
all the previous Modifier chain.
(cherry picked from commit 25b0458930b3de21340cdc201e7e5e46501dbda1)
* Dialog for service tracker removal added, anilist query prepared
* added API delete requests for Mal and Kitsu
* implement and fix tracker delete for anilist, shikimori, mangaupdates
* implement and test mal delete request
* Update to dialog text to reflect current tracker
* finish kitsu api request and block bangumi tracker removal
* Change delete flag into interface, localise strings, clean up logs
* Add shikimori delete compatibility for already existing entries
* update track delete dialog prompt to include checkbox, update strings
* Update i18n/src/main/res/values/strings.xml
Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
* Update i18n/src/main/res/values/strings.xml
---------
Co-authored-by: unknown <zaghdane@fireflow.de>
Co-authored-by: arkon <arkon@users.noreply.github.com>
Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
(cherry picked from commit b36b3bfcabd4a33826b455e1cdfc06fde110a452)
Similar to J2K. This only applies on Android 12+.
(cherry picked from commit ee95c1439f8c47d912c88bd9ebb442e64a89f8ff)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt
Actually closes#7228, which I forgot was about history more than trackers.
(cherry picked from commit e323f3c25a22ba7b9b831f17064ee7196b5ce951)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
* Refactor updateSuccessState
- Convert to inline function
- Use when for type safety if we add other MangaScreenState types
* Replace equivalent expressions with updateSuccessState
* Replace safe cast in MangaScreen
(cherry picked from commit cf777d989339a5190966b537aa493c5984d36a93)
State approach doesn't work well for client-side routed apps like MangaDex.
Fixes#9576
(cherry picked from commit 39a7356ed15b111fd940fc4bb8059f7130a1542e)
There seems to be little value in this feature, and juggling flag masks is annoying.
Per-category sorting is still a thing, but could be refactored away from the flag in the feature.
(cherry picked from commit 405a75438a61770a12292cc87c0fa36e16668124)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibrarySettingsDialog.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# domain/src/main/java/tachiyomi/domain/category/interactor/SetDisplayModeForCategory.kt
# domain/src/main/java/tachiyomi/domain/category/interactor/SetSortModeForCategory.kt
Redundant with predictive back, but also just sort of pointless since it doesn't help
with any sort of app state retention.
(cherry picked from commit 8f4bc71cf7b99fe0b0d2ea68dfca0140477686cc)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsGeneralScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
* Replace RxJava in extension installer
Replace common downloadsRelay with Map of individual StateFlows
* Drop RxRelay dependency
* Simplify updateAllExtensions
* Simplify addDownloadState/removeDownloadState
Use immutable Map functions instead of converting to MutableMap
(cherry picked from commit 0ac38297f4bdeb83b2d9c8919b89520e9722f35e)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
Still limits to things within the past 3 months though.
Closes#9554
(cherry picked from commit 4c65c2311e09bf5dcb77327c415a6fddd12123c5)
# Conflicts:
# data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt
# domain/src/main/java/tachiyomi/domain/updates/interactor/GetUpdates.kt
* Add Grace Period value and settings
* Add functions to calculate nextUpdate
* update per review
* Move more into SetMangaUpdateInterval, keep wrapper
(cherry picked from commit c90f3449108a8362fea1ee9070979b5a14be9be5)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt