From 2c5edbfbc01360c3b17c635bef476356da0ec3b2 Mon Sep 17 00:00:00 2001 From: Giannis Stamatopoulos Date: Tue, 1 Oct 2024 15:01:47 +0300 Subject: [PATCH] Fix: Enable share button if at least one verification item or optional field is selected. This commit updates the logic for enabling the share button in the Request Screen (for both Presentation and Proximity flows). The share button will now only be enabled if either of the following cases is true: - At least one verification(required) item is selected. - At least one optional field is selected. This ensures the share button is correctly enabled based on user selections. --- .../ui/request/RequestViewModel.kt | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/common-feature/src/main/java/eu/europa/ec/commonfeature/ui/request/RequestViewModel.kt b/common-feature/src/main/java/eu/europa/ec/commonfeature/ui/request/RequestViewModel.kt index 6c691277..77adbcc9 100644 --- a/common-feature/src/main/java/eu/europa/ec/commonfeature/ui/request/RequestViewModel.kt +++ b/common-feature/src/main/java/eu/europa/ec/commonfeature/ui/request/RequestViewModel.kt @@ -118,6 +118,10 @@ abstract class RequestViewModel : MviViewModel() { } open fun updateData(updatedItems: List>, allowShare: Boolean? = null) { + val hasVerificationItems = hasVerificationItems(updatedItems) + + val hasAtLeastOneFieldSelected = hasAtLeastOneFieldSelected(updatedItems) + setState { copy( items = updatedItems, @@ -126,7 +130,7 @@ abstract class RequestViewModel : MviViewModel() { && it.optionalFieldItemUi.requestDocumentItemUi.enabled && !it.optionalFieldItemUi.requestDocumentItemUi.checked }, - allowShare = allowShare ?: updatedItems.isNotEmpty() + allowShare = allowShare ?: (hasAtLeastOneFieldSelected || hasVerificationItems) ) } } @@ -278,13 +282,9 @@ abstract class RequestViewModel : MviViewModel() { } } - val hasVerificationItems = updatedList.any { it is RequestDataUi.RequiredFields } + val hasVerificationItems = hasVerificationItems(updatedList) - val hasAtLeastOneFieldSelected = updatedList - .filterIsInstance>().any { - it.optionalFieldItemUi.requestDocumentItemUi.enabled - && it.optionalFieldItemUi.requestDocumentItemUi.checked - } + val hasAtLeastOneFieldSelected = hasAtLeastOneFieldSelected(updatedList) updateData( updatedItems = updatedList, @@ -310,4 +310,25 @@ abstract class RequestViewModel : MviViewModel() { private fun unsubscribe() { viewModelJob?.cancel() } + + private fun hasVerificationItems(list: List>): Boolean { + return list + .filterIsInstance>() + .any { requiredFields -> + requiredFields.requiredFieldsItemUi.requestDocumentItemsUi + .any { itemUi -> + itemUi.checked + } + } + } + + private fun hasAtLeastOneFieldSelected(list: List>): Boolean { + return list + .filterIsInstance>() + .any { optionalField -> + with(optionalField.optionalFieldItemUi.requestDocumentItemUi) { + enabled && checked + } + } + } } \ No newline at end of file