Skip to content

Commit

Permalink
Add info to tx status, fee, lock time
Browse files Browse the repository at this point in the history
  • Loading branch information
furenster committed Oct 18, 2024
1 parent 37a6d9e commit 235f3b4
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import uniffi.Gemstone.Config
import uniffi.Gemstone.DocsUrl
import java.math.BigInteger
import javax.inject.Inject

Expand Down Expand Up @@ -190,6 +192,7 @@ class ConfirmViewModel @Inject constructor(
CellEntity(
label = R.string.transfer_network_fee,
data = if ((state as? ConfirmState.Error)?.message == ConfirmError.CalculateFee) "-" else "",
infoUrl = Config().getDocsUrl(DocsUrl.NETWORK_FEES),
support = null,
trailing = {
if (state !is ConfirmState.Error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ import com.wallet.core.primitives.Chain
import com.wallet.core.primitives.StakeChain
import com.wallet.core.primitives.TransactionType
import com.wallet.core.primitives.WalletType
import uniffi.Gemstone.Config
import uniffi.Gemstone.DocsUrl

@OptIn(ExperimentalMaterialApi::class)
@Composable
Expand All @@ -57,6 +59,24 @@ fun StakeScene(
Spacer(modifier = Modifier.size(16.dp))
Box(modifier = Modifier.pullRefresh(pullRefreshState)) {
LazyColumn(modifier = Modifier.fillMaxSize()) {
item {
Spacer16()
SubheaderItem(title = uiState.title)
Table(
items = listOf(
CellEntity(
stringResource(id = R.string.stake_apr, ""),
data = PriceUIState.formatPercentage(uiState.apr, false)
),
CellEntity(
label = stringResource(id = R.string.stake_lock_time),
data = "${uiState.lockTime} days",
infoUrl = Config().getDocsUrl(DocsUrl.STAKING_LOCK_TIME)
),
),
)
}

actions(
assetId = uiState.assetId,
stakeChain = uiState.stakeChain,
Expand All @@ -76,23 +96,6 @@ fun StakeScene(
onClick = { onDelegation(it.validator.id, it.base.delegationId) }
)
}

item {
Spacer16()
SubheaderItem(title = uiState.title)
Table(
items = listOf(
CellEntity(
stringResource(id = R.string.stake_apr, ""),
data = PriceUIState.formatPercentage(uiState.apr, false)
),
CellEntity(
stringResource(id = R.string.stake_lock_time),
data = "${uiState.lockTime} days",
),
),
)
}
}
PullRefreshIndicator(uiState.loading, pullRefreshState, Modifier.align(Alignment.TopCenter))
}
Expand All @@ -112,6 +115,8 @@ private fun LazyListScope.actions(
return
}
item {
Spacer16()
SubheaderItem(title = stringResource(R.string.common_manage))
val cells = mutableListOf<CellEntity<Any>>(
CellEntity(label = stringResource(id = R.string.wallet_stake), data = "") {
onAmount(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ import com.wallet.core.primitives.AssetSubtype
import com.wallet.core.primitives.TransactionDirection
import com.wallet.core.primitives.TransactionState
import com.wallet.core.primitives.TransactionType
import uniffi.Gemstone.Config
import uniffi.Gemstone.DocsUrl

@Composable
fun TransactionDetails(
Expand Down Expand Up @@ -131,6 +133,7 @@ fun TransactionDetails(
else -> {}
}
},
infoUrl = Config().getDocsUrl(DocsUrl.TRANSACTION_STATUS),
data = when (model.state) {
TransactionState.Pending -> stringResource(id = R.string.transaction_status_pending)
TransactionState.Confirmed -> stringResource(id = R.string.transaction_status_confirmed)
Expand Down Expand Up @@ -204,6 +207,7 @@ fun TransactionDetails(
cells.add(
CellEntity(
label = stringResource(id = R.string.transfer_network_fee),
infoUrl = Config().getDocsUrl(DocsUrl.NETWORK_FEES),
data = model.feeCrypto,
support = model.feeFiat,
)
Expand Down
20 changes: 20 additions & 0 deletions app/src/main/java/com/gemwallet/android/ui/components/Table.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.gemwallet.android.ui.components

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
Expand All @@ -13,9 +14,12 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.icons.filled.Info
import androidx.compose.material.icons.outlined.Info
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
Expand All @@ -27,13 +31,15 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import com.gemwallet.android.ui.theme.padding16
import com.gemwallet.android.ui.theme.padding8
import kotlin.String

data class CellEntity<T>(
val label: T,
Expand All @@ -46,6 +52,7 @@ data class CellEntity<T>(
val trailing: (@Composable () -> Unit)? = null,
val dropDownActions: (@Composable (() -> Unit) -> Unit)? = null,
val showActionChevron: Boolean = true,
val infoUrl: String = "",
val testTag: String = "",
val action: (() -> Unit)? = null,
)
Expand Down Expand Up @@ -80,6 +87,7 @@ fun Table(
showActionChevron = item.showActionChevron,
trailingIcon = item.trailingIcon,
trailing = item.trailing,
infoUrl = item.infoUrl,
testTag = item.testTag,
)
DropdownMenu(
Expand Down Expand Up @@ -173,13 +181,15 @@ private fun Cell(
icon: String? = null,
dataColor: Color? = null,
support: String? = null,
infoUrl: String = "",
actionIcon: (@Composable () -> Unit)? = null,
showActionChevron: Boolean = true,
trailing: (@Composable () -> Unit)? = null,
trailingIcon: String? = null,
longAction: (() -> Unit)? = null,
action: (() -> Unit)? = null,
) {
val uriHandler = LocalUriHandler.current
Cell(
label = {
if (!icon.isNullOrEmpty()) {
Expand All @@ -196,6 +206,16 @@ private fun Cell(
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodyLarge,
)
if (infoUrl.isNotEmpty()) {
IconButton(onClick = { uriHandler.open(infoUrl) }) {
Icon(
modifier = Modifier.size(24.dp),
imageVector = Icons.Outlined.Info,
contentDescription = "",
tint = MaterialTheme.colorScheme.secondary,
)
}
}
},
data = {
MiddleEllipsisText(
Expand Down

0 comments on commit 235f3b4

Please sign in to comment.