Updated on 2026-08-14

This commit is contained in:
Tangem 2023-05-16 13:50:36 +04:00
parent c7458d8ab0
commit 35e3ff8ad1
24 changed files with 254 additions and 67 deletions

View file

@ -56,6 +56,7 @@ private data class CreateWalletResponse(
class CreateProductWalletTask(
private val cardTypesResolver: CardTypesResolver,
private val seed: ByteArray? = null,
) : CardSessionRunnable<CreateProductWalletTaskResponse> {
override val allowsRequestAccessCodeFromRepository: Boolean = false
@ -74,7 +75,8 @@ class CreateProductWalletTask(
cardTypesResolver.isTangemNote() -> CreateWalletTangemNote(cardTypesResolver)
cardTypesResolver.isTangemTwins() ->
throw UnsupportedOperationException("Use the TwinCardsManager to create a wallet")
else -> CreateWalletTangemWallet()
else -> CreateWalletTangemWallet(seed)
}
commandProcessor.proceed(cardDto, session) {
when (it) {
@ -129,7 +131,9 @@ private class CreateWalletTangemNote(private val cardTypesResolver: CardTypesRes
}
}
private class CreateWalletTangemWallet : ProductCommandProcessor<CreateProductWalletTaskResponse> {
private class CreateWalletTangemWallet(
private val seed: ByteArray?,
) : ProductCommandProcessor<CreateProductWalletTaskResponse> {
private var primaryCard: PrimaryCard? = null
@ -149,7 +153,7 @@ private class CreateWalletTangemWallet : ProductCommandProcessor<CreateProductWa
return
}
CreateWalletsTask(curves).run(session) { result ->
CreateWalletsTask(curves, seed).run(session) { result ->
when (result) {
is CompletionResult.Success -> {
proceedWithCreatedWallets(

View file

@ -18,6 +18,7 @@ class CreateWalletsResponse(
class CreateWalletsTask(
private val curves: List<EllipticCurve>,
private val seed: ByteArray? = null,
) : CardSessionRunnable<CreateWalletsResponse> {
private val createdWalletsResponses = mutableListOf<CreateWalletResponse>()
@ -37,7 +38,7 @@ class CreateWalletsTask(
session: CardSession,
callback: (result: CompletionResult<CreateWalletsResponse>) -> Unit,
) {
CreateWalletTask(curve).run(session) { result ->
CreateWalletTask(curve, seed).run(session) { result ->
when (result) {
is CompletionResult.Success -> {
createdWalletsResponses.add(result.data)
@ -47,6 +48,7 @@ class CreateWalletsTask(
}
createWallet(curves[createdWalletsResponses.size], session, callback)
}
is CompletionResult.Failure -> callback(CompletionResult.Failure(result.error))
}
}