73 lines
2.6 KiB
Swift
73 lines
2.6 KiB
Swift
//
|
|
// ResourcesServicePerformance.swift
|
|
// Wallet
|
|
//
|
|
// Created by Igor on 09.03.2021.
|
|
// Copyright © 2021 AM. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension Resources.Service {
|
|
class Performance: Common.Service.Provider {
|
|
|
|
private var collection = [Resources.Model.Performance]()
|
|
|
|
let account: String
|
|
|
|
private(set) var refund: String?
|
|
private(set) var refundTime: String?
|
|
|
|
init(account: String) {
|
|
self.account = account
|
|
}
|
|
|
|
subscript(_ kind: Resources.Model.Performance.Kind) -> Resources.Model.Performance {
|
|
if let value = collection.filter({ $0.kind == kind }).first { return value }
|
|
return .init(kind: kind)
|
|
}
|
|
|
|
func clear() {
|
|
collection = []
|
|
refund = nil
|
|
refundTime = nil
|
|
}
|
|
|
|
func fetch(_ completion: @escaping Completion.Network) {
|
|
Network.accounts.account(account) { (account) in
|
|
self.collection = [
|
|
.init(
|
|
kind: .cpu,
|
|
available: account?.cpuLimit.available,
|
|
max: account?.cpuLimit.max,
|
|
staked: account?.total.cpuWeight,
|
|
stakedByMe: account?.delegated?.cpuWeight
|
|
),
|
|
.init(
|
|
kind: .net,
|
|
available: account?.netLimit.available,
|
|
max: account?.netLimit.max,
|
|
staked: account?.total.netWeight,
|
|
stakedByMe: account?.delegated?.netWeight
|
|
),
|
|
.init(
|
|
kind: .ram,
|
|
available: (account?.ramQuota ?? 0) - (account?.ramUsage ?? 0),
|
|
max: account?.ramQuota
|
|
)
|
|
]
|
|
let refund = (account?.refund?.cpuAmount.amount.toDecimal() ?? 0) + (account?.refund?.netAmount.amount.toDecimal() ?? 0)
|
|
self.refund = refund > 0 ? refund.toString(max: .eosioToken) : nil
|
|
if var date = account?.refund?.date {
|
|
date.addTimeInterval(Double(TimeZone.init(abbreviation: "UTC")!.secondsFromGMT()) + 3*24*3600)
|
|
self.refundTime = date.timeIntervalSince1970 > Date().timeIntervalSince1970 ? Date().distance(to: date) : nil
|
|
} else {
|
|
self.refundTime = nil
|
|
}
|
|
completion(nil)
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|