BlueWallet/ios/Widgets/Shared/Models.swift
2021-06-06 03:58:39 -04:00

74 lines
2.3 KiB
Swift

//
// Models.swift
// BlueWallet
//
// Created by Marcos Rodriguez on 11/1/20.
// Copyright © 2020 BlueWallet. All rights reserved.
//
import Foundation
struct MarketData:Codable {
var nextBlock: String
var sats: String
var price: String
var rate: Double
var formattedNextBlock: String {
return nextBlock == "..." ? "..." : #"\#(nextBlock) sat/b"#
}
var dateString: String = ""
var formattedDate: String? {
let isoDateFormatter = ISO8601DateFormatter()
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.timeStyle = .short
if let date = isoDateFormatter.date(from: dateString) {
return dateFormatter.string(from: date)
}
return nil
}
static let string = "MarketData"
}
struct WalletData {
var balance: Double
var latestTransactionTime: LatestTransaction = LatestTransaction(isUnconfirmed: false, epochValue: 0)
var formattedBalanceBTC: String {
let formatter = NumberFormatter()
formatter.numberStyle = .none
formatter.usesSignificantDigits = true
formatter.maximumSignificantDigits = 9
formatter.roundingMode = .up
let value = NSNumber(value: balance / 100000000);
if let valueString = formatter.string(from: value) {
return "\(String(describing: valueString)) BTC"
} else {
return "0 BTC"
}
}
}
struct LatestTransaction {
let isUnconfirmed: Bool?
let epochValue: Int?
}
let emptyMarketData = MarketData(nextBlock: "...", sats: "...", price: "...", rate: 0)
let emptyWalletData = WalletData(balance: 0, latestTransactionTime: LatestTransaction(isUnconfirmed: false, epochValue: Int(Date().timeIntervalSince1970)))
enum MarketDataTimeline: String {
case Previous = "previous"
case Current = "current"
}
enum UserDefaultsGroupKey: String {
case GroupName = "group.io.bluewallet.bluewallet"
case PreferredCurrency = "preferredCurrency"
case ElectrumSettingsHost = "electrum_host"
case ElectrumSettingsTCPPort = "electrum_tcp_port"
case ElectrumSettingsSSLPort = "electrum_ssl_port"
case AllWalletsBalance = "WidgetCommunicationAllWalletsSatoshiBalance"
case AllWalletsLatestTransactionTime = "WidgetCommunicationAllWalletsLatestTransactionTime"
case LatestTransactionIsUnconfirmed = "\"WidgetCommunicationLatestTransactionIsUnconfirmed\""
}