Skip to content

Commit e7fb916

Browse files
committed
[trello.com/c/vawidi4o] Remove secret wallets storing in KVS
1 parent f33ff89 commit e7fb916

File tree

11 files changed

+66
-83
lines changed

11 files changed

+66
-83
lines changed

Adamant/Modules/Account/AccountViewController/AccountViewController.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,16 @@ final class AccountViewController: FormViewController {
178178
accountHeaderView.delegate = self
179179

180180
secretWalletsViewModel.$state
181-
.map{ $0.currentActiveIndex }
181+
.map { $0.currentActiveIndex }
182182
.removeDuplicates()
183183
.receive(on: DispatchQueue.main)
184184
.sink { [weak self] index in
185+
guard let self = self else { return }
186+
self.setupWalletsVC()
187+
self.pagingViewController.reloadData()
188+
self.pagingViewController.select(index: currentWalletIndex, animated: false)
185189
guard index >= 0 else { return }
186-
self?.accountHeaderView.setWalletIcon(index == 0 ? .regular : .secret, badgeCount: index)
190+
self.accountHeaderView.setWalletIcon(index == 0 ? .regular : .secret, badgeCount: index)
187191
}
188192
.store(in: &notificationsSet)
189193

@@ -223,11 +227,10 @@ final class AccountViewController: FormViewController {
223227

224228
walletsViewModel.$state
225229
.removeDuplicates()
226-
.debounce(for: .nanoseconds(500_000_000), scheduler: DispatchQueue.main)
230+
.debounce(for: .seconds(1) , scheduler: DispatchQueue.main)
227231
.receive(on: DispatchQueue.main)
228232
.sink { [weak self] _ in
229233
guard let self = self else { return }
230-
self.setupWalletsVC()
231234
self.pagingViewController.reloadMenu()
232235
self.pagingViewController.select(index: currentWalletIndex, animated: false)
233236
}

Adamant/Modules/Wallets/Adamant/AdmWalletService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ final class AdmWalletService: NSObject, WalletCoreProtocol, WalletStaticCoreProt
225225
.init(sentDate: nil, status: .notInitiated)
226226
}
227227

228-
func initWallet(withPassphrase: String, withPassword: String) async throws -> WalletAccount {
228+
func initWallet(withPassphrase: String, withPassword: String, storeInKVC: Bool) async throws -> WalletAccount {
229229
throw InternalAPIError.unknownError
230230
}
231231

Adamant/Modules/Wallets/Bitcoin/BtcWalletService.swift

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ extension BtcWalletService {
445445
btcWallet = nil
446446
}
447447

448-
func initWallet(withPassphrase passphrase: String, withPassword password: String) async throws -> WalletAccount {
448+
func initWallet(withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool) async throws -> WalletAccount {
449449
guard let adamant = accountService.account else {
450450
throw WalletServiceError.notLogged
451451
}
@@ -468,7 +468,6 @@ extension BtcWalletService {
468468
addressConverter: addressConverter
469469
)
470470
self.btcWallet = eWallet
471-
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
472471

473472
NotificationCenter.default.post(
474473
name: walletUpdatedNotification,
@@ -483,7 +482,16 @@ extension BtcWalletService {
483482
NotificationCenter.default.post(name: self.serviceEnabledChanged, object: self)
484483
}
485484

485+
self.setState(.upToDate)
486+
487+
Task {
488+
self.update()
489+
}
490+
491+
guard storeInKVC else { return eWallet }
492+
486493
// MARK: 4. Save address into KVS
494+
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
487495
let service = self
488496
do {
489497
let address = try await getWalletAddress(byAdamantAddress: adamant.address)
@@ -494,23 +502,12 @@ extension BtcWalletService {
494502
throw WalletServiceError.accountNotFound
495503
}
496504

497-
service.setState(.upToDate)
498-
499-
Task {
500-
service.update()
501-
}
502-
503505
return eWallet
504506
} catch let error as WalletServiceError {
505507
switch error {
506508
case .walletNotInitiated:
507509
/// The ADM Wallet is not initialized. Check the balance of the current wallet
508510
/// and save the wallet address to kvs when dropshipping ADM
509-
service.setState(.upToDate)
510-
511-
Task {
512-
await service.update()
513-
}
514511

515512
if let kvsAddressModel {
516513
service.save(kvsAddressModel) { result in
@@ -521,7 +518,6 @@ extension BtcWalletService {
521518
return eWallet
522519

523520
default:
524-
service.setState(.upToDate)
525521
throw error
526522
}
527523
}

Adamant/Modules/Wallets/Dash/DashWalletService.swift

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ extension DashWalletService {
300300
}
301301

302302
@MainActor
303-
func initWallet(withPassphrase passphrase: String, withPassword password: String) async throws -> WalletAccount {
303+
func initWallet(withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool) async throws -> WalletAccount {
304304
guard let adamant = accountService.account else {
305305
throw WalletServiceError.notLogged
306306
}
@@ -325,7 +325,6 @@ extension DashWalletService {
325325
)
326326

327327
self.dashWallet = eWallet
328-
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
329328

330329
NotificationCenter.default.post(
331330
name: walletUpdatedNotification,
@@ -340,7 +339,16 @@ extension DashWalletService {
340339
NotificationCenter.default.post(name: self.serviceEnabledChanged, object: self)
341340
}
342341

342+
self.setState(.upToDate)
343+
344+
Task {
345+
self.update()
346+
}
347+
348+
guard storeInKVC else { return eWallet }
349+
343350
// MARK: 4. Save address into KVS
351+
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
344352
do {
345353
let address = try await getWalletAddress(byAdamantAddress: adamant.address)
346354
let service = self
@@ -350,35 +358,23 @@ extension DashWalletService {
350358
}
351359
}
352360

353-
service.setState(.upToDate)
354-
355-
Task {
356-
service.update()
357-
}
358361
return eWallet
359362
} catch let error as WalletServiceError {
360363
let service = self
361364
switch error {
362365
case .walletNotInitiated:
363366
/// The ADM Wallet is not initialized. Check the balance of the current wallet
364367
/// and save the wallet address to kvs when dropshipping ADM
365-
service.setState(.upToDate)
366-
367-
Task {
368-
await service.update()
369-
}
370368

371369
if let kvsAddressModel {
372370
service.save(kvsAddressModel) { result in
373371
service.kvsSaveCompletionRecursion(kvsAddressModel, result: result)
374372
}
375373
}
376374

377-
service.setState(.upToDate)
378375
return eWallet
379376

380377
default:
381-
service.setState(.upToDate)
382378
throw error
383379
}
384380
}

Adamant/Modules/Wallets/Doge/DogeWalletService.swift

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ extension DogeWalletService {
319319
dogeWallet = nil
320320
}
321321

322-
func initWallet(withPassphrase passphrase: String, withPassword password: String) async throws -> WalletAccount {
322+
func initWallet(withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool) async throws -> WalletAccount {
323323
guard let adamant = accountService.account else {
324324
throw WalletServiceError.notLogged
325325
}
@@ -343,7 +343,6 @@ extension DogeWalletService {
343343
addressConverter: addressConverter
344344
)
345345
self.dogeWallet = eWallet
346-
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
347346

348347
NotificationCenter.default.post(
349348
name: walletUpdatedNotification,
@@ -358,7 +357,16 @@ extension DogeWalletService {
358357
NotificationCenter.default.post(name: self.serviceEnabledChanged, object: self)
359358
}
360359

360+
self.setState(.upToDate)
361+
362+
Task {
363+
await self.update()
364+
}
365+
366+
guard storeInKVC else { return eWallet }
367+
361368
// MARK: 4. Save address into KVS
369+
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
362370
let service = self
363371
do {
364372
let address = try await getWalletAddress(byAdamantAddress: adamant.address)
@@ -368,35 +376,22 @@ extension DogeWalletService {
368376
}
369377
}
370378

371-
service.setState(.upToDate)
372-
373-
Task {
374-
await service.update()
375-
}
376-
377379
return eWallet
378380
} catch let error as WalletServiceError {
379381
switch error {
380382
case .walletNotInitiated:
381383
/// The ADM Wallet is not initialized. Check the balance of the current wallet
382384
/// and save the wallet address to kvs when dropshipping ADM
383-
service.setState(.upToDate)
384-
385-
Task {
386-
await service.update()
387-
}
388385

389386
if let kvsAddressModel {
390387
service.save(kvsAddressModel) { result in
391388
service.kvsSaveCompletionRecursion(kvsAddressModel, result: result)
392389
}
393390
}
394391

395-
service.setState(.upToDate)
396392
return eWallet
397393

398394
default:
399-
service.setState(.upToDate)
400395
throw error
401396
}
402397
}

Adamant/Modules/Wallets/ERC20/ERC20WalletService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ final class ERC20WalletService: WalletCoreProtocol, @unchecked Sendable {
368368

369369
// MARK: - WalletInitiatedWithPassphrase
370370
extension ERC20WalletService {
371-
func initWallet(withPassphrase passphrase: String, withPassword password: String) async throws -> WalletAccount {
371+
func initWallet(withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool) async throws -> WalletAccount {
372372

373373
// MARK: 1. Prepare
374374
setState(.notInitiated)

Adamant/Modules/Wallets/Ethereum/EthWalletService.swift

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ final class EthWalletService: WalletCoreProtocol, WalletStaticCoreProtocol, Smar
403403

404404
// MARK: - WalletInitiatedWithPassphrase
405405
extension EthWalletService {
406-
func initWallet(withPassphrase passphrase: String, withPassword password: String) async throws -> WalletAccount {
406+
func initWallet(withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool) async throws -> WalletAccount {
407407
guard let adamant = accountService?.account else {
408408
throw WalletServiceError.notLogged
409409
}
@@ -429,7 +429,6 @@ extension EthWalletService {
429429

430430
// MARK: 3. Update
431431
ethWallet = eWallet
432-
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
433432

434433
NotificationCenter.default.post(
435434
name: walletUpdatedNotification,
@@ -444,7 +443,16 @@ extension EthWalletService {
444443
NotificationCenter.default.post(name: serviceEnabledChanged, object: self)
445444
}
446445

446+
self.setState(.upToDate)
447+
448+
Task {
449+
await self.update()
450+
}
451+
452+
guard storeInKVC else { return eWallet }
453+
447454
// MARK: 4. Save into KVS
455+
let kvsAddressModel = makeKVSAddressModel(wallet: eWallet)
448456
let service = self
449457
do {
450458
let address = try await getWalletAddress(byAdamantAddress: adamant.address)
@@ -454,24 +462,13 @@ extension EthWalletService {
454462
}
455463
}
456464

457-
service.setState(.upToDate)
458-
459-
Task {
460-
await service.update()
461-
}
462-
463465
return eWallet
464466
} catch let error as WalletServiceError {
465467
switch error {
466468
case .walletNotInitiated:
467469
/// The ADM Wallet is not initialized. Check the balance of the current wallet
468470
/// and save the wallet address to kvs when dropshipping ADM
469-
service.setState(.upToDate)
470-
471-
Task {
472-
await service.update()
473-
}
474-
471+
475472
if let kvsAddressModel {
476473
service.save(kvsAddressModel) { result in
477474
service.kvsSaveCompletionRecursion(kvsAddressModel, result: result)
@@ -481,7 +478,6 @@ extension EthWalletService {
481478
return eWallet
482479

483480
default:
484-
service.setState(.upToDate)
485481
throw error
486482
}
487483
}

Adamant/Modules/Wallets/Klayr/WalletService/KlyWalletService.swift

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ final class KlyWalletService: WalletCoreProtocol, WalletStaticCoreProtocol, @unc
9999
// MARK: -
100100

101101
func initWallet(
102-
withPassphrase passphrase: String, withPassword password: String
102+
withPassphrase passphrase: String, withPassword password: String, storeInKVC: Bool
103103
) async throws -> WalletAccount {
104-
try await initWallet(passphrase: passphrase, password: password)
104+
try await initWallet(passphrase: passphrase, password: password, storeInKVC: storeInKVC)
105105
}
106106

107107
func setInitiationFailed(reason: String) {
@@ -413,7 +413,7 @@ private extension KlyWalletService {
413413

414414
// MARK: - Init Wallet
415415
private extension KlyWalletService {
416-
func initWallet(passphrase: String, password: String) async throws -> WalletAccount {
416+
func initWallet(passphrase: String, password: String, storeInKVC: Bool) async throws -> WalletAccount {
417417
guard let adamant = accountService.account else {
418418
throw WalletServiceError.notLogged
419419
}
@@ -465,6 +465,14 @@ private extension KlyWalletService {
465465
throw WalletServiceError.accountNotFound
466466
}
467467

468+
setState(.upToDate)
469+
470+
Task {
471+
await update()
472+
}
473+
474+
guard storeInKVC else { return eWallet }
475+
468476
// Save into KVS
469477

470478
do {
@@ -474,29 +482,17 @@ private extension KlyWalletService {
474482
updateKvsAddress(kvsAddressModel)
475483
}
476484

477-
setState(.upToDate)
478-
479-
Task {
480-
await update()
481-
}
482-
483485
return eWallet
484486
} catch let error as WalletServiceError {
485487
switch error {
486488
case .walletNotInitiated:
487489
/// The ADM Wallet is not initialized. Check the balance of the current wallet
488490
/// and save the wallet address to kvs when dropshipping ADM
489-
setState(.upToDate)
490-
491-
Task {
492-
await update()
493-
}
494491

495492
updateKvsAddress(kvsAddressModel)
496493

497494
return eWallet
498495
default:
499-
setState(.upToDate)
500496
throw error
501497
}
502498
}

Adamant/Modules/Wallets/WalletsService/WalletCoreProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ protocol WalletCoreProtocol: AnyObject, Sendable {
305305
func updateStatus(for id: String, status: TransactionStatus?)
306306
func isExist(address: String) async throws -> Bool
307307
func statusInfoFor(transaction: CoinTransaction) async -> TransactionStatusInfo
308-
func initWallet(withPassphrase: String, withPassword: String) async throws -> WalletAccount
308+
func initWallet(withPassphrase: String, withPassword: String, storeInKVC: Bool) async throws -> WalletAccount
309309
func setInitiationFailed(reason: String)
310310
func shortDescription(for transaction: RichMessageTransaction) -> NSAttributedString
311311
func getFee(comment: String) -> Decimal

0 commit comments

Comments
 (0)