Skip to content

Commit aa51fd1

Browse files
committed
Merge branch 'develop' into IOS-5986_validate_derivation
2 parents 6feb50e + 1a8f7ac commit aa51fd1

File tree

117 files changed

+1079
-881
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+1079
-881
lines changed

Diff for: Podfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ end
3131
def blockchain_sdk_pods
3232
# 'TangemWalletCore' dependency must be added via SPM
3333

34-
pod 'BlockchainSdk', :git => 'https://github.com/tangem/blockchain-sdk-swift.git', :tag => 'develop-515'
34+
pod 'BlockchainSdk', :git => 'https://github.com/tangem/blockchain-sdk-swift.git', :tag => 'develop-516'
3535
#pod 'BlockchainSdk', :path => '../blockchain-sdk-swift'
3636

3737
pod 'Solana.Swift', :git => 'https://github.com/tangem/Solana.Swift', :tag => '1.2.0-tangem1'

Diff for: Podfile.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ DEPENDENCIES:
210210
- AppsFlyerFramework
211211
- BinanceChain (from `https://github.com/tangem/swiftbinancechain.git`, tag `0.0.11`)
212212
- BitcoinCore.swift (from `https://github.com/tangem/bitcoincore.git`, tag `0.0.19`)
213-
- BlockchainSdk (from `https://github.com/tangem/blockchain-sdk-swift.git`, tag `develop-515`)
213+
- BlockchainSdk (from `https://github.com/tangem/blockchain-sdk-swift.git`, tag `develop-516`)
214214
- BlockiesSwift (~> 0.1.2)
215215
- CombineExt (~> 1.8.0)
216216
- Firebase/Analytics
@@ -270,7 +270,7 @@ EXTERNAL SOURCES:
270270
:tag: 0.0.19
271271
BlockchainSdk:
272272
:git: https://github.com/tangem/blockchain-sdk-swift.git
273-
:tag: develop-515
273+
:tag: develop-516
274274
Solana.Swift:
275275
:git: https://github.com/tangem/Solana.Swift
276276
:tag: 1.2.0-tangem1
@@ -293,7 +293,7 @@ CHECKOUT OPTIONS:
293293
:tag: 0.0.19
294294
BlockchainSdk:
295295
:git: https://github.com/tangem/blockchain-sdk-swift.git
296-
:tag: develop-515
296+
:tag: develop-516
297297
Solana.Swift:
298298
:git: https://github.com/tangem/Solana.Swift
299299
:tag: 1.2.0-tangem1
@@ -346,6 +346,6 @@ SPEC CHECKSUMS:
346346
TweetNacl: 3abf4d1d2082b0114e7a67410e300892448951e6
347347
WalletConnectSwiftV2: c1c2c2fbd0495860baf71515be1b943f0c5dce0c
348348

349-
PODFILE CHECKSUM: ae6812e02dc9e191a0fef5ad39e39a4325327580
349+
PODFILE CHECKSUM: a7018e359c7a7784791e7d860844d1b5ee793a5c
350350

351351
COCOAPODS: 1.15.2

Diff for: Tangem/App/Factories/UserWalletEncryptionKeyFactory.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ class UserWalletEncryptionKeyFactory {
1616

1717
guard let seed = config.userWalletIdSeed else { return nil }
1818

19-
return UserWalletEncryptionKey(with: seed)
19+
return encryptionKey(from: seed)
20+
}
21+
22+
func encryptionKey(from userWalletIdSeed: Data) -> UserWalletEncryptionKey? {
23+
return UserWalletEncryptionKey(with: userWalletIdSeed)
2024
}
2125
}

Diff for: Tangem/App/Models/Config/SupportedBlockchains.swift

