comparison Simoleon/Settings.swift @ 75:b6f8661300f2

Added isLocked to CurrencyPairs
author Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
date Fri, 30 Jul 2021 15:52:27 +0100
parents 2b85d6ed433e
children 822175ac4343
comparison
equal deleted inserted replaced
74:bfb959bee6d7 75:b6f8661300f2
18 @State private var alertTitle = "" 18 @State private var alertTitle = ""
19 @State private var alertMessage = "" 19 @State private var alertMessage = ""
20 @State private var showingAlert = false 20 @State private var showingAlert = false
21 @State private var searchCurrency = "" 21 @State private var searchCurrency = ""
22 22
23 let currencyPairs: [String] = parseJson("CurrencyPairs.json") 23 let currencyPairs: [CurrencyPairModel] = parseJson("CurrencyPairs.json")
24
25 /*
26 If searched currency string is empty:
27 * Show all currencies
28 else:
29 * Show filtered list of currencies containing searched currency string
30 */
31 var searchResults: [CurrencyPairModel] {
32 if searchCurrency.isEmpty {
33 return currencyPairs.sorted { $0.name < $1.name }
34 } else {
35 return currencyPairs.filter { $0.name.contains(searchCurrency.uppercased()) }
36 }
37 }
24 38
25 var body: some View { 39 var body: some View {
26 List { 40 List {
27 Section(header: Text("Preferences")) { 41 Section(header: Text("Preferences")) {
28 if entitlementIsActive { 42 if entitlementIsActive {
29 Picker("Default currency", selection: $selectedDefaultCurrency) { 43 Picker("Default currency", selection: $selectedDefaultCurrency) {
30 SearchBar(placeholder: "Search...", text: $searchCurrency) 44 SearchBar(placeholder: "Search...", text: $searchCurrency)
31 .padding(5) 45 .padding(5)
32 46
33 ForEach(searchResults, id: \.self) { currencyPair in 47 ForEach(searchResults, id: \.self) { currencyPair in
34 Text(currencyPair) 48 Text(currencyPair.name)
35 } 49 }
36 } 50 }
37 } else { 51 } else {
38 LockedCurrencyPicker() 52 LockedCurrencyPicker()
39 .contentShape(Rectangle()) 53 .contentShape(Rectangle())
113 } 127 }
114 .if(UIDevice.current.userInterfaceIdiom == .phone) { content in 128 .if(UIDevice.current.userInterfaceIdiom == .phone) { content in
115 NavigationView { content } 129 NavigationView { content }
116 } 130 }
117 } 131 }
118
119 /*
120 If searched currency string is empty:
121 * Show all currencies
122 else:
123 * Show filtered list of currencies containing searched currency string
124 */
125 var searchResults: [String] {
126 if searchCurrency.isEmpty {
127 return currencyPairs.sorted()
128 } else {
129 return currencyPairs.filter { $0.contains(searchCurrency.uppercased()) }
130 }
131 }
132
133 132
134 // Save default currency to core data 133 // Save default currency to core data
135 private func setCoreData() { 134 private func setCoreData() {
136 if defaultCurrency.isEmpty { // If it's empty -> add record 135 if defaultCurrency.isEmpty { // If it's empty -> add record
137 let defaultCurrency = DefaultCurrency(context: viewContext) 136 let defaultCurrency = DefaultCurrency(context: viewContext)