diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListScreen.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListScreen.kt index 0bc72ea42a9..b31aeea8dd5 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListScreen.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListScreen.kt @@ -32,6 +32,7 @@ import com.woocommerce.android.ui.bookings.filter.type.BookingTypeFilterRoute import com.woocommerce.android.ui.compose.Render import com.woocommerce.android.ui.compose.component.Toolbar import com.woocommerce.android.ui.compose.component.WCColoredButton +import com.woocommerce.android.ui.compose.component.getText import com.woocommerce.android.ui.compose.preview.LightDarkThemePreviews import com.woocommerce.android.ui.compose.theme.WooThemeWithBackground @@ -41,7 +42,7 @@ fun BookingFilterListScreen(state: BookingFilterListUiState) { topBar = { Column { Toolbar( - title = stringResource(state.currentPage.titleRes), + title = state.title.getText(), onNavigationButtonClick = state.onClose, navigationIcon = ImageVector.vectorResource(id = state.navigationIcon) ) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListUiState.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListUiState.kt index 73e86229148..01986c48fa2 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListUiState.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListUiState.kt @@ -45,6 +45,23 @@ data class BookingFilterListUiState( initialBookingFilters?.bookingType ) ?: BookingsFilterOption.BookingType(BookingsFilterOption.BookingType.Type.ANY) + val updatedBookingFilters: BookingFilters + get() { + val initial = initialBookingFilters ?: BookingFilters() + return BookingFilters( + dateRange = newBookingFilters.getOrDefault(initial.dateRange), + customer = newBookingFilters.getOrDefault(initial.customer), + teamMember = newBookingFilters.getOrDefault(initial.teamMember), + attendanceStatus = newBookingFilters.getOrDefault(initial.attendanceStatus), + paymentStatus = newBookingFilters.getOrDefault(initial.paymentStatus), + bookingType = newBookingFilters.getOrDefault(initial.bookingType), + location = newBookingFilters.getOrDefault(initial.location), + serviceEvent = newBookingFilters.getOrDefault(initial.serviceEvent), + ) + } + + val updatedBookingFiltersCount = updatedBookingFilters.enabledFiltersCount + @DrawableRes val navigationIcon: Int = when (currentPage) { BookingFilterPage.List -> R.drawable.ic_gridicons_cross_24dp @@ -73,6 +90,18 @@ data class BookingFilterListUiState( BookingFilterPage.TeamMember, BookingFilterPage.List -> null } + + val title: UiString + get() = if (currentPage != BookingFilterPage.List) { + UiString.UiStringRes(currentPage.titleRes) + } else if (updatedBookingFiltersCount > 0) { + UiString.UiStringRes( + stringRes = R.string.bookings_filters_title_with_count, + params = listOf(UiString.UiStringText(updatedBookingFiltersCount.toString())) + ) + } else { + UiString.UiStringRes(R.string.bookings_filters_default_title) + } } val BookingFilterPage.titleRes: Int diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListViewModel.kt index d743db42813..5b50db47cad 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/bookings/filter/BookingFilterListViewModel.kt @@ -114,22 +114,3 @@ class BookingFilterListViewModel @Inject constructor( return updated != initial } } - -private val BookingFilterListUiState.updatedBookingFilters: BookingFilters - get() { - val initial = initialBookingFilters ?: BookingFilters() - val updates = this@updatedBookingFilters.newBookingFilters - - return BookingFilters( - dateRange = updates.getOrDefault(initial.dateRange), - customer = updates.getOrDefault(initial.customer), - teamMember = updates.getOrDefault( - initial.teamMember - ), - attendanceStatus = updates.getOrDefault(initial.attendanceStatus), - paymentStatus = updates.getOrDefault(initial.paymentStatus), - bookingType = updates.getOrDefault(initial.bookingType), - location = updates.getOrDefault(initial.location), - serviceEvent = updates.getOrDefault(initial.serviceEvent), - ) - } diff --git a/WooCommerce/src/main/res/values/strings.xml b/WooCommerce/src/main/res/values/strings.xml index 3483d2a5160..28e1c349a51 100644 --- a/WooCommerce/src/main/res/values/strings.xml +++ b/WooCommerce/src/main/res/values/strings.xml @@ -4236,7 +4236,7 @@ Clear filters Filters Filters • %d - Filters (%d) + Filters (%s) Show bookings Assigned team member Attendance status