Remove usage of Retrofit for update check and extensions list

This commit is contained in:
arkon
2020-12-26 16:59:24 -05:00
parent 62ab70f889
commit 61a594493c
5 changed files with 43 additions and 76 deletions

View File

@@ -1,32 +0,0 @@
package eu.kanade.tachiyomi.data.updater.github
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import eu.kanade.tachiyomi.network.NetworkHelper
import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
import retrofit2.Retrofit
import retrofit2.http.GET
import retrofit2.http.Path
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/**
* Used to connect with the GitHub API to get the latest release version from a repo.
*/
interface GithubService {
companion object {
fun create(): GithubService {
val restAdapter = Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(Json { ignoreUnknownKeys = true }.asConverterFactory("application/json".toMediaType()))
.client(Injekt.get<NetworkHelper>().client)
.build()
return restAdapter.create(GithubService::class.java)
}
}
@GET("/repos/{repo}/releases/latest")
suspend fun getLatestVersion(@Path("repo", encoded = true) repo: String): GithubRelease
}

View File

@@ -2,10 +2,17 @@ package eu.kanade.tachiyomi.data.updater.github
import eu.kanade.tachiyomi.BuildConfig
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 kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import uy.kohesive.injekt.injectLazy
class GithubUpdateChecker {
private val service: GithubService = GithubService.create()
private val networkService: NetworkHelper by injectLazy()
private val repo: String by lazy {
if (BuildConfig.DEBUG) {
@@ -16,13 +23,18 @@ class GithubUpdateChecker {
}
suspend fun checkForUpdate(): UpdateResult {
val release = service.getLatestVersion(repo)
// Check if latest version is different from current version
return if (isNewVersion(release.version)) {
GithubUpdateResult.NewUpdate(release)
} else {
GithubUpdateResult.NoNewUpdate()
return withContext(Dispatchers.IO) {
networkService.client
.newCall(GET("https://api.github.com/repos/$repo/releases/latest"))
.await()
.withResponse<GithubRelease, UpdateResult> {
// Check if latest version is different from current version
if (isNewVersion(it.version)) {
GithubUpdateResult.NewUpdate(it)
} else {
GithubUpdateResult.NoNewUpdate()
}
}
}
}