Updated on 2026-08-14
This commit is contained in:
parent
9abc118480
commit
d3138c662e
18 changed files with 288 additions and 108 deletions
|
|
@ -205,8 +205,8 @@ internal class AccountCreateEditModel @Inject constructor(
|
|||
is AccountCreateEditComponent.Params.Edit -> {
|
||||
val oldName = params.account.accountName.toUM()
|
||||
|
||||
val isNewName = this.account.name != oldName
|
||||
val isNewIcon = this.account.portfolioIcon != params.account.portfolioIcon
|
||||
val isNewName = this.account.name.trim() != oldName
|
||||
val isNewIcon = this.account.portfolioIcon != params.account.portfolioIcon.toUM()
|
||||
isValidName && (isNewName || isNewIcon)
|
||||
}
|
||||
}
|
||||
|
|
@ -275,4 +275,9 @@ internal class AccountCreateEditModel @Inject constructor(
|
|||
)
|
||||
messageSender.send(dialogMessage)
|
||||
}
|
||||
}
|
||||
|
||||
private fun AccountNameUM.trim(): AccountNameUM = when (this) {
|
||||
is AccountNameUM.Custom -> this.toDomain().getOrNull()?.toUM() ?: this
|
||||
AccountNameUM.DefaultMain -> this
|
||||
}
|
||||
|
|
@ -12,7 +12,8 @@ import com.tangem.core.ui.extensions.resourceReference
|
|||
import com.tangem.core.ui.message.DialogMessage
|
||||
import com.tangem.core.ui.message.EventMessageAction
|
||||
import com.tangem.core.ui.message.ToastMessage
|
||||
import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier
|
||||
import com.tangem.domain.account.producer.SingleAccountProducer
|
||||
import com.tangem.domain.account.supplier.SingleAccountSupplier
|
||||
import com.tangem.domain.account.usecase.ArchiveCryptoPortfolioUseCase
|
||||
import com.tangem.domain.models.PortfolioId
|
||||
import com.tangem.domain.models.account.Account
|
||||
|
|
@ -35,7 +36,7 @@ internal class AccountDetailsModel @Inject constructor(
|
|||
private val router: Router,
|
||||
override val dispatchers: CoroutineDispatcherProvider,
|
||||
private val archiveCryptoPortfolioUseCase: ArchiveCryptoPortfolioUseCase,
|
||||
singleAccountStatusListSupplier: SingleAccountStatusListSupplier,
|
||||
singleAccountSupplier: SingleAccountSupplier,
|
||||
private val getUserWalletUseCase: GetUserWalletUseCase,
|
||||
) : Model() {
|
||||
|
||||
|
|
@ -46,22 +47,19 @@ internal class AccountDetailsModel @Inject constructor(
|
|||
private val accountId = params.account.accountId
|
||||
|
||||
init {
|
||||
singleAccountStatusListSupplier(accountId.userWalletId)
|
||||
.map { it.accountStatuses.find { status -> status.account.accountId == accountId }?.account }
|
||||
.filterNotNull()
|
||||
.distinctUntilChanged()
|
||||
.map { account -> buildUI(account) }
|
||||
singleAccountSupplier(SingleAccountProducer.Params(accountId))
|
||||
.onEach { account -> _uiState.update { buildUI(account) } }
|
||||
.launchIn(modelScope)
|
||||
}
|
||||
|
||||
private fun onEditAccountClick() {
|
||||
router.push(AppRoute.EditAccount(params.account))
|
||||
private fun onEditAccountClick(account: Account) {
|
||||
router.push(AppRoute.EditAccount(account))
|
||||
}
|
||||
|
||||
private fun onManageTokensClick() {
|
||||
private fun onManageTokensClick(account: Account) {
|
||||
val route = AppRoute.ManageTokens(
|
||||
source = AppRoute.ManageTokens.Source.SETTINGS,
|
||||
portfolioId = PortfolioId(params.account.accountId),
|
||||
portfolioId = PortfolioId(account.accountId),
|
||||
)
|
||||
router.push(route)
|
||||
}
|
||||
|
|
@ -92,7 +90,7 @@ internal class AccountDetailsModel @Inject constructor(
|
|||
|
||||
private fun archiveCryptoPortfolio() = modelScope.launch {
|
||||
_uiState.update { it.toggleProgress(true) }
|
||||
archiveCryptoPortfolioUseCase(params.account.accountId)
|
||||
archiveCryptoPortfolioUseCase(accountId)
|
||||
.onLeft { error ->
|
||||
failedArchiveDialog(error)
|
||||
_uiState.update { it.toggleProgress(false) }
|
||||
|
|
@ -138,14 +136,14 @@ internal class AccountDetailsModel @Inject constructor(
|
|||
)
|
||||
}
|
||||
}
|
||||
val isMultiCurrency = getUserWalletUseCase(params.account.accountId.userWalletId)
|
||||
val isMultiCurrency = getUserWalletUseCase(account.accountId.userWalletId)
|
||||
.getOrNull()?.isMultiCurrency ?: false
|
||||
return AccountDetailsUM(
|
||||
accountName = params.account.accountName.toUM().value,
|
||||
accountIcon = params.account.portfolioIcon.toUM(),
|
||||
accountName = account.accountName.toUM().value,
|
||||
accountIcon = account.portfolioIcon.toUM(),
|
||||
onCloseClick = { router.pop() },
|
||||
onAccountEditClick = ::onEditAccountClick,
|
||||
onManageTokensClick = ::onManageTokensClick,
|
||||
onAccountEditClick = { onEditAccountClick(account) },
|
||||
onManageTokensClick = { onManageTokensClick(account) },
|
||||
archiveMode = archiveMode,
|
||||
isManageTokensAvailable = isMultiCurrency,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue