Updated on 2026-08-14

This commit is contained in:
Tangem 2025-07-10 10:33:13 +03:00
parent c153efaa88
commit 16bcc5c593
9 changed files with 130 additions and 6 deletions

View file

@ -26,6 +26,10 @@ dependencies {
implementation(projects.core.navigation)
implementation(projects.core.datasource)
/** Domain */
implementation(projects.domain.wallets)
implementation(projects.domain.wallets.models)
/** Common */
implementation(projects.common.ui)
implementation(projects.common.routing)
@ -36,6 +40,8 @@ dependencies {
implementation(tangemDeps.card.android) {
exclude(module = "joda-time")
}
implementation(tangemDeps.hot.core)
implementation(tangemDeps.hot.android)
/** AndroidX libraries */
implementation(deps.androidx.core.ktx)

View file

@ -2,19 +2,24 @@ package com.tangem.features.hotwallet.createmobilewallet
import com.tangem.core.decompose.di.ModelScoped
import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.features.hotwallet.createmobilewallet.entity.CreateMobileWalletUM
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
import javax.inject.Inject
@ModelScoped
internal class CreateMobileWalletModel @Inject constructor(
override val dispatchers: CoroutineDispatcherProvider,
private val router: Router,
private val paramsContainer: ParamsContainer,
) : Model() {
private val params = paramsContainer.require<DefaultCreateMobileWalletComponent.Params>()
internal val uiState: StateFlow<CreateMobileWalletUM>
field = MutableStateFlow(
CreateMobileWalletUM(
@ -24,6 +29,16 @@ internal class CreateMobileWalletModel @Inject constructor(
)
private fun onCreateClick() {
// TODO create a wallet
modelScope.launch {
val tangemHotSdk = params.tangemHotSdk.instanceAccess.get() ?: return@launch
// TODO
// val hotWalletId = tangemHotSdk.generateWallet(HotAuth.NoAuth, mnemonicType = MnemonicType.Words12)
// val hotUserWalletBuilder = hotUserWalletBuilderFactory.create(hotWalletId, tangemHotSdk)
// saveUserWalletUseCase(
// hotUserWalletBuilder.build(),
// )
// router.push(AppRoute.Wallet)
}
}
}

View file

@ -6,17 +6,28 @@ import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.decompose.utils.ActivityInstanceHolder
import com.tangem.core.decompose.utils.getOrCreateActivityInstanceHolder
import com.tangem.features.hotwallet.CreateMobileWalletComponent
import com.tangem.features.hotwallet.createmobilewallet.ui.CreateMobileWalletContent
import com.tangem.hot.sdk.TangemHotSdk
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@Suppress("UnusedPrivateMember")
internal class DefaultCreateMobileWalletComponent @AssistedInject constructor(
@Assisted private val context: AppComponentContext,
@Assisted private val params: Unit,
private val tangemHotSdk: TangemHotSdk,
) : CreateMobileWalletComponent, AppComponentContext by context {
private val model: CreateMobileWalletModel = getOrCreateModel(params)
private val modelParams: Params =
Params(
tangemHotSdk = getOrCreateActivityInstanceHolder { tangemHotSdk },
)
private val model: CreateMobileWalletModel = getOrCreateModel(modelParams)
@Composable
override fun Content(modifier: Modifier) {
@ -27,6 +38,10 @@ internal class DefaultCreateMobileWalletComponent @AssistedInject constructor(
)
}
class Params(
val tangemHotSdk: ActivityInstanceHolder<TangemHotSdk>,
)
@AssistedFactory
interface Factory : CreateMobileWalletComponent.Factory {
override fun create(context: AppComponentContext, params: Unit): DefaultCreateMobileWalletComponent

View file

@ -7,24 +7,30 @@ import com.tangem.features.hotwallet.createmobilewallet.DefaultCreateMobileWalle
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.android.components.ActivityComponent
import dagger.hilt.android.scopes.ActivityScoped
import dagger.hilt.components.SingletonComponent
import dagger.multibindings.ClassKey
import dagger.multibindings.IntoMap
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
internal object CreateMobileWalletModule
@Module
@InstallIn(SingletonComponent::class)
internal interface CreateMobileWalletModuleBinds {
@InstallIn(ActivityComponent::class)
internal interface CreateMobileWalletModuleActivityBinds {
@Binds
@Singleton
@ActivityScoped
fun bindCreateMobileWalletComponentFactory(
impl: DefaultCreateMobileWalletComponent.Factory,
): CreateMobileWalletComponent.Factory
}
@Module
@InstallIn(SingletonComponent::class)
internal interface CreateMobileWalletModuleBinds {
@Binds
@IntoMap