diff --git a/app/src/main/java/io/legato/kazusa/constant/AppConst.kt b/app/src/main/java/io/legato/kazusa/constant/AppConst.kt index eb49f0919..cb7157d92 100644 --- a/app/src/main/java/io/legato/kazusa/constant/AppConst.kt +++ b/app/src/main/java/io/legato/kazusa/constant/AppConst.kt @@ -61,7 +61,6 @@ object AppConst { ?.let { appInfo.versionName = it.versionName!! appInfo.appVariant = when { - it.packageName.contains("releaseA") -> AppVariant.BETA_RELEASEA isBeta -> AppVariant.BETA_RELEASE isOfficial -> AppVariant.OFFICIAL else -> AppVariant.UNKNOWN diff --git a/app/src/main/java/io/legato/kazusa/help/update/AppReleaseInfo.kt b/app/src/main/java/io/legato/kazusa/help/update/AppReleaseInfo.kt index 57aa940d3..f21252873 100644 --- a/app/src/main/java/io/legato/kazusa/help/update/AppReleaseInfo.kt +++ b/app/src/main/java/io/legato/kazusa/help/update/AppReleaseInfo.kt @@ -21,12 +21,11 @@ data class AppReleaseInfo( enum class AppVariant { OFFICIAL, - BETA_RELEASEA, BETA_RELEASE, UNKNOWN; fun isBeta(): Boolean { - return this == BETA_RELEASE || this == BETA_RELEASEA + return this == BETA_RELEASE } } @@ -69,7 +68,6 @@ data class Asset( val timestamp: Long = instant.toEpochMilli() val appVariant = when { - preRelease && name.contains("releaseA") -> AppVariant.BETA_RELEASEA preRelease && name.contains("release") -> AppVariant.BETA_RELEASE else -> AppVariant.OFFICIAL } diff --git a/app/src/main/java/io/legato/kazusa/help/update/AppUpdateGitHub.kt b/app/src/main/java/io/legato/kazusa/help/update/AppUpdateGitHub.kt index a8f55a791..e5c999cea 100644 --- a/app/src/main/java/io/legato/kazusa/help/update/AppUpdateGitHub.kt +++ b/app/src/main/java/io/legato/kazusa/help/update/AppUpdateGitHub.kt @@ -9,6 +9,7 @@ import io.legato.kazusa.help.http.newCallResponse import io.legato.kazusa.help.http.okHttpClient import io.legato.kazusa.help.http.text import io.legato.kazusa.utils.GSON +import io.legato.kazusa.utils.fromJsonArray import io.legato.kazusa.utils.fromJsonObject import kotlinx.coroutines.CoroutineScope @@ -20,41 +21,48 @@ object AppUpdateGitHub : AppUpdate.AppUpdateInterface { get() = when (AppConfig.updateToVariant) { "official_version" -> AppVariant.OFFICIAL "beta_release_version" -> AppVariant.BETA_RELEASE - "beta_releaseA_version" -> AppVariant.BETA_RELEASEA else -> AppConst.appInfo.appVariant } - private suspend fun getLatestRelease(): List { - val url = "https://api.github.com/repos/HapeLee/legado-with-MD3/releases" - val res = okHttpClient.newCallResponse { url(url) } + private suspend fun getLatestRelease(): List { + val lastReleaseUrl = if (checkVariant.isBeta()) { + "https://api.github.com/repos/HapeLee/legado-with-MD3/releases" + } else { + "https://api.github.com/repos/HapeLee/legado-with-MD3/releases/latest" + } + + val res = okHttpClient.newCallResponse { + url(lastReleaseUrl) + } if (!res.isSuccessful) { throw NoStackTraceException("获取新版本出错(${res.code})") } - val body = res.body.text() if (body.isBlank()) { - throw NoStackTraceException("获取新版本出错:返回为空") + throw NoStackTraceException("获取新版本出错") + } + return if (checkVariant.isBeta()) { + GSON.fromJsonArray(body) + .getOrElse { throw NoStackTraceException("获取新版本出错 ${it.localizedMessage}") } + .filter { it.isPreRelease } + .flatMap { it.gitReleaseToAppReleaseInfo() } + .sortedByDescending { it.createdAt } + } else { + listOf( + GSON.fromJsonObject(body) + .getOrElse { throw NoStackTraceException("获取新版本出错 ${it.localizedMessage}") } + .gitReleaseToAppReleaseInfo() + ).flatten() + .sortedByDescending { it.createdAt } } - val allReleases = GSON.fromJsonObject>(body) - .getOrElse { throw NoStackTraceException("解析版本信息出错:${it.localizedMessage}") } - - val releases = allReleases - .flatMap { it.gitReleaseToAppReleaseInfo() } - .filter { it.appVariant == checkVariant } - .sortedByDescending { it.createdAt } - - return releases } - /** - * 检查更新 - */ override fun check(scope: CoroutineScope): Coroutine { return Coroutine.async(scope) { val currentVersion = AppConst.appInfo.versionName val releases = getLatestRelease() + .filter { it.appVariant == checkVariant } - // 找出比当前版本高的最新 release val latest = releases .firstOrNull { it.versionName > currentVersion } diff --git a/app/src/main/java/io/legato/kazusa/ui/about/UpdateDialog.kt b/app/src/main/java/io/legato/kazusa/ui/about/UpdateDialog.kt index a61e026fc..550b77355 100644 --- a/app/src/main/java/io/legato/kazusa/ui/about/UpdateDialog.kt +++ b/app/src/main/java/io/legato/kazusa/ui/about/UpdateDialog.kt @@ -34,7 +34,6 @@ class UpdateDialog() : BaseBottomSheetDialogFragment(R.layout.dialog_update) { get() = when (AppConfig.updateToVariant) { "official_version" -> AppVariant.OFFICIAL "beta_release_version" -> AppVariant.BETA_RELEASE - "beta_releaseA_version" -> AppVariant.BETA_RELEASEA else -> AppConst.appInfo.appVariant }