mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Refactor response parsing helper function
This commit is contained in:
		@@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.data.updater.UpdateResult
 | 
			
		||||
import eu.kanade.tachiyomi.network.GET
 | 
			
		||||
import eu.kanade.tachiyomi.network.NetworkHelper
 | 
			
		||||
import eu.kanade.tachiyomi.network.await
 | 
			
		||||
import eu.kanade.tachiyomi.network.withResponse
 | 
			
		||||
import eu.kanade.tachiyomi.network.parseAs
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.withContext
 | 
			
		||||
import uy.kohesive.injekt.injectLazy
 | 
			
		||||
@@ -27,7 +27,8 @@ class GithubUpdateChecker {
 | 
			
		||||
            networkService.client
 | 
			
		||||
                .newCall(GET("https://api.github.com/repos/$repo/releases/latest"))
 | 
			
		||||
                .await()
 | 
			
		||||
                .withResponse<GithubRelease, UpdateResult> {
 | 
			
		||||
                .parseAs<GithubRelease>()
 | 
			
		||||
                .let {
 | 
			
		||||
                    // Check if latest version is different from current version
 | 
			
		||||
                    if (isNewVersion(it.version)) {
 | 
			
		||||
                        GithubUpdateResult.NewUpdate(it)
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionLoader
 | 
			
		||||
import eu.kanade.tachiyomi.network.GET
 | 
			
		||||
import eu.kanade.tachiyomi.network.NetworkHelper
 | 
			
		||||
import eu.kanade.tachiyomi.network.await
 | 
			
		||||
import eu.kanade.tachiyomi.network.withResponse
 | 
			
		||||
import eu.kanade.tachiyomi.network.parseAs
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.withContext
 | 
			
		||||
import kotlinx.serialization.json.JsonArray
 | 
			
		||||
@@ -28,9 +28,8 @@ internal class ExtensionGithubApi {
 | 
			
		||||
            networkService.client
 | 
			
		||||
                .newCall(GET("${REPO_URL_PREFIX}index.min.json"))
 | 
			
		||||
                .await()
 | 
			
		||||
                .withResponse<JsonArray, List<Extension.Available>> {
 | 
			
		||||
                    parseResponse(it)
 | 
			
		||||
                }
 | 
			
		||||
                .parseAs<JsonArray>()
 | 
			
		||||
                .let { parseResponse(it) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -110,10 +110,9 @@ fun OkHttpClient.newCallWithProgress(request: Request, listener: ProgressListene
 | 
			
		||||
    return progressClient.newCall(request)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline fun <reified T, R> Response.withResponse(block: (T) -> R): R {
 | 
			
		||||
inline fun <reified T> Response.parseAs(): T {
 | 
			
		||||
    this.use {
 | 
			
		||||
        val responseBody = it.body?.string().orEmpty()
 | 
			
		||||
        val response = Injekt.get<Json>().decodeFromString<T>(responseBody)
 | 
			
		||||
        return block(response)
 | 
			
		||||
        return Injekt.get<Json>().decodeFromString<T>(responseBody)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user