annotate Simoleon/Helpers/FavoriteRow.swift @ 187:13d5a8deb6c2

add AboutView and FavoritesView
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Thu, 23 Dec 2021 16:12:22 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
187
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
1 //
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
2 // FavoriteRow.swift
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
3 // Simoleon
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
4 //
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 23/12/21.
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
6 //
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
7
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
8 import SwiftUI
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
9
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10 struct FavoriteRow: View {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11 var baseCurrency: String
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
12 var quoteCurrency: String
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14 var body: some View {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 let baseCurrencyObject = getCurrencyObject(with: baseCurrency)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 let quoteCurrencyObject = getCurrencyObject(with: quoteCurrency)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17 NavigationLink(destination:
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 ConversionView(
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 showNavigationView: false,
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 baseCurrency: baseCurrencyObject,
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21 quoteCurrency: quoteCurrencyObject
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22 )
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
23 ) {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
24 HStack {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
25 Flag(currencyCode: baseCurrency)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
26 Flag(currencyCode: quoteCurrency)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
27 .offset(x: -25)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
28 .padding(.trailing, -25)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
29
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
30 let pairObject = getPairObject()
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
31 VStack(alignment: .leading) {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
32 Text(pairObject.symbol)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
33 .font(.headline)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
34
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
35 Text(pairObject.name)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
36 .font(.callout)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
37 .opacity(0.6)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
39 .padding(.leading)
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
40 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
41 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
44 // Get pair object
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
45 private func getPairObject() -> SupportedPairResult {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
46 let pairResponse: SupportedPairResponse = readJson(from: "SupportedCurrencies.json")
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47 let pair = pairResponse.pairs.filter { $0.fromCurrency == baseCurrency && $0.toCurrency == quoteCurrency }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
48
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
49 return pair.first!
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
50 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
51
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
52 // Get currency object
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
53 private func getCurrencyObject(with currencyCode: String) -> SupportedCurrencyResult {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
54 let currencyResponse: SupportedCurrencyResponse = readJson(from: "SupportedCurrencies.json")
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
55 let currency = currencyResponse.currencies.filter { $0.code == currencyCode }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
56
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
57 return currency.first!
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
58 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
59 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
60
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
61 struct FavoriteRow_Previews: PreviewProvider {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
62 static var previews: some View {
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
63 FavoriteRow(baseCurrency: "EUR", quoteCurrency: "USD")
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
64 }
13d5a8deb6c2 add AboutView and FavoritesView
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
65 }