Updated on 2026-08-14
This commit is contained in:
parent
71e8f40909
commit
3b65bef8a8
17 changed files with 346 additions and 128 deletions
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.common.routing
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import com.tangem.common.routing.bundle.RouteBundleParams
|
||||
import com.tangem.common.routing.bundle.bundle
|
||||
|
|
@ -8,6 +9,7 @@ import com.tangem.core.decompose.navigation.Route
|
|||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.feedback.models.WalletMetaInfo
|
||||
import com.tangem.domain.markets.TokenMarketParams
|
||||
import com.tangem.domain.models.PortfolioId
|
||||
import com.tangem.domain.models.account.Account
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.scan.ScanResponse
|
||||
|
|
@ -16,6 +18,7 @@ import com.tangem.domain.nft.models.NFTAsset
|
|||
import com.tangem.domain.onramp.model.OnrampSource
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
@Serializable
|
||||
sealed class AppRoute(val path: String) : Route {
|
||||
|
||||
|
|
@ -46,25 +49,50 @@ sealed class AppRoute(val path: String) : Route {
|
|||
|
||||
@Serializable
|
||||
data class CurrencyDetails(
|
||||
val userWalletId: UserWalletId,
|
||||
val portfolioId: PortfolioId,
|
||||
val currency: CryptoCurrency,
|
||||
) : AppRoute(path = "/currency_details/${userWalletId.stringValue}/${currency.id.value}")
|
||||
) : AppRoute(path = "/currency_details/${portfolioId.stringValue}/${currency.id.value}") {
|
||||
companion object {
|
||||
operator fun invoke(userWalletId: UserWalletId, currency: CryptoCurrency) = CurrencyDetails(
|
||||
portfolioId = PortfolioId(userWalletId),
|
||||
currency = currency,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Send(
|
||||
val userWalletId: UserWalletId,
|
||||
val portfolioId: PortfolioId,
|
||||
val currency: CryptoCurrency,
|
||||
val transactionId: String? = null,
|
||||
val amount: String? = null,
|
||||
val tag: String? = null,
|
||||
val destinationAddress: String? = null,
|
||||
) : AppRoute(
|
||||
path = "/send/${userWalletId.stringValue}/${currency.id.value}?" +
|
||||
path = "/send/${portfolioId.stringValue}/${currency.id.value}?" +
|
||||
"&$transactionId" +
|
||||
"&$amount" +
|
||||
"&$tag" +
|
||||
"&$destinationAddress",
|
||||
)
|
||||
) {
|
||||
companion object {
|
||||
operator fun invoke(
|
||||
userWalletId: UserWalletId,
|
||||
currency: CryptoCurrency,
|
||||
transactionId: String? = null,
|
||||
amount: String? = null,
|
||||
tag: String? = null,
|
||||
destinationAddress: String? = null,
|
||||
) = Send(
|
||||
portfolioId = PortfolioId(userWalletId),
|
||||
currency = currency,
|
||||
transactionId = transactionId,
|
||||
amount = amount,
|
||||
tag = tag,
|
||||
destinationAddress = destinationAddress,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Details(
|
||||
|
|
@ -169,26 +197,51 @@ sealed class AppRoute(val path: String) : Route {
|
|||
data class Swap(
|
||||
val currencyFrom: CryptoCurrency,
|
||||
val currencyTo: CryptoCurrency? = null,
|
||||
val userWalletId: UserWalletId,
|
||||
val portfolioId: PortfolioId,
|
||||
val isInitialReverseOrder: Boolean = false,
|
||||
val screenSource: String,
|
||||
) : AppRoute(
|
||||
path = "/swap" +
|
||||
"/${currencyFrom.id.value}" +
|
||||
"/${currencyTo?.id?.value}" +
|
||||
"/${userWalletId.stringValue}" +
|
||||
"/${portfolioId.stringValue}" +
|
||||
"/$isInitialReverseOrder",
|
||||
)
|
||||
) {
|
||||
companion object {
|
||||
operator fun invoke(
|
||||
userWalletId: UserWalletId,
|
||||
currencyFrom: CryptoCurrency,
|
||||
currencyTo: CryptoCurrency? = null,
|
||||
isInitialReverseOrder: Boolean = false,
|
||||
screenSource: String,
|
||||
) = Swap(
|
||||
portfolioId = PortfolioId(userWalletId),
|
||||
currencyFrom = currencyFrom,
|
||||
currencyTo = currencyTo,
|
||||
isInitialReverseOrder = isInitialReverseOrder,
|
||||
screenSource = screenSource,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data object AppCurrencySelector : AppRoute(path = "/app_currency_selector")
|
||||
|
||||
@Serializable
|
||||
data class Staking(
|
||||
val userWalletId: UserWalletId,
|
||||
val portfolioId: PortfolioId,
|
||||
val cryptoCurrencyId: CryptoCurrency.ID,
|
||||
val yieldId: String,
|
||||
) : AppRoute(path = "/staking/${userWalletId.stringValue}/${cryptoCurrencyId.value}/$yieldId")
|
||||
) : AppRoute(path = "/staking/${portfolioId.stringValue}/${cryptoCurrencyId.value}/$yieldId") {
|
||||
companion object {
|
||||
operator fun invoke(userWalletId: UserWalletId, cryptoCurrencyId: CryptoCurrency.ID, yieldId: String) =
|
||||
Staking(
|
||||
portfolioId = PortfolioId(userWalletId),
|
||||
cryptoCurrencyId = cryptoCurrencyId,
|
||||
yieldId = yieldId,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class PushNotification(
|
||||
|
|
@ -232,11 +285,25 @@ sealed class AppRoute(val path: String) : Route {
|
|||
@Serializable
|
||||
data class Onramp(
|
||||
val source: OnrampSource,
|
||||
val userWalletId: UserWalletId,
|
||||
val portfolioId: PortfolioId,
|
||||
val currency: CryptoCurrency,
|
||||
val launchSepa: Boolean = false,
|
||||
) : AppRoute(path = "/onramp/${userWalletId.stringValue}/${currency.symbol}"), RouteBundleParams {
|
||||
) : AppRoute(path = "/onramp/${portfolioId.stringValue}/${currency.symbol}"), RouteBundleParams {
|
||||
override fun getBundle(): Bundle = bundle(serializer())
|
||||
|
||||
companion object {
|
||||
operator fun invoke(
|
||||
source: OnrampSource,
|
||||
userWalletId: UserWalletId,
|
||||
currency: CryptoCurrency,
|
||||
launchSepa: Boolean = false,
|
||||
) = Onramp(
|
||||
source = source,
|
||||
portfolioId = PortfolioId(userWalletId),
|
||||
currency = currency,
|
||||
launchSepa = launchSepa,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue