Inline readImageHeaderSubscription in PageHolder
Inline readImageHeaderSubscription in PagerPageHolder and
WebtoonPageHolder by converting setImage() into a suspend function.
The image processing runs in the loadPageAndProcessStatus
continuation.
Use suspendCancellableCoroutine as a substitute for doOnUnsubscribe
in WebtoonPageHolder.
Closing openStream after the frame.setImage but before the PageHolder
is recycled causes the page display to fail for reasons that are not
currently understood.
Remove subscription handling from WebtoonViewer/WebtoonBaseHolder as
it is no longer used.
(cherry picked from commit ffa8c8fd0746863e08b839f9d91102fe6d5d7887)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
Inline statusJob into loadJob, using supervisorScope to load the page
and track status changes in parallel.
- supervisorScope does not complete until both the child loadPage
coroutine and statusFlow.collectLatest have completed.
- Cancelling supervisorScope cancels the child loadPage coroutine and
statusFlow.collectLatest.
- Use supervisorScope instead of coroutineScope to let status
collection continue if loadPage fails.
Inline progressJob into loadJob, using collectLatest's cancellation
to avoid cancelling the progressFlow collection explicitly.
- collectLatest cancels the previous action block when the flow
emits a new value. This means the DOWNLOAD_IMAGE
progressFlow.collectLatest gets automatically cancelled when
statusFlow emits a new state.
Convert launchLoadJob to suspend function, move job launch to caller,
and rename as loadPageAndProcessStatus.
(cherry picked from commit 4635e58405eedce0b49fc69f7ccb190a7c600da9)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
* 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
Same reasoning as removing app update check. It gets kicked off in the foreground now too.
(cherry picked from commit 2970eca9e4b56ede7549eb6d49841b7011fe0741)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
We already check in the foreground. If the app isn't being foregrounded at all, then there isn't much
point in checking for an update.
(cherry picked from commit 42954609b94e13d8fadbf1f3769e9f32fa9e8447)
# Conflicts:
# app/build.gradle.kts
# app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateJob.kt
* Move LibraryItem vars to constructor vals
* Convert LibraryItem to data class
Remove redundant equals and hashCode
* Remove unused LibraryItem.displayMode
* Simplify LibraryItem.matches()
* Align types in LibraryItem and LibraryBadges
* fixup! Simplify LibraryItem.matches()
(cherry picked from commit 7b118eba22b6c9caccf09cbd53f846869d5c6f2a)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt
Simplifies things and maybe discourages whacky downloading behavior?
Users can still range select in the chapters list to download custom amounts.
(cherry picked from commit f6e6a7ddf1d32a55da81344b1ae360e16e5560e4)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.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
* Misc cleanup
- Replace !List.isEmpty with List.isNotEmpty
- Remove redundant case in MoreScreenModel
- Drop no-op StateFlow.catch
- From lint warning:
> SharedFlow never completes, so this operator typically has not
> effect, it can only catch exceptions from 'onSubscribe' operator
* Convert DownloadQueue queue to MutableStateFlow
Replace delegation to a MutableList with an internal
MutableStateFlow<List>.
In order to avoid modifying every usage of the queue as a list, add
passthrough functions for the currently used list functions. This
should be later refactored, possibly by inlining DownloadQueue
into Downloader.
DownloadQueue.updates was a SharedFlow which updated every time a
change was made to the queue. This is now equivalent to the queue
StateFlow.
Simultaneous assignments to _state.value could cause concurrency
issues. To avoid this, always modify the queue using _state.update.
* Add Download.statusFlow/progressFlow
progressFlow is based on the DownloadQueueScreenModel implementation
rather than the DownloadQueue implementation.
* Reimplement DownloadQueue.statusFlow/progressFlow
Use StateFlow<List<T>>.flatMapLatest() and List<Flow<T>>.merge() to
replicate the effect of PublishSubject.
Use drop(1) to avoid re-emitting the state of each download each time
the merged flow is recreated.
* fixup! Reimplement DownloadQueue.statusFlow/progressFlow
(cherry picked from commit bd2cb97179de60dded147f1ec9cdb55f70f28e74)
* Show exception class in snackbar message
* omit IOException too
(cherry picked from commit 589bdba0b1538266b7786591046f88a1159cbb8c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* Simplify DownloadService wake lock handling
_isRunning is only modified in onCreate/onDestroy, so the listener
job is redundant.
* Drop superclass calls to Service.onCreate/onDestroy
From https://developer.android.com/guide/components/services
> Note: Unlike the activity lifecycle callback methods, you are not
> required to call the superclass implementation of these callback
> methods.
(cherry picked from commit aca65f13bb94b6c0c4a77a9d426491d3667f4a7d)
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)
Fixes#8962.
withTimeout throws a TimeoutCancellationException if the timeout
expires. To avoid crashing renewalJob when there are no extensions,
use withTimeoutOrNull which does not throw on timeout.
(cherry picked from commit 3a82b4d924ae7207f7d1c1b23d2a71a1e7d09258)
Fixup for e4bc8990 (#8955)
HttpSource.fetchImage() uses Call.asObservableSuccess(), which
cancels the call on unsubscribe. This causes the call to be cancelled
before it is used, leading to a "java.net.SocketException: Socket is
closed" when trying to use the response in putImageToCache().
To fix this, use Call.awaitSuccess() via a new HttpSource.getImage()
suspending function. This addition to source-api is only intended for
app use, so it will not be added to the extensions-api stubs.
(cherry picked from commit b4b3a4d2869fae7839b4b3111e289056e33cfea8)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
* Follow page status via StateFlow
Keep getPage subscription since it's needed to load the pages
* Replace PageLoader.getPage with PageLoader.loadPage
(cherry picked from commit 2ef1f07aaea0852c13a4eb4096ac96c8aa507c39)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
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
Fixes#8881
The actual issue is that the ViewModel migration actually differs between what the current `init` block
and previous `onSave` methods did; where the `init` block does not get triggered on saving the
instance on config changes.
Not entirely sure why onSaveInstanceState was explicitly avoided for config changes before, but we
just do it all the time now and end up updating the requestedPage with the current page.
(cherry picked from commit 2ebc8d9ae51f84b0f69dee603a5448a72013f734)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
* Make download function more clearer in manga screen
Maybe resolves#8879
* Minor cleanup
* Minor cleanup 2
(cherry picked from commit e28b0155801859f48a18bc1c5aacead54378c77f)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt
* Convert downloader Observable to flow
Uses `runInterruptible` to turn the blocking call to `queue.take()`
into a cancellable call.
Flow collection is ended by cancelling the scope in `recycle`. This
means the `HttpPageLoader` can't be reused after calling `recycle`,
but this was true with the `Observable` as well.)
* Convert load Observables to suspending function
Inlining the Observables allows for some simplification of the error
handling. Behavior should be otherwise identical.
* Convert cleanup Completable to coroutine
Uses global `launchIO`, not ideal but similar to previous behavior.
Can't be scheduled on the local `scope` as this runs after `scope` is
cancelled.
(cherry picked from commit e4bc8990fbe2aa4bc31977f1061bac0c70d7a58f)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
The underlying ZipFile is leaking. To fix, store a reference to the
ZipPageLoader and recycle it on recycle.
(cherry picked from commit 8c494f314cf77e54675f8d9742d50ed0ef94df59)
* Revert "Recreate reader settings when opening sheet (#8054)"
This reverts commit acb8ab15b2e73ba2f161eb201e93ba3a36df2867.
* Revert "Fix stacking of Settings menu in the reader on multiple taps (#8002)"
This reverts commit 30ac94181b2c410aedead964a815b080ef3e62ee.
* Fix reader settings sheet not updated
(cherry picked from commit 0861c5618c097f89bec75ffeed1359e345532d89)
* Move download indexing notification to this banner group
* Animate state changes
(cherry picked from commit e20c66b15671db75ed190c2967cdcc78c74db478)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
This is surfaced in recents on Pixel devices for example.
Docs: https://developer.android.com/guide/app-actions/assistant-sharing
Co-authored-by: Jays2Kings <Jays2Kings@users.noreply.github.com>
(cherry picked from commit 3749cee28f269aabe5ea18ffb62483a28d0c75e7)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
* Adds startBar slot in Scaffold to handle nav rail
* Consumes unneeded insets in settings
(cherry picked from commit ca500da4d899815112eadaa6a5f79c9b5e5766af)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/home/HomeScreen.kt
This one doesn't check navbar location before adding a scrim, doesn't really
matter since now no body component is being drawn below the system bar.
(cherry picked from commit 820ed6a46880af1e9390706dc9915f3c7d385c60)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.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
* Cleanup Page statusSubject and statusCallback
* Convert Page status from Int to enum
(cherry picked from commit 6ca32710be5bfed851ab695a0d9438c7ab609b24)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt
Fixes crash if opening from widget or notification when activity isn't already launched.
(cherry picked from commit 09cebf20f3ee150629fe3c62d3974180fec6f8a2)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.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
Some navigation janks will be dealt with when the migration is complete
(cherry picked from commit 94d1b68598692cc0ef981e2dfbf12303fa962f63)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/SourceSearchScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.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/BrowseSourceScreenModel.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt
* Use Compose on Global/Migrate Search screen
- Refactor to use Voyager and Compose
- Use sealed class for state
- Somethings are broken/missing due to screens using different navigation libraries
* Review changes
(cherry picked from commit f99b62a069e8e987318a0144090560795d59e3ff)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceCompactGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceList.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaScreen.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
Fixes#8632
The `library` map still contains the default category even when "empty".
(cherry picked from commit ac1bed38f93e6b8e51b6f8cc2dae97c7ccb5f9b6)
Some devices are throwing a SecurityException (calling getApplicationLocales) for some reason.
(cherry picked from commit 7e74949d38a8ea43120e672c61556419157a4af1)
It previously only attempted this after deleting a list of chapters, so it wasn't applicable
when deleting from Library or after unfavoriting an entry.
Closes#8594
(cherry picked from commit 5c37347cecc99582752ee500171e8480008c836e)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
feat: Implement copying of Manga URL to Clipboard
(cherry picked from commit ef3a6c80a7638209a5a41a0923bd9195380429aa)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt
Closes#8546
Also disable sound for the notification and cancel running indexing job if invalidating.
(cherry picked from commit 2d86f69caa79b17b000ec1139a4283f8e9d1db35)
* Tweak library selection
Also use the new `fast*` extensions functions in other places of library presenter
* Cleanup
(cherry picked from commit 3f34fa1f588d3b9a0562415d907e4ca6e01f7715)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
Tachi removes the downloaded chapter (if it exists) when you just cancelled a download from queue.
PR fixes that
Also removes redundant return
(cherry picked from commit ba2a528886c6ae29d0f46070df736497921346e3)
In case the cache hasn't actually been indexed yet. Maybe fixes#8438.
(cherry picked from commit f5873d70c640b9deb53a9a62281403b9a657e644)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadPendingDeleter.kt
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt
* Added kavita tracker
* Changed api endpoint since tachiyomi has it's own. Moved some processing to backend
* Bugfix. Parsing to int instead of float
* Ignore DOH, update migration and cleanup
* Fix Unexpected JSON token
modified: app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt
modified: app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaApi.kt
modified: app/src/main/java/eu/kanade/tachiyomi/data/track/kavita/KavitaModels.kt
* Apply code format suggestions from code review
Co-authored-by: Andreas <andreas.everos@gmail.com>
* Apply simplified code suggestions from code review
Co-authored-by: Andreas <andreas.everos@gmail.com>
* Removed unused dtos
* Use setter instead of function to get apiurl
* Added Interceptor
* Handle not configured/not accesible sources
* Unused import
* Added kavita to new tracking settings screen
* Delete SettingsTrackingController.kt to solve conflict
* Review comments
* Removed break lines from log messages
* Fixed jwt typo
* Merged enhanced services compatibility warning message to be more generic.
* Updated Komga String res to use new formatted one
* Added Kavita String res to use formatted one
* Apply suggestions from code review - hardcoded strings to track name
Co-authored-by: Andreas <andreas.everos@gmail.com>
Co-authored-by: Andreas <andreas.everos@gmail.com>
(cherry picked from commit 92b039fac7b2a74aa15380a171b2f2b73dc47371)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt
Also create comicinfo file inside chapter folder instead of manga folder since it also contains some chapter specific data
(cherry picked from commit 51c964de3aa370545899c7c3b38b3287cea13d1c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
Requires extensions to be updated to lib 1.4 to have proper URLs for some of them, which will
happen soon in the future.
(cherry picked from commit 262f8449b4369fde42cbd15d2a768e54461e84af)
* generate ComicInfo files at the chapter root and inside CBZ archives on chapter download.
* Update app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt
Co-authored-by: Andreas <andreas.everos@gmail.com>
* Improvements suggested by @ghostbear
* now creates ComicInfo files in normal chapter folders as well
use manga directly instead of converting it to SManga
truncate old files before overwriting them
Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
* remove empty line after resolving merge conflict
* fixes Serializer for class 'ComicInfo' is not found error
* some changes to comments and variable names
* Revert leftover changes to archiveChapter() function
* minor cleanup
* Changed Chapter to SChapter
Co-authored-by: Andreas <andreas.everos@gmail.com>
Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
(cherry picked from commit 4e628fe6de7a691fbab7960c5f9b750e563eb8a1)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
It wasn't really consistent with other notifications considering there's no
action to be taken in this state.
(cherry picked from commit a0f49b16c5b76d493857840c1012b9df7086f35c)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt
* Add back haptic feedback long tap to fav
- add back haptic when long tap on manga to add to library
* simplify
* Revert "simplify"
This reverts commit f4bd57315a3dbf35f5975233980304fa66807718.
* Revert "Add back haptic feedback long tap to fav"
This reverts commit 81486e30e9adf6a7e983b5e3f12bd5bc34083db1.
* cleanup
(cherry picked from commit 34aa4eb291747ccb268c28f5060481706d6c4915)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
We can probably clean up the same logic in the manga controller at some point too, but that stuff's messy.
Also fixes the spacing issue that the new icon introduced.
(cherry picked from commit 33e90d64497f920be825b803e1342a2e6c937111)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt
- Delay the initial emission of updates/sources/extensions lists instead of using a state flow. This hopefully avoids rapid initial recompositions that cause the LazyColumn key duplication crashes. (Closes#8371)
- Fix a NPE in BrowseSourcePresenter
(cherry picked from commit 5d1f79012e63403ac37309dd958244108e28a1a5)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesPresenter.kt
- Remove redundant chapter sorting logic when fetching next chapter(s)
- Remove redundant download queue checks (it'll handle already queued or downloaded items)
- Trigger download ahead when read >= 25% of chapter rather than 20%
- Rely on download cache when checking if next chapter is downloaded to avoid jank (fixes#8328)
(cherry picked from commit fc184f1cfa929328c41b0ec374503afe204d6c15)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt
* Add ability to open random manga
* Use `getMangaForCategory` instead
* Put it in overflow menu instead of using EFAB
* Partial review changes
* Merge remote-tracking branch 'refs/remotes/origin/patch-6' into patch-6
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
* Merge remote-tracking branch 'refs/remotes/origin/patch-6' into patch-6
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
* Wording changes
(cherry picked from commit f5451a68812f56d9427a9b771f6bed00f8fbd7e6)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt
# app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt
* Clean up strings and icons
* fix incorrect usages of label_more
* restore strings and reduce usage of android.R
* removing icon desc of FABs anyway as app's not for visual impaired users
(cherry picked from commit 4b60138d41ea33e5e4c3defb0dc626b599216f3f)
# Conflicts:
# app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/ExtensionsScreen.kt
# app/src/main/java/eu/kanade/presentation/components/MangaBottomActionMenu.kt
# app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
Since users seem to be confused now that the library loads before download info is shown...
(cherry picked from commit fde7bfa3d17ce2e02df5625836eb739aeaab7863)
* Fix "Download split" not working while using SD card
* Update app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt
Co-authored-by: arkon <arkon@users.noreply.github.com>
(cherry picked from commit 6e4a30e59352517346eb0f622424390a52fb95c0)
Simplifying it to just always be centered, which is what most Google apps seem to be doing anyway.
(cherry picked from commit ccc4144f3cc2264c3ae75d492983e9577f352af1)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt
* Use `Channel` in Download cache
Co-Authored-By: Andreas <6576096+ghostbear@users.noreply.github.com>
* Use Unlimited capacity
Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
Co-authored-by: Andreas <6576096+ghostbear@users.noreply.github.com>
Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com>
(cherry picked from commit 3b5b9a1ae5803466e9b18846aae6fcd16bf8a637)
Now that the updates and manga screen listen to download cache changes, it'll reflect the real states once deleted.
(cherry picked from commit d0bff298b7df3524f76434a3636bc196627cb613)
- Also fix concurrent accesses to main cache map
- Also debounce sources and updates list updates to maybe avoid crashing due to dupe LazyColumn keys
(cherry picked from commit 152eb5b95196a32ed120f4a57996c1958294bf7f)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesPresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt
Don't block on cache renewals, but notify library on updates so that the badges show up when ready.
We skip the cache when checking if a chapter is downloaded for the reader assuming that it's a
relatively low cost to check for a single chapter.
(Probably) fixes#8254 / fixes#7847
(cherry picked from commit 7e40680af02505f82fa3655d2d693092c6bd43a1)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt
# app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt