Free and open source manga reader for Android.
This repository has been archived on 2024-06-08. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
Two-Ai bd2cb97179
Replace RxJava in DownloadQueue (#9016)
* 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
2023-02-07 22:13:19 -05:00
.github Release v0.14.4 2023-02-05 10:35:15 -05:00
app Replace RxJava in DownloadQueue (#9016) 2023-02-07 22:13:19 -05:00
buildSrc Create plugin for linting (#8942) 2023-01-18 22:33:56 -05:00
core Tweak Response.parseAs() to utilize intrinsics (#9047) 2023-02-07 22:10:28 -05:00
data Move more things around 2023-01-27 22:31:12 -05:00
domain Move some interactors to domain module 2023-01-27 22:37:17 -05:00
gradle Bump desugaring libs 2023-02-05 10:02:20 -05:00
i18n Translations update from Hosted Weblate (#8960) 2023-02-05 10:00:14 -05:00
macrobenchmark Move shared configuration to subprojects in root Gradle file (#8951) 2023-01-20 23:04:22 -05:00
presentation-core Move more things around 2023-01-27 22:31:12 -05:00
presentation-widget Move more things around 2023-01-27 22:31:12 -05:00
source-api Replace RxJava in DownloadQueue (#9016) 2023-02-07 22:13:19 -05:00
.editorconfig Update .editorconfig (#7711) 2022-08-09 09:10:33 -04:00
.gitattributes
.gitignore Ignore gradle.properties.swp (#8425) 2022-11-03 09:23:43 -04:00
build.gradle.kts Move shared configuration to subprojects in root Gradle file (#8951) 2023-01-20 23:04:22 -05:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md Add Prerequisites and Getting help to Contributing.md (#6682) 2022-02-22 07:58:00 -05:00
gradle.properties Disable Gradle configuration cache 2023-01-13 17:59:57 -05:00
gradlew Update dependency gradle to v7.6 (#8630) 2022-11-26 21:36:46 -05:00
gradlew.bat Update dependency gradle to v7.6 (#8630) 2022-11-26 21:36:46 -05:00
LICENSE
README.md Mention MangaUpdates in README 2022-05-26 19:41:54 -04:00
settings.gradle.kts Move Glance Widget to seperate module (#8989) 2023-01-26 17:53:24 -05:00

Build Stable Weekly Preview Contribute Support Server
CI stable release latest preview build Translation status Discord

app iconTachiyomi

Tachiyomi is a free and open source manga reader for Android 6.0 and above.

Features

Features include:

  • Online reading from a variety of sources
  • Local reading of downloaded content
  • A configurable reader with multiple viewers, reading directions and other settings.
  • Tracker support: MyAnimeList, AniList, Kitsu, MangaUpdates, Shikimori, and Bangumi support
  • Categories to organize your library
  • Light and dark themes
  • Schedule updating your library for new chapters
  • Create backups locally to read offline or to your desired cloud service

Download

Get the app from our releases page.

If you want to try new features before they get to the stable release, you can download the preview version here.

Issues, Feature Requests and Contributing

Please make sure to read the full guidelines. Your issue may be closed without warning if you do not.

Issues
  1. Before reporting a new issue, take a look at the FAQ, the changelog and the already opened issues.
  2. If you are unsure, ask here: Discord
Bugs
  • Include version (More → About → Version)
  • If not latest, try updating, it may have already been solved
  • Preview version is equal to the number of commits as seen in the main page
  • Include steps to reproduce (if not obvious from description)
  • Include screenshot (if needed)
  • If it could be device-dependent, try reproducing on another device (if possible)
  • Don't group unrelated requests into one issue

DO: https://github.com/tachiyomiorg/tachiyomi/issues/24 https://github.com/tachiyomiorg/tachiyomi/issues/71

DON'T: https://github.com/tachiyomiorg/tachiyomi/issues/75

Feature Requests
  • Write a detailed issue, explaining what it should do or how. Avoid writing just "like X app does"
  • Include screenshot (if needed)

Source requests should be created at https://github.com/tachiyomiorg/tachiyomi-extensions, they do not belong in this repository.

Contributing

See CONTRIBUTING.md.

Code of Conduct

See CODE_OF_CONDUCT.md.

FAQ

See our website. You can also reach out to us on Discord.

License

Copyright 2015 Javier Tomás

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Disclaimer

The developer of this application does not have any affiliation with the content providers available.