+8-6
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,7 @@ struct SupportedBlockchains {
5757

5858
/// Blockchains for test. They don't include in supported blockchains by default
5959
private func testableBlockchains() -> Set<Blockchain> {
60-
[
61-
.areon(testnet: false),
62-
.playa3ullGames,
63-
.pulsechain(testnet: false),
64-
.aurora(testnet: false),
65-
]
60+
[]
6661
}
6762

6863
private func mainnetBlockchains() -> Set<Blockchain> {
@@ -114,6 +109,10 @@ struct SupportedBlockchains {
114109
.algorand(curve: ed25519Curve(for: version), testnet: false),
115110
.aptos(curve: ed25519Curve(for: version), testnet: false),
116111
.hedera(curve: ed25519Curve(for: version), testnet: false),
112+
.areon(testnet: false),
113+
.playa3ullGames,
114+
.pulsechain(testnet: false),
115+
.aurora(testnet: false),
117116
]
118117
}
119118

@@ -150,6 +149,9 @@ struct SupportedBlockchains {
150149
.shibarium(testnet: true),
151150
.aptos(curve: ed25519Curve(for: version), testnet: true),
152151
.hedera(curve: ed25519Curve(for: version), testnet: true),
152+
.areon(testnet: true),
153+
.pulsechain(testnet: true),
154+
.aurora(testnet: true),
153155
]
154156
}
155157

Diff for: Tangem/App/Models/UserWallet/UserWallet.swift renamed to Tangem/App/Models/UserWallet/StoredUserWallet.swift

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// UserWallet.swift
2+
// StoredUserWallet.swift
33
// Tangem
44
//
55
// Created by Andrey Chukavin on 04.08.2022.
@@ -10,7 +10,7 @@ import Foundation
1010
import CryptoKit
1111
import TangemSdk
1212

