mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix bug where status cannot be updated when all chapters have been read. (#2683)
Minor cleanup.
This commit is contained in:
		| @@ -31,6 +31,8 @@ abstract class TrackService(val id: Int) { | ||||
|  | ||||
|     abstract fun getStatus(status: Int): String | ||||
|  | ||||
|     abstract fun getCompletionStatus(): Int | ||||
|  | ||||
|     abstract fun getScoreList(): List<String> | ||||
|  | ||||
|     open fun indexToScore(index: Int): Float { | ||||
|   | ||||
| @@ -72,6 +72,8 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getCompletionStatus(): Int = COMPLETED | ||||
|  | ||||
|     override fun getScoreList(): List<String> { | ||||
|         return when (scorePreference.getOrDefault()) { | ||||
|             // 10 point | ||||
| @@ -133,9 +135,6 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) { | ||||
|     } | ||||
|  | ||||
|     override fun update(track: Track): Observable<Track> { | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = COMPLETED | ||||
|         } | ||||
|         // If user was using API v1 fetch library_id | ||||
|         if (track.library_id == null || track.library_id!! == 0L) { | ||||
|             return api.findLibManga(track, getUsername().toInt()).flatMap { | ||||
|   | ||||
| @@ -34,9 +34,6 @@ class Bangumi(private val context: Context, id: Int) : TrackService(id) { | ||||
|     } | ||||
|  | ||||
|     override fun update(track: Track): Observable<Track> { | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = COMPLETED | ||||
|         } | ||||
|         return api.updateLibManga(track) | ||||
|     } | ||||
|  | ||||
| @@ -99,6 +96,8 @@ class Bangumi(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getCompletionStatus(): Int = COMPLETED | ||||
|  | ||||
|     override fun login(username: String, password: String) = login(password) | ||||
|  | ||||
|     fun login(code: String): Completable { | ||||
|   | ||||
| @@ -56,6 +56,8 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getCompletionStatus(): Int = COMPLETED | ||||
|  | ||||
|     override fun getScoreList(): List<String> { | ||||
|         val df = DecimalFormat("0.#") | ||||
|         return listOf("0") + IntRange(2, 20).map { df.format(it / 2f) } | ||||
| @@ -75,10 +77,6 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) { | ||||
|     } | ||||
|  | ||||
|     override fun update(track: Track): Observable<Track> { | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = COMPLETED | ||||
|         } | ||||
|  | ||||
|         return api.updateLibManga(track) | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -38,6 +38,10 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) { | ||||
|  | ||||
|     override fun getLogoColor() = Color.rgb(46, 81, 162) | ||||
|  | ||||
|     override fun getStatusList(): List<Int> { | ||||
|         return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLAN_TO_READ) | ||||
|     } | ||||
|  | ||||
|     override fun getStatus(status: Int): String = with(context) { | ||||
|         when (status) { | ||||
|             READING -> getString(R.string.reading) | ||||
| @@ -49,9 +53,7 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getStatusList(): List<Int> { | ||||
|         return listOf(READING, COMPLETED, ON_HOLD, DROPPED, PLAN_TO_READ) | ||||
|     } | ||||
|     override fun getCompletionStatus(): Int = COMPLETED | ||||
|  | ||||
|     override fun getScoreList(): List<String> { | ||||
|         return IntRange(0, 10).map(Int::toString) | ||||
| @@ -66,10 +68,6 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) { | ||||
|     } | ||||
|  | ||||
|     override fun update(track: Track): Observable<Track> { | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = COMPLETED | ||||
|         } | ||||
|  | ||||
|         return api.updateLibManga(track) | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -13,6 +13,26 @@ import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class Shikimori(private val context: Context, id: Int) : TrackService(id) { | ||||
|  | ||||
|     companion object { | ||||
|         const val READING = 1 | ||||
|         const val COMPLETED = 2 | ||||
|         const val ON_HOLD = 3 | ||||
|         const val DROPPED = 4 | ||||
|         const val PLANNING = 5 | ||||
|         const val REPEATING = 6 | ||||
|  | ||||
|         const val DEFAULT_STATUS = READING | ||||
|         const val DEFAULT_SCORE = 0 | ||||
|     } | ||||
|  | ||||
|     override val name = "Shikimori" | ||||
|  | ||||
|     private val gson: Gson by injectLazy() | ||||
|  | ||||
|     private val interceptor by lazy { ShikimoriInterceptor(this, gson) } | ||||
|  | ||||
|     private val api by lazy { ShikimoriApi(client, interceptor) } | ||||
|  | ||||
|     override fun getScoreList(): List<String> { | ||||
|         return IntRange(0, 10).map(Int::toString) | ||||
|     } | ||||
| @@ -26,9 +46,6 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) { | ||||
|     } | ||||
|  | ||||
|     override fun update(track: Track): Observable<Track> { | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = COMPLETED | ||||
|         } | ||||
|         return api.updateLibManga(track, getUsername()) | ||||
|     } | ||||
|  | ||||
| @@ -63,26 +80,6 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) { | ||||
|                 } | ||||
|     } | ||||
|  | ||||
|     companion object { | ||||
|         const val READING = 1 | ||||
|         const val COMPLETED = 2 | ||||
|         const val ON_HOLD = 3 | ||||
|         const val DROPPED = 4 | ||||
|         const val PLANNING = 5 | ||||
|         const val REPEATING = 6 | ||||
|  | ||||
|         const val DEFAULT_STATUS = READING | ||||
|         const val DEFAULT_SCORE = 0 | ||||
|     } | ||||
|  | ||||
|     override val name = "Shikimori" | ||||
|  | ||||
|     private val gson: Gson by injectLazy() | ||||
|  | ||||
|     private val interceptor by lazy { ShikimoriInterceptor(this, gson) } | ||||
|  | ||||
|     private val api by lazy { ShikimoriApi(client, interceptor) } | ||||
|  | ||||
|     override fun getLogo() = R.drawable.tracker_shikimori | ||||
|  | ||||
|     override fun getLogoColor() = Color.rgb(40, 40, 40) | ||||
| @@ -103,6 +100,8 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getCompletionStatus(): Int = COMPLETED | ||||
|  | ||||
|     override fun login(username: String, password: String) = login(password) | ||||
|  | ||||
|     fun login(code: String): Completable { | ||||
|   | ||||
| @@ -115,6 +115,9 @@ class TrackPresenter( | ||||
|     fun setStatus(item: TrackItem, index: Int) { | ||||
|         val track = item.track!! | ||||
|         track.status = item.service.getStatusList()[index] | ||||
|         if (track.status == item.service.getCompletionStatus() && track.total_chapters != 0) { | ||||
|             track.last_chapter_read = track.total_chapters | ||||
|         } | ||||
|         updateRemote(track, item.service) | ||||
|     } | ||||
|  | ||||
| @@ -127,6 +130,9 @@ class TrackPresenter( | ||||
|     fun setLastChapterRead(item: TrackItem, chapterNumber: Int) { | ||||
|         val track = item.track!! | ||||
|         track.last_chapter_read = chapterNumber | ||||
|         if (track.total_chapters != 0 && track.last_chapter_read == track.total_chapters) { | ||||
|             track.status = item.service.getCompletionStatus() | ||||
|         } | ||||
|         updateRemote(track, item.service) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user