Consolidate some of the app update classes

We only use GitHub for all update checks, so the abstraction isn't useful.
This commit is contained in:
arkon 2021-06-01 17:54:34 -04:00
parent 3854995ef2
commit 5113c78ab6
8 changed files with 18 additions and 44 deletions

View file

@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.data.updater.github package eu.kanade.tachiyomi.data.updater
import eu.kanade.tachiyomi.data.updater.Release
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -15,15 +14,15 @@ import kotlinx.serialization.Serializable
@Serializable @Serializable
class GithubRelease( class GithubRelease(
@SerialName("tag_name") val version: String, @SerialName("tag_name") val version: String,
@SerialName("body") override val info: String, @SerialName("body") val info: String,
@SerialName("assets") private val assets: List<Assets> @SerialName("assets") private val assets: List<Assets>
) : Release { ) {
/** /**
* Get download link of latest release from the assets. * Get download link of latest release from the assets.
* @return download link of latest release. * @return download link of latest release.
*/ */
override val downloadLink: String val downloadLink: String
get() = assets[0].downloadLink get() = assets[0].downloadLink
/** /**

View file

@ -1,7 +1,6 @@
package eu.kanade.tachiyomi.data.updater.github package eu.kanade.tachiyomi.data.updater
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.updater.UpdateResult
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.await import eu.kanade.tachiyomi.network.await
@ -21,7 +20,7 @@ class GithubUpdateChecker {
} }
} }
suspend fun checkForUpdate(): UpdateResult { suspend fun checkForUpdate(): GithubUpdateResult {
return withIOContext { return withIOContext {
networkService.client networkService.client
.newCall(GET("https://api.github.com/repos/$repo/releases/latest")) .newCall(GET("https://api.github.com/repos/$repo/releases/latest"))
@ -32,7 +31,7 @@ class GithubUpdateChecker {
if (isNewVersion(it.version)) { if (isNewVersion(it.version)) {
GithubUpdateResult.NewUpdate(it) GithubUpdateResult.NewUpdate(it)
} else { } else {
GithubUpdateResult.NoNewUpdate() GithubUpdateResult.NoNewUpdate
} }
} }
} }

View file

@ -0,0 +1,6 @@
package eu.kanade.tachiyomi.data.updater
sealed class GithubUpdateResult {
class NewUpdate(val release: GithubRelease) : GithubUpdateResult()
object NoNewUpdate : GithubUpdateResult()
}

View file

@ -1,12 +0,0 @@
package eu.kanade.tachiyomi.data.updater
interface Release {
val info: String
/**
* Get download link of latest release.
* @return download link of latest release.
*/
val downloadLink: String
}

View file

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.data.updater
abstract class UpdateResult {
open class NewUpdate<T : Release>(val release: T) : UpdateResult()
open class NoNewUpdate : UpdateResult()
}

View file

@ -8,7 +8,6 @@ import androidx.work.PeriodicWorkRequestBuilder
import androidx.work.WorkManager import androidx.work.WorkManager
import androidx.work.Worker import androidx.work.Worker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@ -19,7 +18,7 @@ class UpdaterJob(private val context: Context, workerParams: WorkerParameters) :
try { try {
val result = GithubUpdateChecker().checkForUpdate() val result = GithubUpdateChecker().checkForUpdate()
if (result is UpdateResult.NewUpdate<*>) { if (result is GithubUpdateResult.NewUpdate) {
UpdaterNotifier(context).promptUpdate(result.release.downloadLink) UpdaterNotifier(context).promptUpdate(result.release.downloadLink)
} }
Result.success() Result.success()

View file

@ -1,9 +0,0 @@
package eu.kanade.tachiyomi.data.updater.github
import eu.kanade.tachiyomi.data.updater.UpdateResult
sealed class GithubUpdateResult : UpdateResult() {
class NewUpdate(release: GithubRelease) : UpdateResult.NewUpdate<GithubRelease>(release)
class NoNewUpdate : UpdateResult.NoNewUpdate()
}

View file

@ -8,9 +8,9 @@ import com.afollestad.materialdialogs.MaterialDialog
import com.mikepenz.aboutlibraries.LibsBuilder import com.mikepenz.aboutlibraries.LibsBuilder
import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.updater.UpdateResult import eu.kanade.tachiyomi.data.updater.GithubUpdateChecker
import eu.kanade.tachiyomi.data.updater.GithubUpdateResult
import eu.kanade.tachiyomi.data.updater.UpdaterService import eu.kanade.tachiyomi.data.updater.UpdaterService
import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker
import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
import eu.kanade.tachiyomi.ui.base.controller.openInBrowser import eu.kanade.tachiyomi.ui.base.controller.openInBrowser
@ -23,7 +23,6 @@ import eu.kanade.tachiyomi.util.preference.onClick
import eu.kanade.tachiyomi.util.preference.preference import eu.kanade.tachiyomi.util.preference.preference
import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.preference.titleRes
import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import timber.log.Timber import timber.log.Timber
import java.text.DateFormat import java.text.DateFormat
@ -110,14 +109,14 @@ class AboutController : SettingsController(), NoToolbarElevationController {
launchNow { launchNow {
try { try {
when (val result = updateChecker.checkForUpdate()) { when (val result = updateChecker.checkForUpdate()) {
is UpdateResult.NewUpdate<*> -> { is GithubUpdateResult.NewUpdate -> {
val body = result.release.info val body = result.release.info
val url = result.release.downloadLink val url = result.release.downloadLink
// Create confirmation window // Create confirmation window
NewUpdateDialogController(body, url).showDialog(router) NewUpdateDialogController(body, url).showDialog(router)
} }
is UpdateResult.NoNewUpdate -> { is GithubUpdateResult.NoNewUpdate -> {
activity?.toast(R.string.update_check_no_new_updates) activity?.toast(R.string.update_check_no_new_updates)
} }
} }