13-
struct UserWallet: Identifiable, Encodable {
13+
struct StoredUserWallet: Identifiable, Encodable {
1414
var id = UUID()
1515
let userWalletId: Data
1616
var name: String
@@ -22,13 +22,13 @@ struct UserWallet: Identifiable, Encodable {
2222
var hasBackupErrors: Bool?
2323
}
2424

25-
extension UserWallet {
25+
extension StoredUserWallet {
2626
struct SensitiveInformation: Codable {
2727
let wallets: [CardDTO.Wallet]
2828
}
2929
}
3030

31-
extension UserWallet {
31+
extension StoredUserWallet {
3232
var isLocked: Bool {
3333
card.wallets.isEmpty
3434
}
@@ -51,7 +51,7 @@ extension UserWallet {
5151
}
5252
}
5353

54-
extension UserWallet: Decodable {
54+
extension StoredUserWallet: Decodable {
5555
init(from decoder: Decoder) throws {
5656
let container = try decoder.container(keyedBy: CodingKeys.self)
5757
id = try container.decode(UUID.self, forKey: .id)

Diff for: Tangem/App/Services/DerivationManager/CommonDerivationManager.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ extension CommonDerivationManager: DerivationManager {
7777
.eraseToAnyPublisher()
7878
}
7979

80-
func deriveKeys(cardInteractor: CardDerivable, completion: @escaping (Result<Void, TangemSdkError>) -> Void) {
80+
func deriveKeys(cardInteractor: KeysDeriving, completion: @escaping (Result<Void, TangemSdkError>) -> Void) {
8181
guard !pendingDerivations.value.isEmpty else {
8282
completion(.success(()))
8383
return

Diff for: Tangem/App/Services/DerivationManager/DerivationManager.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ protocol DerivationManager {
1414
var hasPendingDerivations: AnyPublisher<Bool, Never> { get }
1515
var pendingDerivationsCount: AnyPublisher<Int, Never> { get }
1616

17-
func deriveKeys(cardInteractor: CardDerivable, completion: @escaping (Result<Void, TangemSdkError>) -> Void)
17+
func deriveKeys(cardInteractor: KeysDeriving, completion: @escaping (Result<Void, TangemSdkError>) -> Void)
1818
}
1919

2020
// TODO: refactor keys storage to single source and remove this delegate

Diff for: Tangem/App/Services/NotificationManagers/UserWalletNotifications/UserWalletNotificationManager.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ final class UserWalletNotificationManager {
6767
)
6868
}
6969

70-
if userWalletModel.isMultiWallet {
70+
if userWalletModel.config.hasFeature(.multiCurrency) {
7171
setupTangemExpressPromotionNotification(dismissAction: dismissAction)
7272
}
7373

Diff for: Tangem/App/Services/OnboardingStepsSetupService/OnboardingInput.swift

+18-28
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,28 @@ import TangemSdk
1111

1212
struct OnboardingInput { // TODO: Split to coordinator options and input
1313
let backupService: BackupService
14+
let primaryCardId: String
1415
let cardInitializer: CardInitializable?
1516
let steps: OnboardingSteps
1617
let cardInput: CardInput
1718
let twinData: TwinData?
1819
var isStandalone = false
19-
var userWalletToDelete: UserWallet? // for twins. TODO: refactor UserWalletRepository to remove this
20+
var userWalletToDelete: StoredUserWallet? // for twins. TODO: refactor UserWalletRepository to remove this
2021
}
2122

2223
extension OnboardingInput {
2324
enum CardInput {
2425
case cardInfo(_ cardInfo: CardInfo)
25-
case cardModel(_ cardModel: CardViewModel)
26+
case userWalletModel(_ userWalletModel: UserWalletModel)
2627
case cardId(_ cardId: String)
2728

2829
var emailData: [EmailCollectedData] {
2930
switch self {
3031
case .cardInfo(let cardInfo):
3132
let factory = UserWalletConfigFactory(cardInfo)
3233
return factory.makeConfig().emailData
33-
case .cardModel(let cardModel):
34-
return cardModel.emailData
34+
case .userWalletModel(let userWalletModel):
35+
return userWalletModel.emailData
3536
case .cardId:
3637
return []
3738
}
@@ -42,8 +43,8 @@ extension OnboardingInput {
4243
case .cardInfo(let cardInfo):
4344
let factory = UserWalletConfigFactory(cardInfo)
4445
return factory.makeConfig().getFeatureAvailability(.backup).disabledLocalizedReason
45-
case .cardModel(let cardModel):
46-
return cardModel.getDisabledLocalizedReason(for: .backup)
46+
case .userWalletModel(let userWalletModel):
47+
return userWalletModel.config.getDisabledLocalizedReason(for: .backup)
4748
case .cardId:
4849
return nil
4950
}
@@ -54,17 +55,17 @@ extension OnboardingInput {
5455
case .cardInfo(let cardInfo):
5556
let factory = UserWalletConfigFactory(cardInfo)
5657
return factory.makeConfig().tou
57-
case .cardModel(let cardModel):
58-
return cardModel.cardDisclaimer
58+
case .userWalletModel(let userWalletModel):
59+
return userWalletModel.config.tou
5960
case .cardId:
6061
return nil
6162
}
6263
}
6364

64-
var cardModel: CardViewModel? {
65+
var userWalletModel: UserWalletModel? {
6566
switch self {
66-
case .cardModel(let cardModel):
67-
return cardModel
67+
case .userWalletModel(let userWalletModel):
68+
return userWalletModel
6869
default:
6970
return nil
7071
}
@@ -75,24 +76,13 @@ extension OnboardingInput {
7576
case .cardInfo(let cardInfo):
7677
let factory = UserWalletConfigFactory(cardInfo)
7778
return factory.makeConfig()
78-
case .cardModel(let cardModel):
79-
return cardModel.config
79+
case .userWalletModel(let userWalletModel):
80+
return userWalletModel.config
8081
case .cardId:
8182
return nil
8283
}
8384
}
8485

85-
var cardId: String {
86-
switch self {
87-
case .cardInfo(let cardInfo):
88-
return cardInfo.card.cardId
89-
case .cardModel(let cardModel):
90-
return cardModel.cardId
91-
case .cardId(let cardId):
92-
return cardId
93-
}
94-
}
95-
9686
var imageLoadInput: ImageLoadInput {
9787
switch self {
9888
case .cardInfo(let cardInfo):
@@ -102,11 +92,11 @@ extension OnboardingInput {
10292
cardId: cardInfo.card.cardId,
10393
cardPublicKey: cardInfo.card.cardPublicKey
10494
)
105-
case .cardModel(let cardModel):
95+
case .userWalletModel(let userWalletModel):
10696
return .init(
107-
supportsOnlineImage: cardModel.supportsOnlineImage,
108-
cardId: cardModel.cardId,
109-
cardPublicKey: cardModel.cardPublicKey
97+
supportsOnlineImage: userWalletModel.config.hasFeature(.onlineImage),
98+
cardId: userWalletModel.tangemApiAuthData.cardId,
99+
cardPublicKey: userWalletModel.tangemApiAuthData.cardPublicKey
110100
)
111101
case .cardId(let cardId):
112102
return .init(

Diff for: Tangem/App/Services/UserTokensManager/CardDerivableProvider.swift

-13
This file was deleted.

Diff for: Tangem/App/Services/UserTokensManager/CommonUserTokensManager.swift

+4-5
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ class CommonUserTokensManager {
2121
private let userTokenListManager: UserTokenListManager
2222
private let walletModelsManager: WalletModelsManager
2323
private let derivationStyle: DerivationStyle?
24-
private weak var cardDerivableProvider: CardDerivableProvider?
2524
private let existingCurves: [EllipticCurve]
2625
private let longHashesSupported: Bool
27-
26+
private weak var keysDerivingProvider: KeysDerivingProvider?
2827
private var bag: Set<AnyCancellable> = []
2928

3029
init(
@@ -34,7 +33,7 @@ class CommonUserTokensManager {
3433
walletModelsManager: WalletModelsManager,
3534
derivationStyle: DerivationStyle?,
3635
derivationManager: DerivationManager?,
37-
cardDerivableProvider: CardDerivableProvider,
36+
keysDerivingProvider: KeysDerivingProvider,
3837
existingCurves: [EllipticCurve],
3938
longHashesSupported: Bool
4039
) {
@@ -44,7 +43,7 @@ class CommonUserTokensManager {
4443
self.walletModelsManager = walletModelsManager
4544
self.derivationStyle = derivationStyle
4645
self.derivationManager = derivationManager
47-
self.cardDerivableProvider = cardDerivableProvider
46+
self.keysDerivingProvider = keysDerivingProvider
4847
self.existingCurves = existingCurves
4948
self.longHashesSupported = longHashesSupported
5049
}
@@ -109,7 +108,7 @@ class CommonUserTokensManager {
109108
extension CommonUserTokensManager: UserTokensManager {
110109
func deriveIfNeeded(completion: @escaping (Result<Void, TangemSdkError>) -> Void) {
111110
guard let derivationManager,
112-
let interactor = cardDerivableProvider?.cardDerivableInteractor else {
111+
let interactor = keysDerivingProvider?.keysDerivingInteractor else {
113112
completion(.success(()))
114113
return
115114
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//
2+
// KeysDerivingProvider.swift
3+
// Tangem
4+
//
5+
// Created by Alexander Osokin on 04.03.2024.
6+
// Copyright © 2024 Tangem AG. All rights reserved.
7+
//
8+
9+
import Foundation
10+
11+
protocol KeysDerivingProvider: AnyObject {
12+
var keysDerivingInteractor: KeysDeriving { get }
13+
}

Diff for: Tangem/App/Services/UserWalletModel/UserWalletModel.swift

+7-3
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88

99
import BlockchainSdk
1010
import Combine
11+
import TangemSdk
1112

12-
protocol UserWalletModel: MainHeaderSupplementInfoProvider, TotalBalanceProviding, MultiWalletMainHeaderSubtitleDataSource, AnalyticsContextDataProvider, MainHeaderUserWalletStateInfoProvider, AnyObject {
13-
var isMultiWallet: Bool { get }
13+
protocol UserWalletModel: MainHeaderSupplementInfoProvider, TotalBalanceProviding, MultiWalletMainHeaderSubtitleDataSource, AnalyticsContextDataProvider, MainHeaderUserWalletStateInfoProvider, EmailDataProvider, WalletConnectUserWalletInfoProvider, AnyObject {
1414
var tokensCount: Int? { get }
15+
var analyticsContextData: AnalyticsContextData { get }
16+
var hasBackupCards: Bool { get }
1517
var config: UserWalletConfig { get }
1618
var userWalletId: UserWalletId { get }
17-
var userWallet: UserWallet { get }
19+
var userWallet: StoredUserWallet { get }
20+
var tangemApiAuthData: TangemApiTarget.AuthData { get }
1821
var walletModelsManager: WalletModelsManager { get }
1922
var userTokensManager: UserTokensManager { get }
2023
var userTokenListManager: UserTokenListManager { get }
@@ -26,4 +29,5 @@ protocol UserWalletModel: MainHeaderSupplementInfoProvider, TotalBalanceProvidin
2629
var cardImagePublisher: AnyPublisher<CardImageResult, Never> { get }
2730
func updateWalletName(_ name: String)
2831
func validate() -> Bool
32+
func onBackupCreated(_ card: Card)
2933
}

0 commit comments

Comments
 (0)