Skip to content

Commit

Permalink
Improve reserved banner
Browse files Browse the repository at this point in the history
Fixed 93
  • Loading branch information
furenster committed Dec 8, 2024
1 parent 2f8f8d9 commit e532c02
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@ import androidx.lifecycle.viewModelScope
import com.gemwallet.android.cases.banners.CancelBannerCase
import com.gemwallet.android.cases.banners.GetBannersCase
import com.gemwallet.android.data.repositoreis.session.SessionRepository
import com.gemwallet.android.model.Crypto
import com.gemwallet.android.model.format
import com.wallet.core.primitives.Asset
import com.wallet.core.primitives.Banner
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import uniffi.gemstone.Config
import javax.inject.Inject

@HiltViewModel
Expand All @@ -34,6 +37,12 @@ class BannersViewModel @Inject constructor(
}
}

fun getActivationFee(asset: Asset?): String {
asset ?: return ""
val value = Config().getChainConfig(asset.id.chain.string).accountActivationFee?.toString() ?: return ""
return asset.format(Crypto(value))
}

fun onCancel(banner: Banner) = viewModelScope.launch {
cancelBannerCase.cancelBanner(banner)
init(banner.asset, banner.wallet == null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ import com.gemwallet.android.R
import com.gemwallet.android.ext.chain
import com.gemwallet.android.ext.toIdentifier
import com.gemwallet.android.features.banners.viewmodels.BannersViewModel
import com.gemwallet.android.model.Crypto
import com.gemwallet.android.model.format
import com.gemwallet.android.ui.components.image.getIconUrl
import com.gemwallet.android.ui.components.image.IconWithBadge
import com.gemwallet.android.ui.components.designsystem.Spacer16
Expand All @@ -42,6 +44,8 @@ import com.wallet.core.primitives.Asset
import com.wallet.core.primitives.Banner
import com.wallet.core.primitives.BannerEvent
import com.wallet.core.primitives.BannerState
import com.wallet.core.primitives.Chain
import uniffi.gemstone.Config

@Composable
fun BannersScene(
Expand All @@ -51,8 +55,10 @@ fun BannersScene(
viewModel: BannersViewModel = hiltViewModel(),
) {
LaunchedEffect(asset?.id?.toIdentifier(), isGlobal) { viewModel.init(asset, isGlobal) }

val banners by viewModel.banners.collectAsStateWithLifecycle()
val pageState = rememberPagerState { banners.size }

HorizontalPager(pageState, pageSpacing = padding16) { page ->
val banner = banners[page]
Box(modifier = Modifier.clickable { onClick(banner) }) {
Expand All @@ -63,8 +69,9 @@ fun BannersScene(
)
BannerEvent.AccountActivation -> Pair(
stringResource(R.string.banner_account_activation_title, asset?.name ?: ""),
stringResource(R.string.banner_account_activation_description, asset?.name ?: "", "10 XRP")
)
stringResource(R.string.banner_account_activation_description, asset?.name ?: "",
viewModel.getActivationFee(asset)
))
BannerEvent.EnableNotifications -> Pair(
stringResource(R.string.banner_enable_notifications_title, asset?.name ?: ""),
stringResource(R.string.banner_enable_notifications_description)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@ import com.gemwallet.android.ext.asset
import com.gemwallet.android.ext.getReserveBalance
import com.gemwallet.android.model.AssetBalance
import com.wallet.core.primitives.Chain
import uniffi.gemstone.Config
import java.math.BigInteger

class XrpBalanceClient(
private val chain: Chain,
private val rpcClient: XrpRpcClient,
) : BalanceClient {
private val reservedBalance = BigInteger.valueOf(1_000_000)

override suspend fun getNativeBalance(chain: Chain, address: String): AssetBalance {
val amount = rpcClient.account(address).mapCatching {
it.result.account_data.Balance.toBigInteger() - chain.getReserveBalance()
}.getOrNull() ?: BigInteger.ZERO
return AssetBalance.create(chain.asset(), available = amount.toString(), reserved = reservedBalance.toString())
return AssetBalance.create(
chain.asset(),
available = amount.toString(),
reserved = (Config().getChainConfig(chain.string).accountActivationFee?.toString() ?: 0).toString()
)
}

override fun supported(chain: Chain): Boolean = this.chain == chain
Expand Down
2 changes: 1 addition & 1 deletion core

0 comments on commit e532c02

Please sign in to comment.