pull/2723/head
parent
1a9a5770fe
commit
542a116afd
@ -0,0 +1,46 @@ |
|||||||
|
package io.legado.app.help |
||||||
|
|
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.constant.AppConst |
||||||
|
import io.legado.app.exception.NoStackTraceException |
||||||
|
import io.legado.app.help.coroutine.Coroutine |
||||||
|
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 kotlinx.coroutines.CoroutineScope |
||||||
|
import splitties.init.appCtx |
||||||
|
|
||||||
|
@Suppress("unused") |
||||||
|
object AppUpdateGitHub: AppUpdate.AppUpdateInterface { |
||||||
|
|
||||||
|
override fun check( |
||||||
|
scope: CoroutineScope, |
||||||
|
): Coroutine<AppUpdate.UpdateInfo> { |
||||||
|
return Coroutine.async(scope) { |
||||||
|
val lastReleaseUrl = appCtx.getString(R.string.latest_release_api) |
||||||
|
val body = okHttpClient.newCallStrResponse { |
||||||
|
url(lastReleaseUrl) |
||||||
|
}.body |
||||||
|
if (body.isNullOrBlank()) { |
||||||
|
throw NoStackTraceException("获取新版本出错") |
||||||
|
} |
||||||
|
val rootDoc = jsonPath.parse(body) |
||||||
|
val tagName = rootDoc.readString("$.tag_name") |
||||||
|
?: throw NoStackTraceException("获取新版本出错") |
||||||
|
if (tagName > AppConst.appInfo.versionName) { |
||||||
|
val updateBody = rootDoc.readString("$.body") |
||||||
|
?: throw NoStackTraceException("获取新版本出错") |
||||||
|
val downloadUrl = rootDoc.readString("$.assets[0].browser_download_url") |
||||||
|
?: throw NoStackTraceException("获取新版本出错") |
||||||
|
val fileName = rootDoc.readString("$.assets[0].name") |
||||||
|
?: throw NoStackTraceException("获取新版本出错") |
||||||
|
return@async AppUpdate.UpdateInfo(tagName, updateBody, downloadUrl, fileName) |
||||||
|
} else { |
||||||
|
throw NoStackTraceException("已是最新版本") |
||||||
|
} |
||||||
|
}.timeout(10000) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,114 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="contributors" |
||||||
|
android:summary="@string/contributors_summary" |
||||||
|
android:title="@string/contributors" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="update_log" |
||||||
|
android:title="@string/update_log" |
||||||
|
app:allowDividerAbove="false" |
||||||
|
app:allowDividerBelow="false" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="check_update" |
||||||
|
android:title="@string/check_update" |
||||||
|
app:allowDividerAbove="false" |
||||||
|
app:allowDividerBelow="false" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.PreferenceCategory |
||||||
|
android:title="@string/contact" |
||||||
|
app:allowDividerAbove="true" |
||||||
|
app:allowDividerBelow="false" |
||||||
|
app:iconSpaceReserved="false" |
||||||
|
app:layout="@layout/view_preference_category"> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="gzGzh" |
||||||
|
android:summary="@string/official_account" |
||||||
|
android:title="@string/follow_official_account" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="qqChannel" |
||||||
|
android:title="@string/join_qq_channel" |
||||||
|
android:summary="@string/qq_channel_summary" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="qq" |
||||||
|
android:summary="@string/click_to_apply" |
||||||
|
android:title="@string/join_qq_group" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="mail" |
||||||
|
android:summary="@string/email" |
||||||
|
android:title="@string/send_mail" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="git" |
||||||
|
android:summary="@string/this_github_url" |
||||||
|
android:title="@string/git_hub" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="discord" |
||||||
|
android:summary="@string/discord_url" |
||||||
|
android:title="Discord" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="tg" |
||||||
|
android:summary="@string/tg_url" |
||||||
|
android:title="TG" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="sourceRuleSummary" |
||||||
|
android:summary="@string/source_rule_url" |
||||||
|
android:title="@string/source_rule_s" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="home_page" |
||||||
|
android:summary="@string/home_page_url" |
||||||
|
android:title="@string/home_page" |
||||||
|
app:allowDividerAbove="false" |
||||||
|
app:allowDividerBelow="false" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
</io.legado.app.lib.prefs.PreferenceCategory> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.PreferenceCategory |
||||||
|
android:title="@string/other" |
||||||
|
app:allowDividerAbove="true" |
||||||
|
app:allowDividerBelow="false" |
||||||
|
app:iconSpaceReserved="false" |
||||||
|
app:layout="@layout/view_preference_category"> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="crashLog" |
||||||
|
android:title="@string/crash_log" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="license" |
||||||
|
android:title="@string/license" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
<io.legado.app.lib.prefs.Preference |
||||||
|
android:key="disclaimer" |
||||||
|
android:title="@string/disclaimer" |
||||||
|
app:iconSpaceReserved="false" /> |
||||||
|
|
||||||
|
</io.legado.app.lib.prefs.PreferenceCategory> |
||||||
|
|
||||||
|
</androidx.preference.PreferenceScreen> |
Loading…
Reference in new issue