Files
2023-03-09 19:00:06 +03:00

86 lines
2.7 KiB
Swift

//
// NetworkUIImage.swift
// Wallet
//
// Created by Igor on 23.03.2021.
// Copyright © 2021 AM. All rights reserved.
//
import UIKit
import AlamofireImage
// MARK: - REFACTOR
extension UIImage {
static func account(_ account: String, size: CGSize = .init(width: 56, height: 56)) -> UIImage {
draw(size: size) { (size,_) in
(.view {
$0.lzText = String(account.prefix(3))
$0.font = .font(style: .medium, size: 16)
$0.textColor = Asset.textPebble.color
$0.textAlignment = .center
} as UILabel).drawText(in: .init(origin: .zero, size: size))
Asset.marble.color.setStroke()
let path = UIBezierPath(ovalIn: .init(origin: .zero, size: size))
path.lineWidth = 2
path.stroke()
}
}
static func from(token: Network.Model.Token?) -> UIImage? {
guard let token = token else { return nil }
if token.contract.lowercased() == "rublesrubles" {
return UIImage(named: "token-\(token.symbol.lowercased())")
}
if token.contract.lowercased() == "eosiotptoken" {
return Asset.tokenTPT.image
}
if token.contract.lowercased() == "everipediaiq" {
return Asset.tokenIQ.image
}
if token.contract.lowercased() == "pizzatotoken" {
return Asset.tokenPizza.image
}
guard let contract = ApplicationEnvironment.shared().current.contract(token.contract) else { return nil }
switch contract {
case .cash:
if !token.isCertificate {
return UIImage(named: "token-\(token.symbol.lowercased())")
} else {
return Asset.tokenGT.image
}
case .list: return Asset.tokenLI.image
case .eosioToken: return Asset.tokenEOS.image
case .usdt: return Asset.tokenUSDT.image
case .swap:
if token.isMLNK {
return UIImage(named: "token-\(token.symbol.lowercased())")
} else {
return Asset.tokenSwap.image
}
default: return nil
}
}
}
extension UIImageView {
convenience init(token: Network.Model.Token) {
self.init()
self.setImageFrom(token: token)
}
func setImageFrom(token: Network.Model.Token) {
image = nil
if let image = UIImage.from(token: token) {
self.image = image
} else {
af.setImage(withURL: .from(symbol: token.symbol, contract: token.contract)) { [weak self] in
if $0.error != nil {
self?.af.setImage(withURL: .from(symbol: token.symbol))
}
}
}
}
}