Skip to content

Commit 9ddea74

Browse files
committed
refactor(search): use of xml strings instead of hardcoded values
1 parent 1467aa2 commit 9ddea74

File tree

5 files changed

+53
-39
lines changed

5 files changed

+53
-39
lines changed

feature/search/src/commonMain/composeResources/values-es/feature_search_strings.xml

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,14 @@
2323
<string name="feature_search_close">Cerrar</string>
2424
<string name="feature_search_all">Todos</string>
2525

26-
<string-array name="feature_search_filter_options">
27-
<item>Clientes</item>
28-
<item>Grupos</item>
29-
<item>Centros</item>
30-
<item>Cuentas de préstamo</item>
31-
<item>Cuentas de ahorro</item>
32-
</string-array>
33-
34-
<string-array name="feature_search_filter_option_values">
35-
<item>clients</item>
36-
<item>groups</item>
37-
<item>centers</item>
38-
<item>loans</item>
39-
<item>savingsaccounts</item>
40-
</string-array>
26+
<string name="feature_search_filter_options_clients_label">Clientes</string>
27+
<string name="feature_search_filter_options_clients_value">clients</string>
28+
<string name="feature_search_filter_options_groups_label">Grupos</string>
29+
<string name="feature_search_filter_options_groups_value">groups</string>
30+
<string name="feature_search_filter_options_centers_label">Centros</string>
31+
<string name="feature_search_filter_options_centers_value">centers</string>
32+
<string name="feature_search_filter_options_loans_label">Cuentas de préstamo</string>
33+
<string name="feature_search_filter_options_loans_value">loans</string>
34+
<string name="feature_search_filter_options_savings_label">Cuentas de ahorro</string>
35+
<string name="feature_search_filter_options_savings_value">savingsaccounts</string>
4136
</resources>

feature/search/src/commonMain/composeResources/values/feature_search_strings.xml

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,14 @@
2323
<string name="feature_search_close">Close</string>
2424
<string name="feature_search_all">All</string>
2525

26-
<string-array name="feature_search_filter_options">
27-
<item>Clients</item>
28-
<item>Groups</item>
29-
<item>Centers</item>
30-
<item>Loan Accounts</item>
31-
<item>Savings Accounts</item>
32-
</string-array>
33-
34-
<string-array name="feature_search_filter_option_values">
35-
<item>clients</item>
36-
<item>groups</item>
37-
<item>centers</item>
38-
<item>loans</item>
39-
<item>savingsaccounts</item>
40-
</string-array>
26+
<string name="feature_search_filter_options_clients_label">Clients</string>
27+
<string name="feature_search_filter_options_clients_value">clients</string>
28+
<string name="feature_search_filter_options_groups_label">Groups</string>
29+
<string name="feature_search_filter_options_groups_value">groups</string>
30+
<string name="feature_search_filter_options_centers_label">Centers</string>
31+
<string name="feature_search_filter_options_centers_value">centers</string>
32+
<string name="feature_search_filter_options_loans_label">Loan Accounts</string>
33+
<string name="feature_search_filter_options_loans_value">loans</string>
34+
<string name="feature_search_filter_options_savings_label">Savings Accounts</string>
35+
<string name="feature_search_filter_options_savings_value">savingsaccounts</string>
4136
</resources>

feature/search/src/commonMain/kotlin/com/mifos/feature/search/SearchViewModel.kt

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@
99
*/
1010
package com.mifos.feature.search
1111

12+
import androidclient.feature.search.generated.resources.Res
13+
import androidclient.feature.search.generated.resources.feature_search_filter_options_clients_label
14+
import androidclient.feature.search.generated.resources.feature_search_filter_options_clients_value
15+
import androidclient.feature.search.generated.resources.feature_search_filter_options_groups_label
16+
import androidclient.feature.search.generated.resources.feature_search_filter_options_groups_value
17+
import androidclient.feature.search.generated.resources.feature_search_filter_options_loans_label
18+
import androidclient.feature.search.generated.resources.feature_search_filter_options_loans_value
19+
import androidclient.feature.search.generated.resources.feature_search_filter_options_savings_label
20+
import androidclient.feature.search.generated.resources.feature_search_filter_options_savings_value
1221
import androidx.compose.runtime.mutableStateOf
1322
import androidx.lifecycle.ViewModel
1423
import androidx.lifecycle.viewModelScope
@@ -24,6 +33,8 @@ import kotlinx.coroutines.flow.onEach
2433
import kotlinx.coroutines.flow.onStart
2534
import kotlinx.coroutines.flow.update
2635
import kotlinx.coroutines.launch
36+
import org.jetbrains.compose.resources.StringResource
37+
import org.jetbrains.compose.resources.getString
2738

