BlueWallet/ios/TodayExtension/TodayDataStore.swift
Marcos Rodriguez 00bb9fe28b ADD: Today Extension and Quick Actions.
Update MainInterface.storyboard

ADD: Cache fetched data

ADD: Add "Up from/Down from" data

OPS: Add Provision Profile

Update project.pbxproj

ADD: Synchronize user selected currency with Today extension

Update Info.plist

ADD: quick actions

Update App.js

Update App.js

Update App.js

Update App.js

Update App.js

FIX: Fix currency bugs

FIX: Hide balance from quick actions

ADD: cqc

Update currency.js

Update TodayViewController.swift

Update App.js

REF: headercolor

Update App.js

FIX: carousel would not show

FIX: Fix

FIX

FIX

Update API.swift

FIX: Fixed alerts

TST

Revert "TST"

This reverts commit bcdf62e9b238cc5da200cc4bce45e4e55f480d6d.

ADD: Tests mocks

REF: Device Quick Actions ref

FIX: Fixed crash

Update quickActions.ios.js

ADD: QuickActions for Android

D

FIX: Tests

OP
2019-11-21 17:34:38 +00:00

89 lines
2.9 KiB
Swift

//
// TodayDataStore.swift
// TodayExtension
//
// Created by Marcos Rodriguez on 11/3/19.
// Copyright © 2019 Facebook. All rights reserved.
//
import Foundation
struct TodayDataStore {
let rate: String
let lastUpdate: String
var formattedDate: String? {
let isoDateFormatter = ISO8601DateFormatter()
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = .short
if let date = isoDateFormatter.date(from: lastUpdate) {
return dateFormatter.string(from: date)
}
return nil
}
var rateDoubleValue: Double? {
let rateDigits = rate.replacingOccurrences(of: ",", with: "");
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 2
numberFormatter.minimumFractionDigits = 2
if let rateDoubleValue = numberFormatter.number(from: rateDigits) {
return rateDoubleValue.doubleValue
}
return nil
}
var formattedRate: String? {
let rateDigits = rate.replacingOccurrences(of: ",", with: "");
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.maximumFractionDigits = 2
numberFormatter.minimumFractionDigits = 2
if let rateNumber = numberFormatter.number(from: rateDigits) {
numberFormatter.numberStyle = .currency
numberFormatter.locale = Locale(identifier: API.getUserPreferredCurrencyLocale())
return numberFormatter.string(from: rateNumber);
}
return nil
}
}
class TodayData {
static let TodayDataStoreKey = "TodayDataStoreKey"
static let TodayCachedDataStoreKey = "TodayCachedDataStoreKey"
static func savePriceRateAndLastUpdate(rate: String, lastUpdate: String) {
UserDefaults.standard.setValue(["rate": rate, "lastUpdate": lastUpdate], forKey: TodayDataStoreKey)
UserDefaults.standard.synchronize()
}
static func getPriceRateAndLastUpdate() -> TodayDataStore? {
guard let dataStore = UserDefaults.standard.value(forKey: TodayDataStoreKey) as? [String: String], let rate = dataStore["rate"], let lastUpdate = dataStore["lastUpdate"] else {
return nil
}
return TodayDataStore(rate: rate, lastUpdate: lastUpdate)
}
static func saveCachePriceRateAndLastUpdate(rate: String, lastUpdate: String) {
UserDefaults.standard.setValue(["rate": rate, "lastUpdate": lastUpdate], forKey: TodayCachedDataStoreKey)
UserDefaults.standard.synchronize()
}
static func getCachedPriceRateAndLastUpdate() -> TodayDataStore? {
guard let dataStore = UserDefaults.standard.value(forKey: TodayCachedDataStoreKey) as? [String: String], var rate = dataStore["rate"], let lastUpdate = dataStore["lastUpdate"] else {
return nil
}
rate = rate.replacingOccurrences(of: ",", with: "");
return TodayDataStore(rate: rate, lastUpdate: lastUpdate)
}
}