Issues:
- Apache implementation relies on methods unavailable on lower Android API levels
- Using input stream implementation doesn't seem to read some files properly, but using
ZipFile implementation still requires reading the entire thing into memory
(cherry picked from commit 6f59c6c6bb12f1ef123abd418001c7a86d43ef7a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
* Initial Implementation of encrypted CBZ archives
* changed a preference key to correct Syntax, changed a function name and changed ComicInfo padding length
* Update app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
* Update app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
* add necessary imports
* fix indentation after merge conflict
* Update app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
* fix indentation and add imports
* collect preferences as states
* test if password is correct in ZipPageLoader
* added withIOContext to function call
* added encryption type preference
* implemented database encryption
* added proguard rules for sqlcipher and generate padding length with SecureRandom
---------
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
Apparently they die if you rename a worker class.
(cherry picked from commit d25ba23079e72d1cff05bfcd00b5f9830a086821)
# Conflicts:
# app/build.gradle.kts
Includes side effects:
- No longer need to restart app for user agent string change to take effect
- parseAs extension function requires a Json instance in the calling context, which doesn't necessarily need to be the default one provided by Injekt
(cherry picked from commit 93523ef50b80ef294866bfb0da54e236cdf2d9f6)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt
# core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
# core/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt
# domain/build.gradle.kts
# source-api/build.gradle.kts
* Rework the wheel picker
doesn't need for the animation to stop to change the value
* fix
---------
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit be4072c86b9251bb7110f873c9332a2890ca69ef)
# Conflicts:
# .github/renovate.json
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
No more trampolining, and stuff.
It's pretty much straight copy-paste from the service, with
some changes related to cancellation handling. Manual updates
will also runs with workman job so auto update work
scheduling need some adjustments too.
Bumped version code to re-enqueue auto update job with the
new spec.
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit ef9dacde79b1803ec117aae4ea948194b6394605)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
Move Widget to seperate module
- Create a core module for presentation. Widget and App will share some resources and hopefully composables
(cherry picked from commit 12e41b6e6f3b5d95d19e1caa6c9fbe5eb6c9749c)
To keep the commit from being 100+ files the interactors wasn't moved.
The domain module like the data module uses `tachiyomi` instead of `eu.kanade.tachiyomi` for package names
(cherry picked from commit d3a73fc22849a915483bea03fcd7c20834b1f4d8)
# Conflicts:
# app/src/main/java/eu/kanade/domain/category/interactor/SetSortModeForCategory.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* Fade transition between main navigation tabs
* Shared axis X between screen stacks
Activity transition is using a "close enough" shared axis X xml animation
(cherry picked from commit 82a3a98a5ae7153d5edb2bcef7a13d7474e24e03)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
This moves the banners to the root composable and so eliminates the need to
track the app states in every screen.
(cherry picked from commit d97eab03283ea8b686ffa007bfc69224348b24f1)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/MoreScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
includes:
* Use coroutines in more places
* Use domain Manga data class and effectively changing the state system
* Replace deprecated onBackPress method
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit f7a92cf6ac58cae26b09b02578318e12cd888f4c)
# Conflicts:
# .github/renovate.json
# app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt
The reader still uses it, but we just move stuff to there.
(cherry picked from commit 5313a5d5d246bde7df78d43e6704c5a3d5140c23)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseRxActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/base/presenter/BasePresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
* Uses Voyager for navigation.
* Replaces every screen inside settings except category editor screen since it's
called from several places.
(cherry picked from commit 890f1a3c7b0f2ceefa86a77cb40c11567e2b5a46)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt
- Remove M3 styling from search toolbar
- Use secondary alpha for subtitles for Sources and Migrate items
- Update some content descriptions
(cherry picked from commit 23bfa1f18f615ba39be42f62cd7b337a6c51bc8e)
This allows us to swap out the implementation in the future and on different platforms
without major changes to the extensions themselves.
(cherry picked from commit 7be68639107caecea879dc05edb92d81a4689a5a)
# Conflicts:
# core/build.gradle.kts
* Setup Baseline Profile
Adds Baseline Profile generator and startup time test.
Readme included in macrobenchmark module to run the generator.
* changes
(cherry picked from commit 3b623964421b6bc196bcf751f920975c47884326)
# Conflicts:
# app/build.gradle.kts
# gradle/androidx.versions.toml
* Use 1.x preference abstraction
- Uses SharedPreferences compared to 1.x impl which uses DataStore but it breaks all settings screens currently
- Move PreferencesHelper to new PreferenceStore
- PreferencesHelper should be split into smaller preference stores and be in core or domain
- Remove flow preferences as new PreferenceStore handles changes for us
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
* Fix PreferenceMutableState not updating
* Fix changes not emitting on first subscription
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
(cherry picked from commit 0086743a5311c22fb8c07f596ab5de384862a68a)
# Conflicts:
# app/src/main/java/eu/kanade/domain/source/interactor/GetEnabledSources.kt
# app/src/main/java/eu/kanade/tachiyomi/App.kt
# app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt
# app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
# core/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt
- Defaults to every 12 hours
- Minimum number of backups is now 2, just to offer some level of redundancy in case something happens
- If it's missing storage permissions, it'll fail but that's the user's loss if they somehow haven't granted that permission yet
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt
* Extract translation from app module
- Prep for further extraction to modules in the nearish future
* Subproject .gitignore
(cherry picked from commit d5c207d8a3fae9aa42f39a008454696e2d8b2e06)
# Conflicts:
# .gitignore
Item list is not changed as currently there is no fitting Compose component to
replace the drag-drop behavior.
(cherry picked from commit fb9791f5976b9a877adeb656e2decfc4d77420ff)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadHeaderItem.kt
* Tweak flag classes for Library
- Add interface for Flag and Mask
- Merge Sort Type and Direction into one class
- Use custom serializers for preferences
- Mainly to not break the old
* Review changes
(cherry picked from commit 880407442c598d1b63db8be43f4848550dc17ff1)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/domain/category/interactor/SetDisplayModeForCategory.kt
# app/src/main/java/eu/kanade/domain/category/interactor/SetSortModeForCategory.kt
# app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceItem.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortDirectionSetting.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt
The abstraction was useful for handling 2 systems, but it's no longer needed. Cleaning it up will make migrating to domain models easier down the line.
(cherry picked from commit a2bb81b7db457c3927eaa1f03416a9b07985842b)
# Conflicts:
# 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
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupFlatMetadata.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupMergedMangaReference.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupSavedSearch.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchMetadata.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchTag.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/metadata/BackupSearchTitle.kt
- Move Pager to Compose
- Move AppBar to Compose
- Use Stable interface for state
- Use pills for no. of manga in category instead of (x)
(cherry picked from commit 2b8d1bcc02994e75e1479b037ef50eb84ae674d7)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/components/LibraryComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryCoverOnlyGrid.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
When using SQLDelight and Storio at the same time
(cherry picked from commit 891406cc7fbf9b449f306222e16b041b9ba8a96c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt
Considering we never run or update them, they're not providing any value right now.
Kept the chapter recognition tests and bumped to JUnit 5.
(cherry picked from commit 4d23f35b9d4cb4491811823f1d1dd3b5e5cc4304)
# Conflicts:
# app/src/test/java/eu/kanade/tachiyomi/CustomRobolectricGradleTestRunner.kt
* Migrate History screen database call to SQLDelight
- Move all migrations to SQLDelight
- Move all tables to SQLDelight
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
* Changes from review comments
* Add adapters to database
* Remove logging of database version in App
* Change query name for paging source queries
* Update migrations
* Make SQLite Callback handle migration
- To ensure it updates the database
* Use SQLDelight Schema version for Callback database version
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
(cherry picked from commit b1f46ed8302411fbd884bbc3c26fe28a378fd91a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/tables/CategoryTable.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/setting/database/ClearDatabasePresenter.kt
# build.gradle.kts
* Migrate History screen to Compose
- Migrate screen
- Strip logic from presenter into use cases and repository
- Setup for other screen being able to migrate to Compose with Theme
* Changes from review comments
(cherry picked from commit c475acd1eaf9f1fd9394f126a8a6f3c0daf52048)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/App.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
# settings.gradle.kts
* Recreate Backup worker with IS_AUTO_BACKUP_KEY flag
* Extra safety net to not delete backup folder
(cherry picked from commit 86016de6cbca0c83e15a05ca822abe450374d26b)
# Conflicts:
# app/build.gradle.kts