diff --git a/Guap.xcodeproj/project.pbxproj b/Guap.xcodeproj/project.pbxproj index 6a11fdf..4789210 100644 --- a/Guap.xcodeproj/project.pbxproj +++ b/Guap.xcodeproj/project.pbxproj @@ -20,7 +20,7 @@ 23BEB065270E8F0C00BCCA71 /* PrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB064270E8F0C00BCCA71 /* PrimaryButton.swift */; }; 23BEB067270E991100BCCA71 /* ConverterTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB066270E991100BCCA71 /* ConverterTextField.swift */; }; 23BEB06C270EA6FB00BCCA71 /* K.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB06B270EA6FB00BCCA71 /* K.swift */; }; - 23BEB072270EBACA00BCCA71 /* FiatDataNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB071270EBACA00BCCA71 /* FiatDataNetworkManager.swift */; }; + 23BEB072270EBACA00BCCA71 /* FiatCurrencyNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB071270EBACA00BCCA71 /* FiatCurrencyNetworkManager.swift */; }; 23BEB075270EC72900BCCA71 /* currencies.json in Resources */ = {isa = PBXBuildFile; fileRef = 23BEB074270EC72900BCCA71 /* currencies.json */; }; 23BEB078270EC7D900BCCA71 /* FiatCurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB077270EC7D900BCCA71 /* FiatCurrency.swift */; }; 23BEB07C270ED05500BCCA71 /* CurrencyTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23BEB07B270ED05500BCCA71 /* CurrencyTableViewController.swift */; }; @@ -63,7 +63,7 @@ 23BEB064270E8F0C00BCCA71 /* PrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryButton.swift; sourceTree = ""; }; 23BEB066270E991100BCCA71 /* ConverterTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConverterTextField.swift; sourceTree = ""; }; 23BEB06B270EA6FB00BCCA71 /* K.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = K.swift; sourceTree = ""; }; - 23BEB071270EBACA00BCCA71 /* FiatDataNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatDataNetworkManager.swift; sourceTree = ""; }; + 23BEB071270EBACA00BCCA71 /* FiatCurrencyNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatCurrencyNetworkManager.swift; sourceTree = ""; }; 23BEB074270EC72900BCCA71 /* currencies.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = currencies.json; sourceTree = ""; }; 23BEB077270EC7D900BCCA71 /* FiatCurrency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiatCurrency.swift; sourceTree = ""; }; 23BEB07B270ED05500BCCA71 /* CurrencyTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyTableViewController.swift; sourceTree = ""; }; @@ -239,7 +239,7 @@ 23BEB070270EBAAF00BCCA71 /* Managers */ = { isa = PBXGroup; children = ( - 23BEB071270EBACA00BCCA71 /* FiatDataNetworkManager.swift */, + 23BEB071270EBACA00BCCA71 /* FiatCurrencyNetworkManager.swift */, ); path = Managers; sourceTree = ""; @@ -408,7 +408,7 @@ 2334904B27122D380013DA8B /* FiatExchangeRate.swift in Sources */, 23BEB035270E57B100BCCA71 /* ConverterViewController.swift in Sources */, 23BEB0822710DB2900BCCA71 /* ConverterParameter.swift in Sources */, - 23BEB072270EBACA00BCCA71 /* FiatDataNetworkManager.swift in Sources */, + 23BEB072270EBACA00BCCA71 /* FiatCurrencyNetworkManager.swift in Sources */, 23BEB06C270EA6FB00BCCA71 /* K.swift in Sources */, 23BEB031270E57B100BCCA71 /* AppDelegate.swift in Sources */, 23349049271178DE0013DA8B /* CurrencyTableViewCell.swift in Sources */, diff --git a/Guap/Controllers/Converter/ConverterViewController.swift b/Guap/Controllers/Converter/ConverterViewController.swift index c99b78b..ea95aa7 100644 --- a/Guap/Controllers/Converter/ConverterViewController.swift +++ b/Guap/Controllers/Converter/ConverterViewController.swift @@ -11,11 +11,13 @@ class ConverterViewController: UIViewController { // MARK: - Properties - let fiatDataManager = FiatDataNetworkManager() + let defaultBaseCurrency = "USD" + let defaultTargetCurrency = "JPY" + let fiatDataManager = FiatCurrencyNetworkManager() var currencies: [FiatCurrency]? - var baseCurrencyButton = PrimaryButton(title: "...", color: .white, background: .systemGray6) - var targetCurrencyButton = PrimaryButton(title: "...", color: .white, background: .systemGray6) + var baseCurrencyButton = PrimaryButton(title: "Base", color: .white, background: .systemGray6) + var targetCurrencyButton = PrimaryButton(title: "Target", color: .white, background: .systemGray6) var convertButton = PrimaryButton(title: K.Labels.convertButton, color: .white, background: .systemGreen) var baseValueTextView = ConverterTextField(label: "Convert from: ") @@ -65,13 +67,13 @@ class ConverterViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - fetchFiatCurrencies() configureViewController() configureTargetButton() applyLayouts() applyGestures() - fiatDataManager.fetchPairConversionRate(baseCode: "USD", targetCode: "JPY") + fetchFiatCurrencies() + fetchFiatExchangeRate(baseCode: defaultBaseCurrency, targetCode: defaultTargetCurrency) } // MARK: - Configurations @@ -154,12 +156,19 @@ private extension ConverterViewController { fiatDataManager.getCurrenciesList { [weak self] data in // TODO: Perform O(1) lookup here with a Set instead of using .first - self?.baseCurrencyData = data?.first(where: { currencyData in currencyData.iso4217 == "USD" }) - self?.targetCurrencyData = data?.first(where: { currencyData in currencyData.iso4217 == "JPY" }) + self?.baseCurrencyData = data?.first(where: { [weak self] currencyData in currencyData.iso4217 == self?.defaultBaseCurrency }) + self?.targetCurrencyData = data?.first(where: { [weak self] currencyData in currencyData.iso4217 == self?.defaultTargetCurrency }) self?.currencies = data } } + func fetchFiatExchangeRate(baseCode: String, targetCode: String) { + fiatDataManager.fetchPairExchangeRate(baseCode: baseCode, targetCode: targetCode) { responseData in + print("Got conversion data") + print(responseData) + } + } + } // MARK: - Layout diff --git a/Guap/Controllers/CurrencyTable/CurrencyTableViewController.swift b/Guap/Controllers/CurrencyTable/CurrencyTableViewController.swift index 8633129..f4fbc3c 100644 --- a/Guap/Controllers/CurrencyTable/CurrencyTableViewController.swift +++ b/Guap/Controllers/CurrencyTable/CurrencyTableViewController.swift @@ -12,7 +12,7 @@ class CurrencyTableViewController: UITableViewController { // MARK: - Properties - let dataManager = FiatDataNetworkManager() + let dataManager = FiatCurrencyNetworkManager() var selectionHandler: ((_: FiatCurrency?, _ type: ConverterParameter?) -> Void) var selectionType: ConverterParameter var currencies: [FiatCurrency]? diff --git a/Guap/Managers/FiatDataNetworkManager.swift b/Guap/Managers/FiatCurrencyNetworkManager.swift similarity index 92% rename from Guap/Managers/FiatDataNetworkManager.swift rename to Guap/Managers/FiatCurrencyNetworkManager.swift index 9791726..541bc40 100644 --- a/Guap/Managers/FiatDataNetworkManager.swift +++ b/Guap/Managers/FiatCurrencyNetworkManager.swift @@ -1,5 +1,5 @@ // -// FiatDataNetworkManager.swift +// FiatCurrencyNetworkManager.swift // Guap // // Created by Arnaldo Rozon on 10/7/21. @@ -7,7 +7,7 @@ import Foundation -class FiatDataNetworkManager { +class FiatCurrencyNetworkManager { // MARK: - Types @@ -90,7 +90,7 @@ class FiatDataNetworkManager { // MARK: - Networking - func fetchPairConversionRate(baseCode: String, targetCode: String, completion: @escaping (_ responseData: Result) -> Void) { + func fetchPairExchangeRate(baseCode: String, targetCode: String, completion: @escaping (_ responseData: Result) -> Void) { guard let requestUrl = URL(string: "https://8c4e-2601-241-8c01-2ff0-3106-9534-bad8-f013.ngrok.io/fiat/pair") else { return } @@ -116,7 +116,7 @@ class FiatDataNetworkManager { } do { - let decodedData = try self?.decoder.decode(FiatExchangeRateResponseData.self, from: data) + let decodedData = try self?.decoder.decode(FiatExchangeRateResponse.self, from: data) guard let decodedData = decodedData else { throw NetworkManagerErrors.dataError diff --git a/Guap/Models/Fiat/FiatExchangeRate.swift b/Guap/Models/Fiat/FiatExchangeRate.swift index e678092..e8a7ad4 100644 --- a/Guap/Models/Fiat/FiatExchangeRate.swift +++ b/Guap/Models/Fiat/FiatExchangeRate.swift @@ -14,7 +14,7 @@ struct FiatExchangeRateBody: Codable { var targetCode: String } -struct FiatExchangeRateResponse: Codable { +struct FiatExchangeRateData: Codable { var baseCode: String var targetCode: String var conversionRate: Decimal @@ -22,8 +22,8 @@ struct FiatExchangeRateResponse: Codable { // MARK: - API Responses -struct FiatExchangeRateResponseData: Codable { +struct FiatExchangeRateResponse: Codable { var success: Bool - var data: FiatExchangeRateResponse + var data: FiatExchangeRateData var error: Bool? }