Selaa lähdekoodia

Refactor response parsing helper function

arkon 4 vuotta sitten
vanhempi
commit
8f98055e9e

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/data/updater/github/GithubUpdateChecker.kt

@@ -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)

+ 3 - 4
app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt

@@ -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) }
         }
     }
 

+ 2 - 3
app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt

@@ -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)
     }
 }