mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Update total number of chapters when refreshing MAL entries (fixes #4348)
This commit is contained in:
		@@ -102,7 +102,7 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun refresh(track: Track): Track {
 | 
			
		||||
        return api.getListItem(track)
 | 
			
		||||
        return api.findListItem(track) ?: api.addItemToList(track)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override suspend fun login(username: String, password: String) = login(password)
 | 
			
		||||
 
 | 
			
		||||
@@ -111,22 +111,6 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun getListItem(track: Track): Track {
 | 
			
		||||
        return withIOContext {
 | 
			
		||||
            val formBody: RequestBody = FormBody.Builder()
 | 
			
		||||
                .add("status", track.toMyAnimeListStatus() ?: "reading")
 | 
			
		||||
                .build()
 | 
			
		||||
            val request = Request.Builder()
 | 
			
		||||
                .url(mangaUrl(track.media_id).toString())
 | 
			
		||||
                .put(formBody)
 | 
			
		||||
                .build()
 | 
			
		||||
            authClient.newCall(request)
 | 
			
		||||
                .await()
 | 
			
		||||
                .parseAs<JsonObject>()
 | 
			
		||||
                .let { parseMangaItem(it, track) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    suspend fun addItemToList(track: Track): Track {
 | 
			
		||||
        return withIOContext {
 | 
			
		||||
            val formBody: RequestBody = FormBody.Builder()
 | 
			
		||||
@@ -174,12 +158,13 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI
 | 
			
		||||
        return withIOContext {
 | 
			
		||||
            val uri = "$baseApiUrl/manga".toUri().buildUpon()
 | 
			
		||||
                .appendPath(track.media_id.toString())
 | 
			
		||||
                .appendQueryParameter("fields", "my_list_status{start_date,finish_date}")
 | 
			
		||||
                .appendQueryParameter("fields", "num_chapters,my_list_status{start_date,finish_date}")
 | 
			
		||||
                .build()
 | 
			
		||||
            authClient.newCall(GET(uri.toString()))
 | 
			
		||||
                .await()
 | 
			
		||||
                .parseAs<JsonObject>()
 | 
			
		||||
                .let { obj ->
 | 
			
		||||
                    track.total_chapters = obj["num_chapters"]!!.jsonPrimitive.int
 | 
			
		||||
                    obj.jsonObject["my_list_status"]?.jsonObject?.let {
 | 
			
		||||
                        parseMangaItem(it, track)
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user