Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-16 13:35:39 +03:00
parent 8541957ee3
commit 189ffd9927
73 changed files with 547 additions and 409 deletions

View file

@ -11,29 +11,31 @@ import com.tangem.hot.sdk.model.DeriveWalletRequest
import com.tangem.hot.sdk.model.HotAuth
import com.tangem.hot.sdk.model.HotWalletId
import com.tangem.hot.sdk.model.UnlockHotWallet
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.withContext
class HotUserWalletBuilder @AssistedInject constructor(
@Assisted private val hotWalletId: HotWalletId,
private val hotSdk: TangemHotSdk,
private val generateWalletNameUseCase: GenerateWalletNameUseCase,
private val dispatcherProvider: CoroutineDispatcherProvider,
) {
suspend fun build(): UserWallet.Hot {
suspend fun build(): UserWallet.Hot = withContext(dispatcherProvider.default) {
val allNetworks = Blockchain.entries // TODO use HotDerivationsRepository to get supported networks
val requests = allNetworks.map {
val curves = it.getSupportedCurves()
val derivationPath = it.derivationPath(DerivationStyle.V3)
val curves = allNetworks.map { it.getSupportedCurves() }.flatten().toSet()
val requests = curves.sortedBy { it.ordinal }.map { curve ->
val derivationPaths = allNetworks.filter { curve in it.getSupportedCurves() }
.mapNotNull { it.derivationPath(DerivationStyle.V3) }
curves.map {
DeriveWalletRequest.Request(
curve = it,
paths = listOfNotNull(derivationPath),
)
}
}.flatten()
DeriveWalletRequest.Request(
curve = curve,
paths = derivationPaths,
)
}
val derivationResult = hotSdk.derivePublicKey(
unlockHotWallet = UnlockHotWallet(
@ -54,11 +56,12 @@ class HotUserWalletBuilder @AssistedInject constructor(
)
}
return UserWallet.Hot(
UserWallet.Hot(
name = generateWalletNameUseCase.invokeForHot(),
walletId = UserWalletId(wallets.first().publicKey),
hotWalletId = hotWalletId,
wallets = wallets,
backedUp = false,
)
}

View file

@ -22,7 +22,7 @@ class GenerateWalletNameUseCase(
}
fun invokeForHot(): String {
val defaultName = "Mobile Wallet"
val defaultName = "Wallet"
val existingNames = userWalletsListManager.userWalletsSync.map { it.name }.toSet()
return suggestedWalletName(defaultName, existingNames)
}