|
|
@@ -8,7 +8,6 @@ import io.legado.app.help.http.newCallStrResponse
|
|
|
import io.legado.app.help.http.okHttpClient
|
|
|
import io.legado.app.utils.jsonPath
|
|
|
import io.legado.app.utils.readString
|
|
|
-import io.legado.app.utils.toastOnUi
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
import splitties.init.appCtx
|
|
|
|
|
|
@@ -16,10 +15,8 @@ object AppUpdate {
|
|
|
|
|
|
fun checkFromGitHub(
|
|
|
scope: CoroutineScope,
|
|
|
- showErrorMsg: Boolean = true,
|
|
|
- callback: (newVersion: String, updateBody: String, url: String, fileName: String) -> Unit
|
|
|
- ) {
|
|
|
- Coroutine.async(scope) {
|
|
|
+ ): Coroutine<UpdateInfo> {
|
|
|
+ return Coroutine.async(scope) {
|
|
|
val lastReleaseUrl = appCtx.getString(R.string.latest_release_api)
|
|
|
val body = okHttpClient.newCallStrResponse {
|
|
|
url(lastReleaseUrl)
|
|
|
@@ -37,18 +34,18 @@ object AppUpdate {
|
|
|
?: throw NoStackTraceException("获取新版本出错")
|
|
|
val fileName = rootDoc.readString("$.assets[0].name")
|
|
|
?: throw NoStackTraceException("获取新版本出错")
|
|
|
- return@async arrayOf(tagName, updateBody, downloadUrl, fileName)
|
|
|
+ return@async UpdateInfo(tagName, updateBody, downloadUrl, fileName)
|
|
|
} else {
|
|
|
throw NoStackTraceException("已是最新版本")
|
|
|
}
|
|
|
}.timeout(10000)
|
|
|
- .onSuccess {
|
|
|
- callback.invoke(it[0], it[1], it[2], it[3])
|
|
|
- }.onError {
|
|
|
- if (showErrorMsg) {
|
|
|
- appCtx.toastOnUi("检测更新\n${it.localizedMessage}")
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
+ data class UpdateInfo(
|
|
|
+ val tagName: String,
|
|
|
+ val updateLog: String,
|
|
|
+ val downloadUrl: String,
|
|
|
+ val fileName: String
|
|
|
+ )
|
|
|
+
|
|
|
}
|