* Mark author and artist
* overall style
* Clean up spacing
---------
Co-authored-by: arkon <eugcheung94@gmail.com>
(cherry picked from commit 7457a18aee15ce7b2afd01fc5bc33f08baa2f6f1)
We can house more things in here in the future, like:
- A unified storage location setting (with scoped storage)
- Sync
- Disk usage info
(cherry picked from commit c46c39d4aea887503838cc832822047f3a41018a)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
* add ext info to crashlog
* add unofficial to crashlog too
* update to have header include unofficial too
* after ktlintFormat
* Clean up debug info output
---------
Co-authored-by: arkon <eugcheung94@gmail.com>
(cherry picked from commit 0bdd3f79d4d14318ba8110748c6d39484c6d446b)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/util/CrashLogUtil.kt
Being an extension on the DiskUtil couples to a class at a different abstraction
layer without really needing to. Created PermissionRequestHelper as a place to
put similar requests if needed in the future.
(cherry picked from commit 3b7ed9bc6d99c9822f3051f3696fb8359b4a8f8a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt
* Created DummyTracker for use in tests and presentation previews
* Added previews for TrackerSearch
* Added previews for TrackLogoIcon
* Added preview for TrackInfoDialogSelector
* Added previews for TrackInfoDialogHome
(cherry picked from commit 6d1e520c6c5c3860bbd588677bb4a05ab06fe830)
* open manga and chapter using URL
* removing unnnecessary logs
* Resolving comments
* Resolving comments
(cherry picked from commit f84868a2641578b7e07719d8f580e4668804fd50)
The lambda-format was really confusing to read and keep which anonymous data
item was corresponding to which field. Now it's directly inspectable in the IDE
(cherry picked from commit 15423bfc8476179dff20ed49e5aa92a5387061ff)
# Conflicts:
# data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
# data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
# data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt
# data/src/main/java/tachiyomi/data/updates/UpdatesMapper.kt
# data/src/main/java/tachiyomi/data/updates/UpdatesRepositoryImpl.kt
Closes#1652
Also removes the ability to trigger refreshes for the entire library or
as part of a library update as it should no longer be needed. Opening
the tracking sheet already refreshes the data too, so stale data is
irrelevant there.
Also closes#4775 since it would no longer be relevant.
(cherry picked from commit 489d22720a4343f198c81fe10f69d5b212bfc41a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
* Added display preview for HistoryDialogs
* Added preview with provider for each branch for HistoryItem
* Added previews for HistoryScreen
Created in-memory preferences construct for when its needed at top-level injection
* Fixed ktlint violations
(cherry picked from commit 447bcb28efa890ea1ebd73183b9ae25e8150be39)
Catches pages like what Shinigami is currently showing.
Also adjusts the banner to make it look more like part of the top AppBar so it
looks less like part of the webpage.
(cherry picked from commit c386d375dee2a846dd59395e6eda3a07311ed3d5)
This had a bunch of issues around split pages not showing up properly so things
end up appearing to be missing while reading.
It'd be more worthwhile redoing the reader viewers than trying to get this to work
properly. It'd be better to just enable the split pages on download instead.
Closes#8433
(cherry picked from commit 94cba9324c872b1f0caa3f4d385266f190a9b114)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt
# core/src/main/java/tachiyomi/core/util/system/ImageUtil.kt
This should be compatible with Aniyomi's implementation.
Related to #1857
Co-authored-by: jmir1 <jmir1@users.noreply.github.com>
(cherry picked from commit 72024aa44af1622fd148b859c8cea0c3404dc370)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupConst.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
Except now it's just an on/off toggle for relative up to a week.
(cherry picked from commit 56d2464870cbd59f1e67dab7cf2a359bddfa0f41)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/presentation/updates/UpdatesScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/updates/UpdatesTab.kt
Also limit the dates we look at to most recent 10 distinct dates only. Closes#9930
(cherry picked from commit 6663abebaf69241741d0702331857951834ba806)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt
These are basically 1-to-1 replacements for the existing RxJava APIs.
This will make the initial migration off of RxJava simpler. We'll
revisit the actual call flows in followup versions of the API.
(cherry picked from commit 26c5d761da4ba577481f41e63f03952b8a6c323f)
# Conflicts:
# data/src/main/java/tachiyomi/data/source/SourcePagingSource.kt
# source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSource.kt
# source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/online/HttpSourceFetcher.kt
Not sure if this will return to the download queue screen, you really
shouldn't be downloading a ton of stuff at once anyway?
(cherry picked from commit 1668be85875522721ee971afac4b46aa7da343c6)
# Conflicts:
# app/src/main/res/values/styles.xml
We use the application ID now to ensure uniqueness if the same folder is selected
between different app versions/forks. This will make more sense once storage
settings are unified to a single location.
Also changes the file extension while we're at it so people stop accidentally
ungzipping it.
(cherry picked from commit cc018cee182f880ebfe07e45809a98d0f6d73220)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/Backup.kt
Should be better at incremental builds.
To format, run `./gradlew ktlintFormat`.
(cherry picked from commit d29b7c4e5735dc137d578d3bcb3da1f0a02573e8)
# Conflicts:
# buildSrc/src/main/kotlin/tachiyomi.lint.gradle.kts
# data/src/main/java/tachiyomi/data/manga/MangaMapper.kt
# domain/src/main/java/tachiyomi/domain/library/model/LibrarySortMode.kt
# domain/src/main/java/tachiyomi/domain/library/service/LibraryPreferences.kt
# domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt
# presentation-core/src/main/java/tachiyomi/presentation/core/components/CollapsibleBox.kt
Implemented as an intermediate step in the existing Global Search share intent workflow.
If any source manages to resolve the URI (e.g., a URL, a slug, etc.), the resolved SManga entry
is directly opened. If nothing gets resolved, continue to a Global Search.
(cherry picked from commit 6d9a8a30e974574b8d92ba478333e6f62b0de2e2)
Closes#9834
Individual tracker implementations already handle setting it too on update.
(cherry picked from commit 8a6a104987738c7251097f172d24aa7235a86e96)
* 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