diff --git a/app/src/main/java/com/jttools/datacontrol/remote/AppDeployer.kt b/app/src/main/java/com/jttools/datacontrol/remote/AppDeployer.kt index c9b35d0..1a8d886 100644 --- a/app/src/main/java/com/jttools/datacontrol/remote/AppDeployer.kt +++ b/app/src/main/java/com/jttools/datacontrol/remote/AppDeployer.kt @@ -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)