Commit Graph

367 Commits

Author SHA1 Message Date
AntsyLich d6252ab770 Address spotless lint errors (#1138)
* Add spotless (with ktlint)

* Run spotlessApply

* screaming case screaming case screaming case

* Update PagerViewerAdapter.kt

* Update ReaderTransitionView.kt
2024-08-19 18:11:39 +06:00
FooIbar daa47e0493 Fix some issues when reading/saving images (#993)
* 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
2024-07-08 16:02:50 +06:00
FooIbar 239c38982c Refactor archive support with libarchive (#949)
* 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
2024-06-26 20:54:25 +06:00
Radon Rosborough 7ec2108812 Massively improve findFile performance (#728)
* Massively improve findFile performance

* Update libs.versions.toml

---------

Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>
2024-05-04 22:40:41 +06:00
AntsyLich e55e5f6f64 Remove some legacy folder/file name lookup for download
Related to #705
2024-05-04 22:27:51 +06:00
Jobobby04 a08e03f5cb Fix multiple issues regarding sources loading too late 2024-03-17 19:44:22 +06:00
Shamicen 4bfc5e7b51 Made some changes to ComicInfo metadata (#459)
* 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>
2024-02-29 23:57:39 +06:00
AntsyLich b2d22f86c6 Lint 2024-01-29 23:09:09 +06:00
AntsyLich aa498360db Move :core to :core:common 2024-01-29 15:20:21 +06:00
AntsyLich 39407407f2 Remove usage of .not() where possible 2024-01-21 19:40:42 +06:00
Caleb Morris 7292dadd5f [download-cache] Fixed init logic to skip when cache file is missing (#10362)
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
2024-01-11 18:23:18 -05:00
arkon 83130f9bf9 Try to show actual path in invalid location downloader notification
Instead of the class/hashCode, which doesn't mean much to a user.
2023-12-31 23:33:10 -05:00
arkon 2d7650537d Address some build warnings 2023-12-25 16:31:40 -05:00
arkon 19f0175a56 Don't use localized numbers for downloaded image filenames
Probably fixes #10258
2023-12-22 19:13:06 -05:00
Ivan Iskandar f9b57800b1 DownloadJob: Network check changes (#10242)
Mostly pulled from WorkManager
2023-12-17 09:57:55 -05:00
arkon 36f400d542 Fix download indexing with changed storage locations
Fixes #10218
2023-12-15 18:44:37 -05:00
Ivan Iskandar 8779b263ab Downloader: Don't queue chapters on GlobalScope (#10217)
This fixes auto-download on library update not working on certain cases.
2023-12-07 22:17:01 -05:00
arkon ccadfc8fe5 Force recreate download index cache on upgrade
Fixes #10187
2023-12-03 14:58:08 -05:00
arkon 3aead3a2a9 Clean up startDownloadNow function a bit
Fixes #9330, I think. If it was even still an issue.
2023-12-03 14:26:44 -05:00
Ivan Iskandar 24e1b4034e Move workers to foreground service context a bit more safely (#10202)
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.
2023-12-02 11:46:59 -05:00
Ivan Iskandar 8ce8b60092 Migrate downloader service to WorkManager (#10190) 2023-11-29 16:34:07 -05:00
arkon e41668862f Ignore casing when looking for some files/folders 2023-11-28 08:59:34 -05:00
arkon a74a689c90 Update UniFile
Which has more correct nullability for some methods and case insensitivity for listFiles where possible.
2023-11-27 22:21:40 -05:00
arkon 27c4db752c Actually use configured storage location for local source
Fixes #10178
2023-11-26 16:24:37 -05:00
arkon 46aeab9a7a Add extensions for handling UniFile name/file extensions 2023-11-26 16:04:37 -05:00
arkon 21ae04d25d Minor download location cleanup 2023-11-25 16:51:32 -05:00
arkon a5c9469698 Avoid crashing if storage directory can't be read
e.g. when first launching and there's no storage permissions yet.
2023-11-25 12:40:09 -05:00
arkon 1fbf8ca079 Use unified storage location for automatic backups 2023-11-19 16:08:24 -05:00
arkon 695813ef7d Add unified storage location setting
Currently only using it as a replacement for the downloads location.
2023-11-19 16:04:28 -05:00
arkon 0d1bced122 Replace remaining Android-specific strings
Also renaming the helper composables so it's a bit easier to find/replace everything
in forks.
2023-11-18 19:41:33 -05:00
arkon 46e734fc8e Migrate to multiplatform string resources (#10147)
* Migrate to multiplatform string resources

* Move plurals translations into separate files

* Fix lint check on generated files
2023-11-18 13:54:56 -05:00
arkon 953f5fb025 Lint fixes 2023-11-05 09:14:57 -05:00
arkon 1d144e6767 Restrict line length with ktlint 2023-11-04 23:28:41 -04:00
arkon 26c5d761da Add more replacement suspend functions for source APIs
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.
2023-09-08 22:58:46 -04:00
arkon c06beac660 Better ignore irrelevant files when indexing downloads 2023-08-24 22:41:22 -04:00
arkon ef7b285151 Minor refactoring 2023-07-16 19:18:38 -04:00
Shamicen fcfa62f220 Better handle decimal chapter numbers and add categories in ComicInfo.xml files (#9604)
* Serialize whole chapter numbers without decimal point and add library categories to genre

* added Tachiyomi specific ComicInfo Category field

* lint

* implemented requested changes
2023-06-23 17:56:01 -04:00
arkon 8735f3566f Fix bookmarked chapters being deleted after manually marked as read
Fixes #9520
2023-05-27 18:30:59 -04:00
Two-Ai 3ae1e37c40 Replace RxJava in Downloader (#9256)
* 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.
2023-05-24 18:02:27 -04:00
Ivan Iskandar 73118d4af7 DownloadCache: Fix freezing on initial loading of cache file (#9523) 2023-05-19 22:06:06 -04:00
Two-Ai c27bf4e866 Minor Downloader cleanup (#9511)
* Inline completeDownload

* Consolidate queueState updates in removeFromQueue

* Inline post-download steps into downloadChapter
2023-05-19 17:16:32 -04:00
arkon fb38d30775 Avoid attempts to renaming download dirs if name hasn't actually changed
Maybe fixes #9503
2023-05-14 12:24:40 -04:00
Two-Ai bbe0ab1dd0 Fix delay between URL fetch and image download (#9452)
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.
2023-05-05 22:17:51 -04:00
Two-Ai cb2d43c0d1 Ensure final download status is always set (#9453) 2023-05-05 22:17:05 -04:00
Pauline 41cc1fe723 Fallback chapter name if it ends up as blank (#9220)
* 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
2023-04-22 11:11:56 -04:00
arkon 1986042277 Skip POST_NOTIFICATIONS permission check for now
Fixes #9265
2023-03-26 12:34:32 -04:00
arkon cb4699a5bb Bump dependencies 2023-03-22 22:58:42 -04:00
arkon ac0596a53d Revert "Always attempt to split tall images when downloading"
This partially reverts commit 2769525b2c.

Keeps the change to silently ignore spliting errors since it falls back to
the original images in those cases.
2023-03-20 08:45:36 -04:00
arkon 3cca460282 Misc cleanup 2023-03-19 22:38:14 -04:00
arkon 7d8a865cac Simplify some of the notification builders 2023-03-19 16:24:37 -04:00