Updated on 2026-08-14
This commit is contained in:
parent
23a113a1eb
commit
ff33484b28
8 changed files with 55 additions and 25 deletions
|
|
@ -17,6 +17,7 @@ sealed class AppDialog : StateDialog {
|
|||
data class SimpleOkDialogRes(
|
||||
val headerId: Int,
|
||||
val messageId: Int,
|
||||
val args: List<String> = emptyList(),
|
||||
val onOk: VoidCallback? = null,
|
||||
) : AppDialog()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.tap.features.tokens.impl.presentation.router
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
import com.tangem.core.navigation.AppScreen
|
||||
import com.tangem.core.navigation.NavigationAction
|
||||
import com.tangem.tap.common.extensions.dispatchDialogShow
|
||||
|
|
@ -49,12 +50,21 @@ internal class DefaultTokensListRouter(
|
|||
)
|
||||
}
|
||||
|
||||
override fun openUnsupportedSoltanaNetworkAlert() {
|
||||
store.dispatchDialogShow(
|
||||
AppDialog.SimpleOkDialogRes(
|
||||
override fun openUnsupportedNetworkAlert(blockchain: Blockchain) {
|
||||
val alert = when (blockchain) {
|
||||
Blockchain.Solana -> AppDialog.SimpleOkDialogRes(
|
||||
headerId = R.string.common_warning,
|
||||
messageId = R.string.alert_manage_tokens_unsupported_message,
|
||||
),
|
||||
)
|
||||
)
|
||||
Blockchain.Chia, Blockchain.ChiaTestnet -> AppDialog.SimpleOkDialogRes(
|
||||
headerId = R.string.common_warning,
|
||||
messageId = R.string.alert_manage_tokens_unsupported_curve_message,
|
||||
args = listOf(blockchain.fullName),
|
||||
)
|
||||
else -> null // there's no alerts for other blockchains yer
|
||||
}
|
||||
if (alert != null) {
|
||||
store.dispatchDialogShow(alert)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
package com.tangem.tap.features.tokens.impl.presentation.router
|
||||
|
||||
import com.tangem.blockchain.common.Blockchain
|
||||
|
||||
/** Tokens list feature router */
|
||||
internal interface TokensListRouter {
|
||||
|
||||
|
|
@ -28,6 +30,9 @@ internal interface TokensListRouter {
|
|||
*/
|
||||
fun openRemoveWalletAlert(tokenName: String, onOkClick: () -> Unit)
|
||||
|
||||
/** Open alert if solana network is unsupported */
|
||||
fun openUnsupportedSoltanaNetworkAlert()
|
||||
/** Open alert if solana network is unsupported
|
||||
*
|
||||
* @param blockchain blockchain to show alert
|
||||
*/
|
||||
fun openUnsupportedNetworkAlert(blockchain: Blockchain)
|
||||
}
|
||||
|
|
@ -309,9 +309,13 @@ internal class TokensListViewModel @Inject constructor(
|
|||
toggledNetwork.changeToggleState()
|
||||
}
|
||||
} else {
|
||||
analyticsSender.sendWhenBlockchainAdded(blockchain)
|
||||
changedBlockchainList.add(blockchain)
|
||||
toggledNetwork.changeToggleState()
|
||||
if (isUnsupportedToken(blockchain)) {
|
||||
router.openUnsupportedNetworkAlert(blockchain)
|
||||
} else {
|
||||
analyticsSender.sendWhenBlockchainAdded(blockchain)
|
||||
changedBlockchainList.add(blockchain)
|
||||
toggledNetwork.changeToggleState()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -350,17 +354,8 @@ internal class TokensListViewModel @Inject constructor(
|
|||
toggledNetwork.changeToggleState()
|
||||
}
|
||||
} else {
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
val isUnsupportedToken =
|
||||
!(
|
||||
scanResponse?.card?.canHandleToken(
|
||||
blockchain = token.blockchain,
|
||||
cardTypesResolver = scanResponse.cardTypesResolver,
|
||||
) ?: false
|
||||
)
|
||||
|
||||
if (isUnsupportedToken) {
|
||||
router.openUnsupportedSoltanaNetworkAlert()
|
||||
if (isUnsupportedToken(token.blockchain)) {
|
||||
router.openUnsupportedNetworkAlert(token.blockchain)
|
||||
} else {
|
||||
analyticsSender.sendWhenTokenAdded(token.token)
|
||||
changedTokensList.add(token)
|
||||
|
|
@ -370,6 +365,15 @@ internal class TokensListViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isUnsupportedToken(blockchain: Blockchain): Boolean {
|
||||
val scanResponse = reduxStateHolder.scanResponse
|
||||
val canHandleToken = scanResponse?.card?.canHandleToken(
|
||||
blockchain = blockchain,
|
||||
cardTypesResolver = scanResponse.cardTypesResolver,
|
||||
) ?: false
|
||||
return !canHandleToken
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val MAIN_NETWORK_LABEL = "MAIN"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,9 +25,14 @@ object SimpleOkDialog {
|
|||
}
|
||||
|
||||
fun create(dialog: AppDialog.SimpleOkDialogRes, context: Context): AlertDialog {
|
||||
val message = if (dialog.args.isEmpty()) {
|
||||
context.getString(dialog.messageId)
|
||||
} else {
|
||||
context.getString(dialog.messageId, *dialog.args.toTypedArray())
|
||||
}
|
||||
return AlertDialog.Builder(context).apply {
|
||||
setTitle(context.getString(dialog.headerId))
|
||||
setMessage(dialog.messageId)
|
||||
setMessage(message)
|
||||
setPositiveButton(R.string.common_ok) { _, _ -> }
|
||||
setOnDismissListener {
|
||||
store.dispatchDialogHide()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue