Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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),
)
}
2 changes: 1 addition & 1 deletion WooCommerce/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4236,7 +4236,7 @@
<string name="bookings_empty_state_clear_filters_button">Clear filters</string>
<string name="bookings_filters_default_title">Filters</string>
<string name="bookings_filters_enabled_title">Filters • %d</string>
<string name="bookings_filters_count_title">Filters (%d)</string>
<string name="bookings_filters_title_with_count">Filters (%s)</string>
Copy link

Copilot AI Nov 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The string resource key has been renamed from bookings_filters_count_title to bookings_filters_title_with_count in the main strings.xml file, but the old key still exists in all localization files (values-ar, values-de, values-es, values-fr, values-he, values-id, values-it, values-ja, values-ko, values-nl, values-pt-rBR, values-ru, values-sv, values-tr, values-zh-rCN, values-zh-rTW). These localization files should also be updated to use the new key name to maintain consistency across all translations.

Copilot uses AI. Check for mistakes.
<string name="bookings_filters_show_bookings">Show bookings</string>
<string name="bookings_filter_title_team_member">Assigned team member</string>
<string name="bookings_filter_title_attendance_status">Attendance status</string>
Expand Down
Loading