2839
class SearchViewModel(
2940
private val searchRepository: SearchRepository,
@@ -96,7 +107,7 @@ class SearchViewModel(
96107
state.value = state.value.copy(showEmptyError = false)
97108
searchJob = searchRepository.searchResources(
98109
query = state.value.searchText,
99-
resources = state.value.selectedFilter?.value,
110+
resources = state.value.selectedFilter?.let { getString(it.valueRes) },
100111
exactMatch = state.value.exactMatch,
101112
).onStart {
102113
searchResultState.update { SearchResultState.Loading }
@@ -157,16 +168,27 @@ sealed interface SearchScreenEvent {
157168
data object PerformSearch : SearchScreenEvent
158169
}
159170

160-
sealed class FilterOption(val label: String, val value: String) {
171+
sealed class FilterOption(val labelRes: StringResource, val valueRes: StringResource) {
161172

162-
data object Clients : FilterOption(label = "Clients", value = "clients")
173+
data object Clients : FilterOption(
174+
labelRes = Res.string.feature_search_filter_options_clients_label,
175+
valueRes = Res.string.feature_search_filter_options_clients_value,
176+
)
163177

164-
data object Groups : FilterOption(label = "Groups", value = "groups")
178+
data object Groups : FilterOption(
179+
labelRes = Res.string.feature_search_filter_options_groups_label,
180+
valueRes = Res.string.feature_search_filter_options_groups_value,
181+
)
165182

166-
data object LoanAccounts : FilterOption(label = "Loan Accounts", value = "loans")
183+
data object LoanAccounts : FilterOption(
184+
labelRes = Res.string.feature_search_filter_options_loans_label,
185+
valueRes = Res.string.feature_search_filter_options_loans_value,
186+
)
167187

168-
data object SavingsAccounts :
169-
FilterOption(label = "Savings Accounts", value = "savingsaccounts")
188+
data object SavingsAccounts : FilterOption(
189+
labelRes = Res.string.feature_search_filter_options_savings_label,
190+
valueRes = Res.string.feature_search_filter_options_savings_value,
191+
)
170192

171193
companion object {
172194
val values = listOf(Clients, Groups, LoanAccounts, SavingsAccounts)

feature/search/src/commonMain/kotlin/com/mifos/feature/search/components/FilterDialog.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ internal fun FilterDialog(
7575
HorizontalDivider()
7676
FilterOption.values.forEachIndexed { index, option ->
7777
FilterOption(
78-
text = option.label,
78+
text = stringResource(option.labelRes),
7979
selected = option == selectedFilter,
8080
onSelected = {
8181
selectedFilter = option

feature/search/src/commonMain/kotlin/com/mifos/feature/search/components/SearchBox.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package com.mifos.feature.search.components
1111

1212
import androidclient.feature.search.generated.resources.Res
13+
import androidclient.feature.search.generated.resources.feature_search_all
1314
import androidclient.feature.search.generated.resources.feature_search_empty_input_field
1415
import androidclient.feature.search.generated.resources.feature_search_exact_match
1516
import androidclient.feature.search.generated.resources.feature_search_search_hint
@@ -83,7 +84,8 @@ internal fun SearchBox(
8384
},
8485
label = {
8586
Text(
86-
text = state.selectedFilter?.label ?: "All",
87+
text = state.selectedFilter?.let { stringResource(it.labelRes) }
88+
?: stringResource(Res.string.feature_search_all),
8789
style = MaterialTheme.typography.bodyLarge,
8890
)
8991
},

0 commit comments

Comments
 (0)