From a337d1fa1623f15c57b681962bcb7fa9a9cf2a48 Mon Sep 17 00:00:00 2001 From: Leo CACHEUX Date: Tue, 16 Dec 2025 21:02:01 +0100 Subject: [PATCH] Fix crash when deleting a pen that is selected --- .../kotlin/net/cacheux/nvp/app/PenSettingsTest.kt | 5 +++++ .../cacheux/nvp/app/viewmodel/MainScreenViewModel.kt | 2 +- .../nvp/app/viewmodel/BaseMainScreenViewModel.kt | 12 ++++++++++++ gradle/libs.versions.toml | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/src/androidInstrumentedTest/kotlin/net/cacheux/nvp/app/PenSettingsTest.kt b/app/src/androidInstrumentedTest/kotlin/net/cacheux/nvp/app/PenSettingsTest.kt index 4c58e38..dc8ad85 100644 --- a/app/src/androidInstrumentedTest/kotlin/net/cacheux/nvp/app/PenSettingsTest.kt +++ b/app/src/androidInstrumentedTest/kotlin/net/cacheux/nvp/app/PenSettingsTest.kt @@ -99,6 +99,11 @@ class PenSettingsTest { assertHaveTexts("ABCD1234", "ABCD5678") + onNodeWithText("ABCD5678").performClick() + waitForIdle() + + openDrawer() + onNodeWithText(getString(Res.string.pen_settings)).performClick() waitForIdle() diff --git a/app/src/androidMain/kotlin/net/cacheux/nvp/app/viewmodel/MainScreenViewModel.kt b/app/src/androidMain/kotlin/net/cacheux/nvp/app/viewmodel/MainScreenViewModel.kt index 62aaa6b..5a82cbd 100644 --- a/app/src/androidMain/kotlin/net/cacheux/nvp/app/viewmodel/MainScreenViewModel.kt +++ b/app/src/androidMain/kotlin/net/cacheux/nvp/app/viewmodel/MainScreenViewModel.kt @@ -18,7 +18,7 @@ class MainScreenViewModel @Inject constructor( preferencesRepository: PreferencesRepository, ): BaseMainScreenViewModel( repository, storageRepository, - DoseListUseCase( storageRepository, preferencesRepository), + DoseListUseCase(storageRepository, preferencesRepository), ) { init { repository.registerOnDataReceivedCallback { result -> diff --git a/app/src/commonMain/kotlin/net/cacheux/nvp/app/viewmodel/BaseMainScreenViewModel.kt b/app/src/commonMain/kotlin/net/cacheux/nvp/app/viewmodel/BaseMainScreenViewModel.kt index e12060d..91b717f 100644 --- a/app/src/commonMain/kotlin/net/cacheux/nvp/app/viewmodel/BaseMainScreenViewModel.kt +++ b/app/src/commonMain/kotlin/net/cacheux/nvp/app/viewmodel/BaseMainScreenViewModel.kt @@ -31,6 +31,18 @@ open class BaseMainScreenViewModel ( private val doseListUseCase: DoseListUseCase, protected val coroutineScope: CoroutineScope = CoroutineScope(Dispatchers.IO) ): ViewModel() { + + init { + // When a pen is deleted, ensure that the current pen is unset + coroutineScope.launch { + getPenList().collect { penList -> + if (penList.find { it.serial == currentPen.value } == null) { + setCurrentPen(null) + } + } + } + } + fun getPenList() = storageRepository.getPenList() protected val isReading = MutableStateFlow(false) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f9cf78d..1b3eb6f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ java = "17" android-minSdk = "24" android-compileSdk = "36" -agp = "8.11.1" +agp = "8.13.2" compose-plugin="1.9.0" hilt = "2.57.1" kotlin = "2.1.21"