From 5ca5f4f4af6c7722a91fe90721e03a419c25b34b Mon Sep 17 00:00:00 2001 From: Arnau Mora Date: Sat, 27 Sep 2025 13:41:31 +0200 Subject: [PATCH] Fix screen orientation change clearing UI state Signed-off-by: Arnau Mora --- .../at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt | 4 ++-- .../at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt b/app/src/main/java/at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt index 67abe875..d09ac4fd 100644 --- a/app/src/main/java/at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt +++ b/app/src/main/java/at/bitfire/icsdroid/model/SubscriptionSettingsUseCase.kt @@ -8,9 +8,7 @@ import at.bitfire.icsdroid.HttpUtils import at.bitfire.icsdroid.db.entity.Credential import at.bitfire.icsdroid.db.entity.Subscription import javax.inject.Inject -import javax.inject.Singleton -@Singleton class SubscriptionSettingsUseCase @Inject constructor() { data class UiState( val url: String? = null, @@ -35,6 +33,8 @@ class SubscriptionSettingsUseCase @Inject constructor() { val validUrlInput: Boolean = url?.let { url -> HttpUtils.acceptedProtocol(url.toUri()) } ?: false + + fun isInitialized() = url != null || title != null || color != null } var uiState by mutableStateOf(UiState()) diff --git a/app/src/main/java/at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt b/app/src/main/java/at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt index e0f90e3a..ae8debf3 100644 --- a/app/src/main/java/at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt +++ b/app/src/main/java/at/bitfire/icsdroid/ui/screen/AddSubscriptionScreen.kt @@ -79,6 +79,8 @@ fun AddSubscriptionScreen( } LaunchedEffect(title, color, url) { + if (model.subscriptionSettingsUseCase.uiState.isInitialized()) + return@LaunchedEffect model.subscriptionSettingsUseCase.setInitialValues(title, color, url) if (url != null) {