feat: déploiement forcé de DataControl (réinstallation même version)
AppDeployer honore le drapeau `force` de l'ordre de déploiement envoyé par le serveur : la (ré)installation est effectuée même si la version proposée n'est pas plus récente que celle installée, et les garde-fous anti-rejeu sont ignorés. Utile pour réparer ou réinstaller DataControl à distance via le tunnel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R9CBCVP5oDu2sfoYPisNCQ
This commit is contained in:
1 parent
36c829c14d
commit
303d2c4cdc
1 file changed
+6
-3
@@ -50,12 +50,15 @@ class AppDeployer @Inject constructor(
|
||||
suspend fun handle(order: JSONObject, apiBase: String, report: suspend (String, String) -> Unit) =
|
||||
withContext(Dispatchers.IO) {
|
||||
val version = order.optString("version")
|
||||
if (version.isBlank() || !UpdateManager.isNewer(version, BuildConfig.VERSION_NAME)) return@withContext
|
||||
if (version.isBlank()) return@withContext
|
||||
// Déploiement forcé (option du parent) : réinstalle même version comprise, en ignorant les garde-fous.
|
||||
val force = order.optBoolean("force", false)
|
||||
if (!force && !UpdateManager.isNewer(version, BuildConfig.VERSION_NAME)) return@withContext
|
||||
val now = SystemClock.elapsedRealtime()
|
||||
if (version == lastVersion && now - lastAttemptAt < RETRY_MS) return@withContext
|
||||
if (!force && version == lastVersion && now - lastAttemptAt < RETRY_MS) return@withContext
|
||||
lastVersion = version
|
||||
lastAttemptAt = now
|
||||
AppLog.i("Mise à jour", "Déploiement de DataControl $version demandé par le serveur")
|
||||
AppLog.i("Mise à jour", "Déploiement de DataControl $version demandé par le serveur" + if (force) " (forcé)" else "")
|
||||
try {
|
||||
val file = download(apiBase + order.getString("url"), order.getString("sha256").lowercase(), version)
|
||||
install(file, version)
|
||||
|
||||
Reference in new issue
Block a user