From 4cd020950753b41641721125ab57ed8380987eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8C=E5=88=BA=E8=9E=88?= Date: Fri, 17 Apr 2026 18:15:29 +0800 Subject: [PATCH] fix: auto check app update --- app/src/main/kotlin/li/songe/gkd/MainViewModel.kt | 2 +- app/src/main/kotlin/li/songe/gkd/util/Upgrade.kt | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/li/songe/gkd/MainViewModel.kt b/app/src/main/kotlin/li/songe/gkd/MainViewModel.kt index dab30c4c..d9bac997 100644 --- a/app/src/main/kotlin/li/songe/gkd/MainViewModel.kt +++ b/app/src/main/kotlin/li/songe/gkd/MainViewModel.kt @@ -368,7 +368,7 @@ class MainViewModel : BaseViewModel(), OnSimpleLife { clearCache() } - if (updateStatus != null && termsAcceptedFlow.value) { + if (termsAcceptedFlow.value && updateStatus?.canRecheck == true) { updateStatus.checkUpdate() } diff --git a/app/src/main/kotlin/li/songe/gkd/util/Upgrade.kt b/app/src/main/kotlin/li/songe/gkd/util/Upgrade.kt index 12a604bf..b48b0e18 100644 --- a/app/src/main/kotlin/li/songe/gkd/util/Upgrade.kt +++ b/app/src/main/kotlin/li/songe/gkd/util/Upgrade.kt @@ -34,6 +34,7 @@ import li.songe.gkd.store.createAnyFlow import li.songe.gkd.store.storeFlow import java.io.File import java.net.URI +import kotlin.time.Duration.Companion.days private val UPDATE_URL: String @@ -56,6 +57,8 @@ data class VersionLog( val desc: String, ) +private var lastCheckTime = 0L + class UpdateStatus(val scope: CoroutineScope) { private val checkUpdatingMutex = MutexState() val checkUpdatingFlow @@ -73,9 +76,12 @@ class UpdateStatus(val scope: CoroutineScope) { } private var lastManual = false - fun checkUpdate(manual: Boolean = false) = scope.launchTry(Dispatchers.IO, silent = manual) { + val canRecheck get() = System.currentTimeMillis() - lastCheckTime > 1.days.inWholeMilliseconds + + fun checkUpdate(manual: Boolean = false) = scope.launchTry(Dispatchers.IO, silent = !manual) { lastManual = manual checkUpdatingMutex.whenUnLock { + lastCheckTime = System.currentTimeMillis() if (!NetworkUtils.isAvailable()) { error("网络不可用") }