- Extension being marked as not installed instead of untrusted after updating with private installer
- Extension update counter not updating due to extension being marked as untrusted
- Minimize `Key "extension-XXX-YYY" was already used` crash
(cherry picked from commit 21145144cdf550aa775047603e06e261951ebc42)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
(cherry picked from commit 077b673c0aaa78cf94356cdfc43a4730e5b1f787)
Also remove a leftover of scoped storage adaptation.
(cherry picked from commit f27ca3b1b2f92258c213bca6b27d8eff4c7363ad)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/components/MangaBottomActionMenu.kt
(cherry picked from commit 5895e78b398b8d3b3c58cb742f2511f20c8103d1)
- Preview version now name Beta, use different package & repo
- Drop syDebugVersion, use commitCount
- Fix Firebase analytics for both Release & Preview build
- Create separate variant for Preview build instead of using syDebugVersion
- Preview version showing changelog_debug.xml
- Release version showing changelog_release.xml
* 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>
* Work in progress upcoming feature
* Checkpointing WIP upcoming feature
* Functional Upcoming Screen
* Rename UpdateCalendar to UpdateUpcoming
* Converted Strings to resources
* Cleanup
* Fixed detekt issues
* Removed Link icon per @AntsyLich's suggestion.
* Detekt
* Fixed Calendar display on wide form factor devices
* Added Key to upcoming lazycolumn
* Updated tablet mode UI to support two column view
* Updated header creation logic
* Updated header creation logic... again
* Moved stray string to resources
* Fixed PR Comments and query refactor
* Tweaks to query, refactored to flow, comments on calendar
* Switched to Date Formatter
* Cleaned up date formatter
* More Refactor work
* Updated Calendar to support localized week formats
* Fixed year format
* Refactored Header animation
* Moved upcoming FAQ
* Completed YearMonth Migration
* Replaced currentYearMonth with delegate
* Even more cleanup
* cleaned up alignment modifiers
* Click Handler and other refactors
* Removed Wrapped Content Height/Size/extra clips
* Huge Refactor for CalendarDay
* Another cleanup attempt
* Migrated to new mihon.feature.* module pattern
* changed access modifier
* A Bunch of changes from the next round of reviews
* Cleanups
* Cleanup 2
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 72222ad86d6fb328d20eead86c6357833d08c061)
# Conflicts:
# app/src/main/java/eu/kanade/domain/DomainModule.kt
# gradle/libs.versions.toml
* Migrated from Accompanist Webview to KevinZou WebView to preempt deprecation
* Removed old webview from version library
(cherry picked from commit ba9cfd867c028551c0b0740922c5130b14455c9f)
* 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)
* Migrated from Accompanist Webview to KevinZou WebView to preempt deprecation
* Removed old webview from version library
(cherry picked from commit ba9cfd867c028551c0b0740922c5130b14455c9f)
* 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
# Conflicts:
# app/src/main/java/eu/kanade/domain/extension/interactor/CreateExtensionRepo.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionApi.kt
While most Android skins are seemingly able to handle the millisecond
format, the documentation technically specifies seconds. This seems to
be causing issues on Samsung devices using the Samsung Gallery app,
which renders the millisecond timestamps as if they were second ones,
causing the dates to be set at some point in the year 56189.
This change should fix that issue on Samsung devices and have no real
impact on the rest.
(cherry picked from commit 0ea0138a73466af3d371a48e344753844e9bc3d8)
* Add option to reset custom manga info
* Remove extra line
* Update app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
---------
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
* 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>
* Change preferences containing passwords to appStateKeys
* Change versionCode to 65
* fix merge conflict and add instructions to get library back after migration
* 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 new line.
* chore: remove isSyncing from Chapter/Manga model.
* chore: remove isSyncing leftover.
* chore: remove isSyncing.
* refactor: remove isSync guard.
Just use it directly to 1 now since we don't have the isSyncing field in Manga or Chapter.
* Lint and stuff
* Add missing ,
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4ae9dbe52487185ef9ee25f58fabe5025bb2278b)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupChapter.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt
# data/src/main/java/tachiyomi/data/chapter/ChapterRepositoryImpl.kt
# data/src/main/sqldelight/tachiyomi/migrations/2.sqm
# domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt
* Fix#493
Fetch the current userid separately because shizuku always runs as the main user and would otherwise install and update for the main user
* Update app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 402e579a69391e7633754066eb8e6480bd9f247d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/extension/installer/ShizukuInstaller.kt
- Bulk selection to add to library & change categories of multiple entries all at once, everywhere.
- It can detect duplication being added and give option to allow/skip one by one or allow/skip all duplication.
- Also allow long-click to add/remove single entry to/from library, everywhere.
- It supports default category.
commit 7bca814a8d8481af148fbbe72a6e43623c701356
Merge: 3ee4f35aa 67534b391
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 14:26:29 2024 +0700
Merge branch 'feature/bulk-favorite' into develop
commit 67534b391ffad5a6586fb1c18394b25afc3b432d
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 14:24:00 2024 +0700
reuse method to add/remove single manga
commit f24b528c45b49286430286da6fc93a05c2917aa4
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 13:58:14 2024 +0700
reuse bulkSelectionButton as AppBar.Action
commit d026241d9b742f6acf64d0090a9e6e7be53923c6
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 13:26:46 2024 +0700
reuse Dialog composer
commit 7eb23481926ec981bece2e2e9ced87c795ef4eb8
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 07:20:58 2024 +0700
fix detekt
commit 9643b9d834257836300b69bcb95cd587a38e34e0
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sun Mar 10 00:07:18 2024 +0700
fix: won’t show dialog if skip all then selection list is empty
commit 7faafe9fb440175dcac065bc2963ba3637d10d38
Author: Cuong Tran <cuongtran.tm@gmail.com>
Date: Sat Mar 9 23:58:46 2024 +0700
no need using builder to create AppBarAction
commit 5564b366eb879407510a733128c26a73ad8d6f2e
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Sat Mar 9 18:26:58 2024 +0700
add BulkSelection to the rest of Migrate, MangaDex…
commit 804bbb3943463298ae0b6eec33c9d3457b2891c9
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Sat Mar 9 17:40:42 2024 +0700
migrate the rest to BulkSelectionScreenModel
commit 8e82fc1e87e1e246b7b676ba0fe7ef0c5bf1d016
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Sat Mar 9 11:00:40 2024 +0700
separate BulkSelection into standalone BulkFavoriteScreenModel
commit 94a127b94d67841339ebdc674e398144e515cd14
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 13:18:35 2024 +0700
improve: toggle selection mode when last item is unselected
commit ba0009409637f872f37ac407041f937c3afceda8
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 13:00:31 2024 +0700
renovate code
commit 2d92ff9181297cfe795149968fdcd7e898852792
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 12:25:27 2024 +0700
Feat: allow long click to favorite on GlobalSearch
commit a24bb06a2a66dcd473c50728b04dc4d6118d0085
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 11:45:48 2024 +0700
Bulk favorite for GlobalSearchScreen & MigrateSearchScreen
commit 1d844ac74e356a43211c752442cb4279aea30b6f
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 11:29:58 2024 +0700
renovate: move SelectionToolbar to its own component
commit 62cb90d74c2bde7f7e824de277a3bf6e0256cadc
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Mar 7 09:26:40 2024 +0700
Fix: Won’t try call favorite if none selected
commit d2ef151c95a4432eddd3848b8e2e102dfd683681
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 18:27:54 2024 +0700
Allow/Skip one by one
commit 5e138f701ed66b6c18ae1c7a9d58dae482c211e0
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 15:42:21 2024 +0700
Allow skip duplicates
commit 9ac7a0e393d5aa78d77afde307263a85c8fa051c
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 14:24:52 2024 +0700
Bulk selection mode for BrowseSourceScreen
commit 9749adca106c3fb911d1b6808f000f9e16008585
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 14:06:12 2024 +0700
rename
commit 4b5e5105976ca3e488979b93043530a678a36e9c
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 12:34:01 2024 +0700
Bulk selection for SourceFeedScreen
commit 7775c65af0fd957d020acbccd2bb42073ebcba11
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Wed Mar 6 12:21:55 2024 +0700
Use topBar action to add favorite instead of bottomBar
some minor name changes
commit 66417b7adffede1c92e1dbd75b2eac0cc8b9a13c
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Tue Mar 5 16:32:21 2024 +0700
Allow bulk-favorite default category
commit 0870a9db3c1986c5ccab641bc77b8a0a9cf47017
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Tue Mar 5 15:40:02 2024 +0700
Hide BottomNav when in selection mode
commit 3865c6d467ca0c63be5b387fcac9e9be5a096125
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Tue Mar 5 15:35:58 2024 +0700
Selection:
* Clear selection after set Favorite
* Keep selection when editing categories
commit e01a5c5d35f226133d15b7ed800688bf442885bc
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Tue Mar 5 15:25:34 2024 +0700
Allow add to favorite even when no category available
commit a4556058c86801eaabf7bbfae58cdc40af95f467
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Mon Mar 4 18:30:44 2024 +0700
Set Favorite & Libraries OK now
commit 7e045cb23b2d6da58f0f71f9edcf0c2a2fc60038
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Fri Mar 1 16:40:32 2024 +0700
handle back button
commit 8e3915431e0d461d45c34fa0ca9188bbdc074203
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Fri Mar 1 16:09:00 2024 +0700
shade for selected items
commit d89b7bffb5161498bd9e7ebfd26aa3731e808361
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Fri Mar 1 14:33:32 2024 +0700
Toggle and toolbar count
commit 1ea3a4c5496ca0d002fdbafde2ce913fd28c1987
Author: Cuong M. Tran <cuongtran.tm@gmail.com>
Date: Thu Feb 29 18:36:57 2024 +0700
selection list & toggleSelection/clearSelection
Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com>
(cherry picked from commit f72b6e4d7c1f2f93d705402e4d80c94160bef54d)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/App.kt
# app/src/main/java/eu/kanade/tachiyomi/data/coil/TachiyomiImageDecoder.kt
* Made some changes to ComicInfo metadata
The web field now contains a " " separated list of source and tracker urls.
The translator field will now use the source name if the scanlator field is empty.
* lint
* use already existing source instance
* made translator not nullable
* implemented requested changes
created new Mihon exclusive ComicInfo source field and populated it with SourceName
reverted previous changes to translator field
* Update core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Update app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Update app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Update app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
* Update app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit 4bfc5e7b51452a1a9cac3a3644e6343d1c47aa95)
# Conflicts:
# app/src/main/java/eu/kanade/domain/manga/model/Manga.kt
# app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
# core-metadata/src/main/java/tachiyomi/core/metadata/comicinfo/ComicInfo.kt
* 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
* Fixed extra header introduced in 7ff95e2
* Removed parentheses to make detekt happy
* Updated relative date display for dates in the future
* Small cleanup for header creation logic
* replaced "and" with "&&" for better formatting
(cherry picked from commit 07f963d5ae16c3c8d7be025a7e9439ad2110ac71)
* Fix DelayedTrackingUpdateJob spam on update errors
DelayedTrackingUpdateJob would start spamming when it encountered an
error (e.g. a tracker has an issue) and never stop.
This seems to stem from a circular dependency between the Job's
`doWork` and TrackChapter's `await`.
TrackChapter sets up a completely new instance of the
DelayedTrackingUpdateJob if any Exception was thrown during the track
update.
This causes the Job to get replaced (as per the WorkManager's set
ExistingWorkPolicy).
Because of this, the guard clause at the start of doWork would never
trigger, as all instances of the Job would report being the 0th try
(because they were completely new instances).
This simple fix introduces a boolean `isRetry` parameter to
TrackChapter's await method, which is set to `false` by default.
DelayedTrackingUpdateJob however sets this parameter to `true`, which
means TrackChapter won't try to set up the Job again.
* Rename isRetry parameter to setupJobOnFailure
This also inverts the logic, so true & false were swapped.
(cherry picked from commit 617bf491eee1d1010dc23c3f6df5d148700feb44)
This function is deprecated starting with API 34 "UpsideDownCake" and
should be replaced with `overrideActivityTransition`.
(cherry picked from commit 840b647b4b4e738fac546b7437dd5449679232a1)
* 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
* Minor refactor of theming when expressions
Avoids triggering detekt's CyclomaticComplexMethod warning because of
too many when branches, which would happen with one more theme being
added in these two locations.
In TachiyomiTheme, the Monet theme is separated because it requires
the current Compose context to function. The other themes do not and
are delegated to a Map.
* Implement requested changes
- moved themeResources out of the ThemingDelegate interface
- replaced single condition when with if expression
(cherry picked from commit 96c236e5c38248c875f2ac7596cd51845aa651ea)
* Add custom thumbnail url. Support backup & restore
- add custom thumbnail url in edit info/custom
- include it in backup n restore
* increase chop char
* edit chop char again to match screenshoot
* tweak truncating middle part
* apply edited cover to history, updates , others
* simplify placeholder logic
---------
Co-authored-by: jobobby04 <jobobby04@users.noreply.github.com>
* Fix extension install not registering
* fix duplicate key compose error on extension update
* fix doubling of extension after update
* not needed
(cherry picked from commit 79f46b25f663c7f49fbd4e292f0f5f210e266dc9)
* Add click-to-copy extension debug info
Adds some debug info about an extension to the user's clipboard when
tapping the logo/name/package name area at the top of the details
screen. Modeled after the debug info from the About screen.
Closes#168.
* Fix linting failure
* Slight cleanup
* Address detekt
---------
Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
(cherry picked from commit b71c793fad46b91309da5d505ff49f99847b4f68)
* replace the windowInsetsPadding for navigationBarsPadding + statusBarsPadding
* Setting decorFitsSystemWindows = true to fix ui bug on Android 11
(cherry picked from commit 915a9671514b25fdd62912a5154aca221470c8a7)
- make it behave like the one on more -> setting -> reader
Co-authored-by: Riztard <16263232+Riztard@users.noreply.github.com>
(cherry picked from commit 9cc0c4e0359cf06ef6257fc289f05a6f4fb9cf6e)
* replace the windowInsetsPadding for navigationBarsPadding + statusBarsPadding
* Fixing bug in the MultiChoiceSegmentedButtonRow
* Rollback file
(cherry picked from commit 1dd130df9ee389fbacb200ee7a13b6d625b372fc)
* `score` to Double
* `tracker_id` to Long
* `last_chapter_read` to Double
* `total_chapters` to Long
* `status` to Long
Additional changes for Komikku/TachiyomiSY version
* `score` to Double
* `tracker_id` to Long
* `last_chapter_read` to Double
* `total_chapters` to Long
* `status` to Long
* `score` to Double
* `tracker_id` to Long
* `last_chapter_read` to Double
* `total_chapters` to Long
* `status` to Long
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/track/BaseTracker.kt
- Shortcut to settings from extensions tab
- Don't show error toast anymore if nothing's loaded
- Ability to copy extension repo URL to clipboard
(cherry picked from commit 02e50411de8e233dfd0f2bd9671f39a4e71d297c)
There are several possible causes of the cache file to not exist, including user
action. By skipping these couple steps during initialization when the file is
missing, a renew action is allowed to start and the cache will rebuild and
hopefully work as expected.
Simple fix for #10360
(cherry picked from commit 7292dadd5fbbf9b394f047f2207f4de13c8229d0)
refactor: use transaction to go brr.
This improve the restore speed on fresh db and non fresh db.
Signed-off-by: KaiserBh <kaiserbh@proton.me>
(cherry picked from commit b1067b942ef5c8d53e5ab838ef078789b9c0627a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt
The TachiyomiTheme introduced a dependency-injection construct that didn't
exist at the time of rendering previews, so I've changed the preview function
to use a preview version of the theme that uses declarative configuration
over dependency injection
(cherry picked from commit cf6f7c521cde88f20c1eef3a6a63a2b73601523f)
- 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
(cherry picked from commit 9c899e97a97480545d022974ffd3ea1248634155)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
This reverts commit 9c120e623193271971448fb03665a73dff4f85cb.
Potentially too buggy for a stable release for now.
(cherry picked from commit dba5e6fbfdf65f0482f681b22defb759e9b32437)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt
These were barely used/maintained, so just killing them.
Changelog menu item still exists to take you to the relevant git history.
(cherry picked from commit e0a0942015accc217a881739abf8df9d74eab6da)
Occurs if manga.lastUpdate has never been set yet.
(cherry picked from commit 22589a9c3056312dcbd0dfca08b53987cbc4a73d)
# Conflicts:
# app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt
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.
(cherry picked from commit 6ab8e1e73dbcc65d693dd2ed2680c950139dadde)
- 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
(cherry picked from commit f0a0ecfd4a5c8ee85fdcf7e92dc9a0079ef40cde)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/RestoreOptions.kt
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.
(cherry picked from commit f0710df35696c1f6cf7bb5371dfd6ad91d53fae1)
For home screen tabs, Navigator screens and most dialogs
(cherry picked from commit 9c120e623193271971448fb03665a73dff4f85cb)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt
I didn't realize the package name change would break compatibility with forks
that still have the old package names...
(cherry picked from commit 4b208fc7ce95fb3b3746446da54351bcead0533c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupCreator.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/create/creators/MangaBackupCreator.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
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/restorers/MangaRestorer.kt
- 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
(cherry picked from commit fca4f251227f983d8313eda546f35644692f39cb)
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.
(cherry picked from commit bfb0d31ff61a6609cdf8ca421d08cbb4236fc5af)
- Show bar representation of used/total space
- Handle all mounted storages
- Also included a bunch of unrelated immutables changes, sorry
(cherry picked from commit f31bc47757b3792f92c2c8721739b5e2d91b825d)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt
Related to #3136
(cherry picked from commit 83a67feb48c4e40994a334520c907f71d2fbf75e)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/restore/BackupRestorer.kt
Should probably wait for sources to definitely be loaded first, but that's
sort of a bigger change and needs to be lifecycle-aware.
(cherry picked from commit e36a2c68f112f98155f5eea859a59a13cc22e168)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesScreen.kt
Some behavior changes:
- It prioritizes new entries, then anything more recently updated
- It copies the more recently updated entry's metadata (description, thumbnail, etc.)
(cherry picked from commit 58daedc89ee18d04e7af5bab12629680dba4096c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt
# app/src/main/java/eu/kanade/tachiyomi/source/model/SMangaExtensions.kt
We already check in the settings screen where it's triggered, but who knows.
Also addressing some errors for method calls that require SDK 26+ (but don't
fail the build, somehow?).
(cherry picked from commit 1ef01b53f2e740b493e5a94cd4ac011ab25b3ace)
Can just open it and delete from whatever gallery app the user has which has way
more functionality.
Closes#8327
(cherry picked from commit 720169dce3b78e3c761e2c80c1fc6f6fab67b791)
- Opposite transition when going back a step
- Don't allow skipping (I don't want to deal with an unset storage location in other places)
(cherry picked from commit cc56fde9fe6408e5dca4c752acc2ba6478291cce)
Goes to tracker settings to log in if none are set up.
(cherry picked from commit 3a0b3de1754452cc0e10426c79820baa74d30b63)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreTab.kt
Related to #8327
Deleting doesn't seem to do anything still, but at least doesn't throw an exception.
Also removed behavior of dismissing notification after sharing/deleting pages/backups
in case you want to do something again afterwards. Users can manually dismiss the
notification whenever they want.
(cherry picked from commit 1f259f92986c3e4c86d6068eec257f6bd32f69b4)
The system will crash the app if the worker that calls setForeground() finished
before the service runner be able to call Service.startForeground(). This edge
case is not handled by WorkManager and there is no way to check if the required
calls are done.
So here we suspend the worker by an arbitrary duration assuming the transition
to foreground service is done by then.
(cherry picked from commit 24e1b4034efe24cc042404e2237f01ca1f2cd9b3)
Need to convert some services into WorkManager jobs before going to 31 and higher.
(cherry picked from commit e22eebfd02e28eb260273d987d60c216aa4a2100)
Requires adjusting some file reading to first copy to a temporary file
in cache that we have permissions to read from. This is only applicable for things
like ZIP files where we need an actual File rather than just some Android content
URI shenanigans.
(cherry picked from commit 4fcdde4913df28bbd678ae1be4a2971ed77179d3)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt
# source-local/src/androidMain/kotlin/tachiyomi/source/local/LocalSource.kt
Which has more correct nullability for some methods and case insensitivity for listFiles where possible.
(cherry picked from commit a74a689c9048cc67f4854678fbfefa361631a5e7)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
# source-local/src/androidMain/kotlin/tachiyomi/source/local/image/LocalCoverManager.kt
Don't round up notification percentage. Why show 100% when stuff is still updating.
Show same notification when hide notification content is enabled. Just exclude manga titles.
(cherry picked from commit ba10093ddca8d409e43f26a80ea1f485b7767a6c)
* MangaScreen: Fix close in action mode exists from screen
* L
(cherry picked from commit 300660492271752a3f75da4f158bd9b8e049a45b)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
We just always create up to 4 now to simplify it, given the addition of syncing
is going to make this section pretty busy.
(cherry picked from commit e3b70ca08d1c5a09a448891ff66102fd696d7098)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreator.kt
Still need to address most of them though.
(cherry picked from commit cb67f1de526e6120db363f67035966f365467912)
# Conflicts:
# presentation-core/src/main/java/tachiyomi/presentation/core/components/CollapsibleBox.kt
Allows us more flexibility in adding more options/explanations in the future.
(cherry picked from commit 00b2853d3daaa49a2b3bcada1596e094e8da5156)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupConst.kt
# app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreator.kt
Related to #3453
(cherry picked from commit 9e67abcc8a1e7ca90c0a92acc563e998a7a99886)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/reader/appbars/ReaderAppBars.kt
Text style to labelMedium and set secondary alpha to the whole row
(cherry picked from commit 5f34539525f93a92ca80f3b1fb9e71953b6758a1)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt
* Combining manga information into a function
* clean space
* indexes
* context
* clean
* textAlign for Tablet Mode
(cherry picked from commit d862d83511d6bc7dee53609bcac77c20b01bc795)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
* 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