MajorTanya 051c559840 Use DTOs to parse tracking API responses (#1103)
* Migrate tracking APIs to DTOs

Changes the handling of tracker API responses to be parsed to DTOs
instead of doing so "manually" by use of `jsonPrimitive`s and/or
`Json.decodeFromString` invocations.

This greatly simplifies the API response handling.

Renamed constants to SCREAMING_SNAKE_CASE.

Largely tried to name the DTOs in a uniform pattern, with the
tracker's (short) name at the beginning of file and data class names
(ALOAuth instead of OAuth, etc).

With these changes, no area of the code base should be using
`jsonPrimitive` and/or `Json.decodeFromString` anymore.

* Fix wrong types in KitsuAlgoliaSearchItem

This API returns start and end dates as Long and the score as Double.

Kitsu's docs claim they're strings (and they are, when requesting
manga details from Kitsu directly) but the Algolia search results
return Longs and Double, respectively.

* Apply review changes

- Renamed `BangumiX` classes to `BGMX` classes.
- Renamed `toXStatus` and `toXScore` to `toApiStatus` and `toApiScore`

* Handle migration from detekt to spotless

Removed Suppressions added for detekt.

Specifically removed:
- `SwallowedException` where an exception ends as a default value
- `MagicNumber`
- `CyclomaticComplexMethod`
- `TooGenericExceptionThrown`

Also ran spotlessApply which changed SMAddMangaResponse

* Fix Kitsu failing to add series

The `included` attribute seems to only appear when the user already
has the entry in their Kitsu list.

Since both `data` and `included` are required for `firstToTrack`, a
guard clause has been added before all its calls.

* Fix empty Bangumi error when entry doesn't exist

Previously, the non-null assertion (!!) would cause a
NullPointerException and a Toast with
"Bangumi error: " (no message) when the user had removed their list
entry from Bangumi through other means like the website.

Now it will show "Bangumi error: Could not find manga".

This is analogous to the error shown by Kitsu under these
circumstances.

* Fix Shikimori ignoring missing remote entry

The user would see no indication that Shikimori could not properly
refresh the track from the remote. This change causes the error Toast
notification to pop up with the following message
"Shikimori error: Could not find manga".

This is analogous to Kitsu and Bangumi.

* Remove usage of let where not needed

These particular occurrences weren't needed because properties are
directly accessible to further act upon. This neatly simplifies these
clauses.

* Remove missed let

(cherry picked from commit 9f99f038f341e325c4f56372a5ce950cf9f7cd6d)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistInterceptor.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuInterceptor.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuModels.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriInterceptor.kt
2024-10-14 12:26:09 -04:00
2023-10-01 16:36:37 -04:00
2023-11-05 17:28:46 -05:00
2020-01-11 16:13:08 -05:00
2024-01-13 16:39:52 -05:00
2024-09-01 10:45:11 -04:00
2024-09-01 10:45:11 -04:00

Preview Builds Release Builds Mihon Support Server
Preview stable release Discord

app iconTachiyomiSY

Mihon is a free and open source manga reader for Android 6.0 and above. This version of Mihon, TachiyomiSY was based off TachiyomiAZ. This version is meant to push forward in the ways of usability and features. TachiyomiSY tries to push forward where it can, but staying in a place where it can easily grab updates and features from the main app, it tries to make new features, or take features from other forks like J2K and Neko.

screenshots of app

Features

Features of Mihon(original) 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

Features of TachiyomiSY include:

  • Latest tab, store up to 5 sources where you can easily view the latest manga by viewing the tab
  • Automatic webtoon detection, allowing the reader to switch to webtoon mode automatically when viewing one
  • Manga recommendations, uses MAL and Anilist, as well as Neko Similar Manga for Mangadex manga(Thanks to Az, She11Shocked, Carlos, and Goldbattle)
  • Lewd filter, hide the lewd manga in your library when you want to
  • Tracking filter, filter your tracked manga so you can see them or see non-tracked manga, made by She11Shocked
  • Search tracking status in library, made by She11Shocked
  • Custom categories for sources, liked the pinned sources, but you can make your own versions and put any sources in them
  • Manga info edit
  • Manga Cover view + share and save
  • Dynamic Categories, view the library in multiple ways
  • Smart background for reading modes like LTR or Vertical, changes the background based on the page color
  • Force disable webtoon zoom
  • Continue reading button in library
  • Hentai features enable/disable, in advanced settings
  • Quick clean titles
  • Source migration, migrate all your manga from one source to another
  • Saving searches
  • Autoscroll
  • Page preload customization
  • Customize image cache size
  • Batch import of custom sources and featured extensions
  • Advanced source settings page, searching, enable/disable all
  • Click tag for local search, long click tag for global search
  • Merge multiple of the same manga from different sources
  • Drag and drop library sorting
  • Library search engine, includes exclude, quotes as absolute, and a bunch of other ways to search
  • New E-Hentai/ExHentai features, such as language settings and watched list settings
  • Enhanced views for internal and integrated sources
  • Enhanced usability for internal and delegated sources

Custom sources:

  • E-Hentai/ExHentai

Additional features for some extensions, features include custom description, opening in app, batch add to library, and a bunch of other things based on the source:

  • 8Muses (EroMuse)
  • HBrowse
  • Mangadex
  • NHentai
  • Puruin
  • Tsumino

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.

Translation

Feel free to translate the project on Weblate

Translation Progress Translation status

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 on 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

Use the issue forms to submit a bug.

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 are not accepted.

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.

Description
Free and open source manga reader for Android with some modifications.
Readme 85 MiB
Languages
Kotlin 100%