From f8e6f105e2019b8d9db977788faebed3d9c4c374 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Wed, 21 Oct 2020 17:52:51 +0800 Subject: [PATCH] fix #197 - let multiple device updates work --- .../geeksville/mesh/ui/SettingsFragment.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index 611053f98..a18c4d085 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -483,17 +483,19 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { updateProgressBar.progress = 0 // start from scratch scanStatusText.text = "Updating firmware, wait up to eight minutes..." - service.startFirmwareUpdate() - while (service.updateStatus >= 0) { - updateProgressBar.progress = service.updateStatus - delay(2000) // Only check occasionally + try { + service.startFirmwareUpdate() + while (service.updateStatus >= 0) { + updateProgressBar.progress = service.updateStatus + delay(2000) // Only check occasionally + } + } finally { + val isSuccess = (service.updateStatus == -1) + scanStatusText.text = + if (isSuccess) "Update successful" else "Update failed" + updateProgressBar.isEnabled = false + updateFirmwareButton.isEnabled = !isSuccess } - - val isSuccess = (service.updateStatus == -1) - scanStatusText.text = - if (isSuccess) "Update successful" else "Update failed" - updateProgressBar.isEnabled = false - updateFirmwareButton.isEnabled = !isSuccess } } } @@ -512,6 +514,7 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { val info = model.myNodeInfo.value if (connected == MeshService.ConnectionState.CONNECTED && info != null && info.shouldUpdate && info.couldUpdate) { updateFirmwareButton.visibility = View.VISIBLE + updateFirmwareButton.isEnabled = true updateFirmwareButton.text = getString(R.string.update_to).format(getString(R.string.cur_firmware_version)) } else {