Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Configurations/Tonkeeper.xcconfig
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ APP_GROUP_IDENTIFIER = group.$(BASE_BUNDLE_IDENTIFIER)

KEYCHAIN_ACCESS_GROUP = $(BASE_BUNDLE_IDENTIFIER).shared

APP_VERSION = 5.1.2
APP_VERSION = 5.2.0
BUILD_NUMBER = 1

PLATFORM = ios
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ final class BackupCheckCoordinator: RouterCoordinator<NavigationControllerRouter

override func start() {
var provider = BackupRecoveryPhraseDataProvider(
wallet: wallet,
phrase: phrase
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ struct BackupRecoveryPhraseDataProvider: TKRecoveryPhraseDataProvider {
createModel()
}

private let wallet: Wallet
private let phrase: [String]

init(phrase: [String]) {
init(wallet: Wallet,
phrase: [String]) {
self.wallet = wallet
self.phrase = phrase
}
}
Expand All @@ -29,21 +32,30 @@ private extension BackupRecoveryPhraseDataProvider {
}
)

var buttons = [TKButton.Configuration]()

var copyButtonConfiguration = TKButton.Configuration.actionButtonConfiguration(
category: .secondary,
size: .medium
)
copyButtonConfiguration.content = TKButton.Configuration.Content(
title: .plainString(TKLocales.Actions.copy),
icon: .TKUIKit.Icons.Size16.copy
)
copyButtonConfiguration.action = { [phrase] in
UINotificationFeedbackGenerator().notificationOccurred(.warning)
UIPasteboard.general.string = phrase.joined(separator: " ")
ToastPresenter.showToast(configuration: .copied)
}
buttons.append(copyButtonConfiguration)

return TKRecoveryPhraseView.Model(
titleDescriptionModel: TKTitleDescriptionView.Model(
title: TKLocales.Backup.Check.title,
bottomDescription: TKLocales.Backup.Check.caption
title: TKLocales.Backup.Show.title,
bottomDescription: TKLocales.Backup.Show.caption
),
phraseListViewModel: phraseListViewModel,
buttons: [
TKRecoveryPhraseView.Model.Button(
model: TKUIActionButton.Model(title: TKLocales.Backup.Check.Button.title),
category: .primary,
action: {
self.didTapNext?()
}
)
]
buttons: buttons
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import Foundation
import KeeperCore
import TKLocalize

struct BatteryChargesMapper {

private let batteryCalculation: BatteryCalculation

init(batteryCalculation: BatteryCalculation) {
self.batteryCalculation = batteryCalculation
}

func getChargesCountString(transaction: BatterySupportedTransaction, wallet: Wallet) -> String {
let perPart: String
let charges: String
switch transaction {
case .swap:
perPart = TKLocales.Battery.Settings.Items.Swaps.caption
if let chargesCount = batteryCalculation.calculateSwapsMinimumChargesAmount(isTestnet: wallet.isTestnet) {
charges = "\u{2248} \(chargesCount) \(TKLocales.Battery.Refill.chargesCount(count: chargesCount))"
} else {
charges = "? \(TKLocales.Battery.Refill.Charges.many)"
}
case .jetton:
perPart = TKLocales.Battery.Settings.Items.Token.caption
if let chargesCount = batteryCalculation.calculateTokenTransferMinimumChargesAmount(isTestnet: wallet.isTestnet) {
charges = "\u{2248} \(chargesCount) \(TKLocales.Battery.Refill.chargesCount(count: chargesCount))"
} else {
charges = "? \(TKLocales.Battery.Refill.Charges.many)"
}
case .nft:
perPart = TKLocales.Battery.Settings.Items.Nft.caption
if let chargesCount = batteryCalculation.calculateNFTTransferMinimumChargesAmount(isTestnet: wallet.isTestnet) {
charges = "\u{2248} \(chargesCount) \(TKLocales.Battery.Refill.chargesCount(count: chargesCount))"
} else {
charges = "? \(TKLocales.Battery.Refill.Charges.many)"
}
case .trc20:
perPart = TKLocales.Battery.Settings.Items.Trc20.caption
if let min = batteryCalculation.calculateTRC20MinimumChargesAmount(isTestnet: wallet.isTestnet),
let max = batteryCalculation.calculateTRC20MaximumChargesAmount(isTestnet: wallet.isTestnet) {
charges = "\u{2248} \(min) - \(max) \(TKLocales.Battery.Refill.chargesCount(count: max))"
} else {
charges = "? \(TKLocales.Battery.Refill.Charges.many)"
}
}
return "\(charges) \(perPart)"
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import Foundation
import KeeperCore
import TKLocalize

enum BatterySupportedTransaction: String, CaseIterable {
case swap
case jetton
case nft
case trc20

var name: String {
switch self {
Expand All @@ -14,20 +16,18 @@ enum BatterySupportedTransaction: String, CaseIterable {
TKLocales.Battery.Settings.Items.Token.title
case .nft:
TKLocales.Battery.Settings.Items.Nft.title
case .trc20:
TKLocales.Battery.Settings.Items.Trc20.title
}
}

func caption(chargesCount: Int) -> String {
let perPart: String
switch self {
case .swap:
perPart = TKLocales.Battery.Settings.Items.Swaps.caption
case .jetton:
perPart = TKLocales.Battery.Settings.Items.Token.caption
case .nft:
perPart = TKLocales.Battery.Settings.Items.Nft.caption
}

extension Wallet {
var supportedBatteryTransactions: [BatterySupportedTransaction] {
var transactions: [BatterySupportedTransaction] = [.swap, .jetton, .nft]
if isTronTurnOn {
transactions.append(.trc20)
}

return "\u{2248} \(chargesCount) \(TKLocales.Battery.Refill.chargesCount(count: chargesCount)) \(perPart)"
return transactions
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ private extension BatteryRefillCoordinator {

func openRecharge(item: BatteryRefillRechargeMethodsModel.RechargeMethodItem,
promocodeStore: BatteryPromocodeStore) {
let rechargeToken: Token
let rechargeToken: TonToken
let isGift: Bool
switch item {
case .token(let token):
Expand Down Expand Up @@ -190,7 +190,7 @@ private extension BatteryRefillCoordinator {
)
}

func openTokenPicker(token: Token, completion: @escaping (Token) -> Void) {
func openTokenPicker(token: TonToken, completion: @escaping (TonToken) -> Void) {
let model = BatteryTokenPickerModel(
wallet: wallet,
selectedToken: token,
Expand All @@ -208,7 +208,11 @@ private extension BatteryRefillCoordinator {
let bottomSheetViewController = TKBottomSheetViewController(contentViewController: module.view)

module.output.didSelectToken = { token in
completion(token)
switch token {
case .tronUSDT: break
case .ton(let token):
completion(token)
}
}

module.output.didFinish = { [weak bottomSheetViewController] in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import KeeperCore
struct BatteryRechargeAssembly {
private init() {}
static func module(wallet: Wallet,
token: Token,
token: TonToken,
isGift: Bool,
promocodeStore: BatteryPromocodeStore,
keeperCoreMainAssembly: KeeperCore.MainAssembly,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,15 @@ final class BatteryRechargeModel {
}
}

var token: Token {
var token: TonToken {
didSet {
start()

}
}

var promocode: String?
var recipient: Recipient? {
var recipient: TonRecipient? {
didSet {
updateIsContinueEnable()
}
Expand All @@ -128,7 +128,7 @@ final class BatteryRechargeModel {
private let configuration: Configuration
let isGift: Bool

init(token: Token,
init(token: TonToken,
wallet: Wallet,
balanceStore: BalanceStore,
currencyStore: CurrencyStore,
Expand Down Expand Up @@ -162,7 +162,7 @@ final class BatteryRechargeModel {
}
tonRatesStore.addObserver(self) { observer, event in
switch event {
case .didUpdateTonRates:
case .didUpdateRates:
guard wallet == observer.wallet else { return }
DispatchQueue.main.async {
observer.updateOptionsItems()
Expand Down Expand Up @@ -246,7 +246,7 @@ final class BatteryRechargeModel {
let rates: Rates.Rate? = {
switch self.token {
case .ton:
let tonRates = tonRatesStore.getState().first(where: { $0.currency == currency })
let tonRates = tonRatesStore.getState().tonRates.first(where: { $0.currency == currency })
return tonRates
case .jetton(let jettonItem):
let rate = balance?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import BigInt

protocol BatteryRechargeModuleOutput: AnyObject {
var didTapContinue: ((_ payload: BatteryRechargePayload) -> Void)? { get set }
var didSelectTokenPicker: ((Token) -> Void)? { get set }
var didSelectTokenPicker: ((TonToken) -> Void)? { get set }
}

protocol BatteryRechargeModuleInput: AnyObject {
func setToken(token: Token)
func setToken(token: TonToken)
}

protocol BatteryRechargeViewModel: AnyObject {
Expand All @@ -29,11 +29,11 @@ final class BatteryRechargeViewModelImplementation: BatteryRechargeViewModel, Ba
// MARK: - BatteryRechargeModuleOutput

var didTapContinue: ((BatteryRechargePayload) -> Void)?
var didSelectTokenPicker: ((Token) -> Void)?
var didSelectTokenPicker: ((TonToken) -> Void)?

// MARK: - BatteryRechargeModuleInput

func setToken(token: Token) {
func setToken(token: TonToken) {
model.token = token
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct BatteryRefillAssembly {
headerModel: BatteryRefillHeaderModel(
wallet: wallet,
balanceStore: keeperCoreMainAssembly.storesAssembly.balanceStore,
configuration: keeperCoreMainAssembly.configurationAssembly.configuration
batteryCalculation: keeperCoreMainAssembly.batteryAssembly.batteryCalculation
),
tonProofTokenService: keeperCoreMainAssembly.servicesAssembly.tonProofTokenService(),
configuration: keeperCoreMainAssembly.configurationAssembly.configuration,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ final class BatteryRefillViewModelImplementation: BatteryRefillViewModel, Batter
case .ton:
iconViewConfiguration = .tonConfiguration()
case .jetton(let jettonItem):
iconViewConfiguration = .configuration(jettonInfo: jettonItem.jettonInfo)
iconViewConfiguration = .configuration(jettonInfo: jettonItem.jettonInfo, isNetworkBadgeVisible: false)
}
caption = nil
case .gift:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ final class BatteryRefillHeaderModel {

private let wallet: Wallet
private let balanceStore: BalanceStore
private let configuration: Configuration
private let batteryCalculation: BatteryCalculation

init(wallet: Wallet,
balanceStore: BalanceStore,
configuration: Configuration) {
batteryCalculation: BatteryCalculation) {
self.wallet = wallet
self.balanceStore = balanceStore
self.configuration = configuration
self.batteryCalculation = batteryCalculation

balanceStore.addObserver(self) { observer, event in
switch event {
Expand All @@ -39,20 +39,16 @@ final class BatteryRefillHeaderModel {
}

func getState() -> State {
let isBeta = configuration.isBatteryBeta(isTestnet: wallet.isTestnet)
let charge: State.Charge
if let batteryBalance = balanceStore.getState()[wallet]?.walletBalance.batteryBalance, !batteryBalance.isBalanceZero {
let chargesCount: Int = {
guard let meanFees = configuration.batteryMeanFeesDecimaNumber(isTestnet: wallet.isTestnet) else { return 0 }
return batteryBalance.balanceDecimalNumber.dividing(by: meanFees, withBehavior: NSDecimalNumberHandler.roundBehaviour).intValue
}()
let chargesCount = batteryCalculation.calculateCharges(tonAmount: batteryBalance.balanceDecimalNumber) ?? 0
charge = .charged(chargesCount: chargesCount, batteryPercent: batteryBalance.batteryState.percents)
} else {
charge = .notCharged
}

return State(
isBeta: isBeta,
isBeta: false,
charge: charge
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ final class BatteryRefillIAPModel: NSObject, SKProductsRequestDelegate, SKPaymen
let batteryBalance = balanceStore.getState()[wallet]?.walletBalance.batteryBalance
let tonPriceUSD: NSDecimalNumber? = {
let rates = self.tonRatesStore.getState()
guard let usdRates = rates.first(where: { $0.currency == .USD })?.rate else { return nil }
guard let usdRates = rates.tonRates.first(where: { $0.currency == .USD })?.rate else { return nil }
return NSDecimalNumber(decimal: usdRates)
}()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import TonSwift
final class BatteryRefillRechargeMethodsModel {

enum RechargeMethodItem {
case token(token: Token)
case gift(token: Token)
case token(token: TonToken)
case gift(token: TonToken)

var identifier: String {
switch self {
Expand All @@ -19,7 +19,7 @@ final class BatteryRefillRechargeMethodsModel {
}
}

var token: Token {
var token: TonToken {
switch self {
case .token(let token):
return token
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ struct BatteryRefillSupportedTransactionsAssembly {
coreAssembly: TKCore.CoreAssembly) -> MVVMModule<BatteryRefillSupportedTransactionsViewController, BatteryRefillSupportedTransactionsModuleOutput, BatteryRefillSupportedTransactionsModuleInput> {
let viewModel = BatteryRefillSupportedTransactionsViewModelImplementation(
wallet: wallet,
configuration: keeperCoreMainAssembly.configurationAssembly.configuration
batteryChargeMapper: BatteryChargesMapper(batteryCalculation: keeperCoreMainAssembly.batteryAssembly.batteryCalculation)
)

let viewController = BatteryRefillSupportedTransactionsViewController(viewModel: viewModel)
Expand Down
Loading