diff --git a/iosApp/iosApp/CurrencyPickerSheet.swift b/iosApp/iosApp/CurrencyPickerSheet.swift index 995b61e..92de1f9 100644 --- a/iosApp/iosApp/CurrencyPickerSheet.swift +++ b/iosApp/iosApp/CurrencyPickerSheet.swift @@ -36,9 +36,20 @@ struct CurrencyPickerSheet: View { } let matchingUnselected = unselectedCurrencies.filter(matches) - if !matchingUnselected.isEmpty { - Section(IosLocalizationKt.localizedString(resource: MR.strings.shared.currencies_section_title)) { - ForEach(matchingUnselected, id: \.code) { info in + let unselectedPriced = matchingUnselected.filter { pricedCurrencyCodes.contains($0.code) } + let unselectedUnpriced = matchingUnselected.filter { !pricedCurrencyCodes.contains($0.code) } + + if !unselectedPriced.isEmpty { + Section(IosLocalizationKt.localizedString(resource: MR.strings.shared.priced_currencies_section_title)) { + ForEach(unselectedPriced, id: \.code) { info in + currencyRow(for: info, isSelected: false, onTap: { onToggle(info.code) }) + } + } + } + + if !unselectedUnpriced.isEmpty { + Section(IosLocalizationKt.localizedString(resource: MR.strings.shared.unpriced_currencies_section_title)) { + ForEach(unselectedUnpriced, id: \.code) { info in currencyRow(for: info, isSelected: false, onTap: { onToggle(info.code) }) } } diff --git a/shared/src/commonMain/kotlin/xyz/tyiu/satsprice/ui/PriceScreen.kt b/shared/src/commonMain/kotlin/xyz/tyiu/satsprice/ui/PriceScreen.kt index 036ae9e..d52c34c 100644 --- a/shared/src/commonMain/kotlin/xyz/tyiu/satsprice/ui/PriceScreen.kt +++ b/shared/src/commonMain/kotlin/xyz/tyiu/satsprice/ui/PriceScreen.kt @@ -591,19 +591,43 @@ private fun CurrencyPickerScreen( } } - if (unselected.isNotEmpty()) { + val (unselectedPriced, unselectedUnpriced) = unselected.partition { state.isPriced(it.code) } + + if (unselectedPriced.isNotEmpty()) { Column { Text( - stringResource(MR.strings.currencies_section_title).uppercase(), + stringResource(MR.strings.priced_currencies_section_title).uppercase(), style = SectionHeaderStyle, modifier = Modifier.padding(bottom = 4.dp), ) - unselected.forEach { info -> + unselectedPriced.forEach { info -> key(info.code) { CurrencyRow( info = info, isSelected = false, - isPriced = state.isPriced(info.code), + isPriced = true, + sourceName = state.sourceName, + localeCurrencyCode = state.localeCurrencyCode, + onClick = { onToggle(info.code) }, + ) + } + } + } + } + + if (unselectedUnpriced.isNotEmpty()) { + Column { + Text( + stringResource(MR.strings.unpriced_currencies_section_title).uppercase(), + style = SectionHeaderStyle, + modifier = Modifier.padding(bottom = 4.dp), + ) + unselectedUnpriced.forEach { info -> + key(info.code) { + CurrencyRow( + info = info, + isSelected = false, + isPriced = false, sourceName = state.sourceName, localeCurrencyCode = state.localeCurrencyCode, onClick = { onToggle(info.code) }, diff --git a/shared/src/commonMain/moko-resources/base/strings.xml b/shared/src/commonMain/moko-resources/base/strings.xml index 4943d5f..bb6fbb8 100644 --- a/shared/src/commonMain/moko-resources/base/strings.xml +++ b/shared/src/commonMain/moko-resources/base/strings.xml @@ -19,10 +19,12 @@ Move to top Move up Price Source + Priced Currencies Refresh Remove Retry Sats Search currencies Selected Currencies + Unpriced Currencies