* Fix unsupported mime type error when saving images
Avoid using platform mime type map to get extensions as it may not have
all mime types we support.
* Fix jxl images downloading/reading
* Refactor archive support with libarchive
* Revert string resource changs
* Only mark archive formats as supported
Comic book archives should not be compressed.
* Fixup
* Remove epub from archive format list
* Move to mihon package
* Format
* Cleanup
* 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>
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
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.
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.
* Serialize whole chapter numbers without decimal point and add library categories to genre
* added Tachiyomi specific ComicInfo Category field
* lint
* implemented requested changes
* Rename removeFromQueueByPredicate to removeFromQueueIf
Follow-up to PR comment in #9511
* Make Download hashCode stable
Mutating pages would previously change the Download hashCode, which
breaks HashMap lookups.
* Convert Donwloader subscription to coroutine
Replace downloadsRelay with activeDownloadsFlow. Instead of managing
a PublishRelay independent from the queue, derive a Flow of active
downloads directly from the queue StateFlow. (This will allow
updating the queue without pausing the downloader, to be done in a
follow-up PR.)
When a download completes successfully, the downloads is removed from
queueState. This updates activeDownloadsFlow and causes the
downloaderJob start the download job for the next active download.
When a download fails, the download is left in the queue, so
queueState is not modified. To make activeDownloadsFlow update
without a change to queueState, use transformLatest and use the
Download statusFlows to suspend until a download reaches the ERROR
state.
To avoid stopping and starting downloads every time
activeDownloadsFlow emits a new value, maintain a map of current
download Jobs and only start/stop jobs in the difference between
downloadJobs and activeDownloads. To make sure all child download
jobs are cancelled when the top-level downloader job is cancelled,
use supervisorScope.
* Remove obsolete main thread references in Downloader
Thread safety of the queue state used to be guaranteed by running all
queue mutation on the main thread, but this has not been true for
some time. Since the queue state is now backed by a StateFlow,
queueState can be safely updated by any thread.
Fetch each source image URL immediately before downloading each image
instead of fetching all URLs and then downloading all images.
Source image URLs may change, so the downloader may fail if there is
too long a delay between fetching the image URL and downloading the
image.
* change the directory's name for a download when the chapter's name is only composed of numbers or is blank
* maj in case the chapter name is blank or empty
* clean code
This partially reverts commit 2769525b2c.
Keeps the change to silently ignore spliting errors since it falls back to
the original images in those cases.