diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 530113179..c389e90a3 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -145,6 +145,7 @@ object PreferKey { const val mouseWheelPage = "mouseWheelPage" const val recordHeapDump = "recordHeapDump" const val optimizeRender = "optimizeRender" + const val updateToBeta = "updateToBeta" const val cPrimary = "colorPrimary" const val cAccent = "colorAccent" diff --git a/app/src/main/java/io/legado/app/help/AppUpdate.kt b/app/src/main/java/io/legado/app/help/AppUpdate.kt index af9b572f8..967795f32 100644 --- a/app/src/main/java/io/legado/app/help/AppUpdate.kt +++ b/app/src/main/java/io/legado/app/help/AppUpdate.kt @@ -23,6 +23,8 @@ object AppUpdate { fun check(scope: CoroutineScope): Coroutine + fun checkBeta(scope: CoroutineScope): Coroutine + } } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/AppUpdateGitHub.kt b/app/src/main/java/io/legado/app/help/AppUpdateGitHub.kt index 4ffd03804..42a80f404 100644 --- a/app/src/main/java/io/legado/app/help/AppUpdateGitHub.kt +++ b/app/src/main/java/io/legado/app/help/AppUpdateGitHub.kt @@ -47,5 +47,37 @@ object AppUpdateGitHub : AppUpdate.AppUpdateInterface { }.timeout(10000) } + override fun checkBeta(scope: CoroutineScope): Coroutine { + return Coroutine.async(scope) { + val preReleaseUrl = "https://api.github.com/repos/gedoor/legado/releases/tags/beta" + val body = okHttpClient.newCallStrResponse { + url(preReleaseUrl) + }.body + if (body.isNullOrBlank()) { + throw NoStackTraceException("获取新版本出错") + } + val rootDoc = jsonPath.parse(body) + val path = "\$.assets[?(@.name =~ /legado_${appCtx.channel}_.*?apk\$/)]" + val assetsMap = rootDoc.read>(path) + .firstOrNull() + ?: throw NoStackTraceException("获取新版本出错") + val assets = jsonPath.parse(assetsMap) + val name = assets.readString("$.name") + ?: throw NoStackTraceException("获取新版本出错") + val tagName = name.replace("legado_${appCtx.channel}_|\\.apk".toRegex(), "") + if (tagName > AppConst.appInfo.versionName) { + val updateBody = rootDoc.readString("$.body") + ?: throw NoStackTraceException("获取新版本出错") + val downloadUrl = assets.readString("$.browser_download_url") + ?: throw NoStackTraceException("获取新版本出错") + val fileName = assets.readString("$.name") + ?: throw NoStackTraceException("获取新版本出错") + return@async AppUpdate.UpdateInfo(tagName, updateBody, downloadUrl, fileName) + } else { + throw NoStackTraceException("已是最新版本") + } + }.timeout(10000) + } + } \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 3da59f7fb..ad945b350 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -471,6 +471,8 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val defaultHomePage get() = appCtx.getPrefString(PreferKey.defaultHomePage, "bookshelf") + val updateToBeta get() = appCtx.getPrefBoolean(PreferKey.updateToBeta, false) + val doublePageHorizontal: String? get() = appCtx.getPrefString(PreferKey.doublePageHorizontal) diff --git a/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt b/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt index 0fa7cb546..1760138de 100644 --- a/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt +++ b/app/src/main/java/io/legado/app/ui/about/AboutFragment.kt @@ -88,16 +88,20 @@ class AboutFragment : PreferenceFragmentCompat() { private fun checkUpdate() { waitDialog.show() AppUpdate.gitHubUpdate?.run { - check(lifecycleScope) - .onSuccess { - showDialogFragment( - UpdateDialog(it) - ) - }.onError { - appCtx.toastOnUi("${getString(R.string.check_update)}\n${it.localizedMessage}") - }.onFinally { - waitDialog.dismiss() - } + val job = if (AppConfig.updateToBeta) { + checkBeta(lifecycleScope) + } else { + check(lifecycleScope) + } + job.onSuccess { + showDialogFragment( + UpdateDialog(it) + ) + }.onError { + appCtx.toastOnUi("${getString(R.string.check_update)}\n${it.localizedMessage}") + }.onFinally { + waitDialog.dismiss() + } } } diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 309bcef74..fc7ef944e 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1153,4 +1153,6 @@ Comenzar Cap. al día Cap. inicio + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 30ddf4db0..341968180 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1156,4 +1156,6 @@ 開始日 日更の章数 開始の章 + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index c31da9a3e..d285259b8 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1156,4 +1156,6 @@ Começar Cap. por dia Início + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 873191142..6e7446aec 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1152,4 +1152,6 @@ Còn Bắt đầu Chương/ngày Chương đầu + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 46ab974cc..3f3d3847e 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1153,4 +1153,6 @@ 起始日期 日更章數 開始篇章 + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 8c988fb7a..630fafed1 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1155,4 +1155,6 @@ 起始日期 日更章數 開始篇章 + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index f37dee0c7..640a4128d 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1155,4 +1155,6 @@ 开始日期 日更章数 起始章节 + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3d4f887ca..23643bbfb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1156,4 +1156,6 @@ Start from Daily Chapters Start Chapter + 更新至测试版 + 检查更新时查找最新的测试版本 diff --git a/app/src/main/res/xml/pref_config_other.xml b/app/src/main/res/xml/pref_config_other.xml index 34c9fb81e..650f070ad 100644 --- a/app/src/main/res/xml/pref_config_other.xml +++ b/app/src/main/res/xml/pref_config_other.xml @@ -146,6 +146,12 @@ android:summary="@string/show_add_to_shelf_alert_summary" android:title="@string/show_add_to_shelf_alert_title" /> + +