BlueWallet/ios/WalletInformationWidget/Widgets/Shared/WidgetDataStore.swift

73 lines
2.3 KiB
Swift
Raw Normal View History

2020-10-30 10:19:38 -04:00
//
// TodayDataStore.swift
// TodayExtension
//
// Created by Marcos Rodriguez on 11/3/19.
// Copyright © 2019 Facebook. All rights reserved.
//
import Foundation
2020-11-02 08:11:28 -05:00
struct WidgetDataStore {
2020-10-30 10:19:38 -04:00
let rate: String
let lastUpdate: String
var rateDoubleValue: Double? {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
if let rateDoubleValue = numberFormatter.number(from: rate) {
return rateDoubleValue.doubleValue
}
return nil
}
var formattedRate: String? {
let numberFormatter = NumberFormatter()
2020-11-02 08:11:28 -05:00
numberFormatter.locale = Locale(identifier: WidgetAPI.getUserPreferredCurrencyLocale())
2020-10-30 10:19:38 -04:00
numberFormatter.numberStyle = .decimal
2020-11-02 08:11:28 -05:00
numberFormatter.maximumFractionDigits = 0
numberFormatter.minimumFractionDigits = 0
2020-10-30 10:19:38 -04:00
if let rateNumber = numberFormatter.number(from: rate) {
numberFormatter.numberStyle = .currency
return numberFormatter.string(from: rateNumber);
}
return rate
}
}
2020-11-02 08:11:28 -05:00
class WidgetData {
2020-10-30 10:19:38 -04:00
2020-11-02 08:11:28 -05:00
static let WidgetDataStoreKey = "WidgetDataStoreKey"
static let WidgetCachedDataStoreKey = "WidgetCachedDataStoreKey"
2020-10-30 10:19:38 -04:00
static func savePriceRateAndLastUpdate(rate: String, lastUpdate: String) {
2020-11-02 08:11:28 -05:00
UserDefaults.standard.setValue(["rate": rate, "lastUpdate": lastUpdate], forKey: WidgetDataStoreKey)
2020-10-30 10:19:38 -04:00
UserDefaults.standard.synchronize()
}
2020-11-02 08:11:28 -05:00
static func getPriceRateAndLastUpdate() -> WidgetDataStore? {
guard let dataStore = UserDefaults.standard.value(forKey: WidgetDataStoreKey) as? [String: String], let rate = dataStore["rate"], let lastUpdate = dataStore["lastUpdate"] else {
2020-10-30 10:19:38 -04:00
return nil
}
2020-11-02 08:11:28 -05:00
return WidgetDataStore(rate: rate, lastUpdate: lastUpdate)
2020-10-30 10:19:38 -04:00
}
static func saveCachePriceRateAndLastUpdate(rate: String, lastUpdate: String) {
2020-11-02 08:11:28 -05:00
UserDefaults.standard.setValue(["rate": rate, "lastUpdate": lastUpdate], forKey: WidgetCachedDataStoreKey)
2020-10-30 10:19:38 -04:00
UserDefaults.standard.synchronize()
}
2020-11-02 08:11:28 -05:00
static func getCachedPriceRateAndLastUpdate() -> WidgetDataStore? {
guard let dataStore = UserDefaults.standard.value(forKey: WidgetCachedDataStoreKey) as? [String: String], var rate = dataStore["rate"], let lastUpdate = dataStore["lastUpdate"] else {
2020-10-30 10:19:38 -04:00
return nil
}
rate = rate.replacingOccurrences(of: ",", with: "");
2020-11-02 08:11:28 -05:00
return WidgetDataStore(rate: rate, lastUpdate: lastUpdate)
2020-10-30 10:19:38 -04:00
}
}