Skip to content

Commit a74b369

Browse files
committed
feat: display time estimation
1 parent d0f45ca commit a74b369

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

app/src/main/java/to/bitkit/ui/screens/wallets/activity/ActivityDetailScreen.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
4242
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
4343
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4444
import com.synonym.bitkitcore.Activity
45+
import com.synonym.bitkitcore.FeeRates
4546
import com.synonym.bitkitcore.LightningActivity
4647
import com.synonym.bitkitcore.OnchainActivity
4748
import com.synonym.bitkitcore.PaymentState
@@ -56,9 +57,11 @@ import to.bitkit.ext.timestamp
5657
import to.bitkit.ext.toActivityItemDate
5758
import to.bitkit.ext.toActivityItemTime
5859
import to.bitkit.ext.totalValue
60+
import to.bitkit.models.FeeRate
5961
import to.bitkit.models.Toast
6062
import to.bitkit.ui.Routes
6163
import to.bitkit.ui.appViewModel
64+
import to.bitkit.ui.blocktankViewModel
6265
import to.bitkit.ui.components.BalanceHeaderView
6366
import to.bitkit.ui.components.BodySSB
6467
import to.bitkit.ui.components.BottomSheetPreview
@@ -189,6 +192,10 @@ fun ActivityDetailScreen(
189192
}
190193

191194
val context = LocalContext.current
195+
val blocktankInfo by blocktankViewModel?.info?.collectAsStateWithLifecycle() ?: remember {
196+
mutableStateOf(null)
197+
}
198+
val feeRates = blocktankInfo?.onchain?.feeRates
192199

193200
Column(
194201
modifier = Modifier.background(Colors.Black)
@@ -221,7 +228,8 @@ fun ActivityDetailScreen(
221228
title = copyToastTitle,
222229
description = text.ellipsisMiddle(40)
223230
)
224-
}
231+
},
232+
feeRates = feeRates,
225233
)
226234
if (showAddTagSheet) {
227235
ActivityAddTagSheet(
@@ -290,6 +298,7 @@ private fun ActivityDetailContent(
290298
isCpfpChild: Boolean = false,
291299
boostTxDoesExist: Map<String, Boolean> = emptyMap(),
292300
onCopy: (String) -> Unit,
301+
feeRates: FeeRates? = null,
293302
) {
294303
val isLightning = item is Activity.Lightning
295304
val isSent = item.isSent()
@@ -364,7 +373,7 @@ private fun ActivityDetailContent(
364373
}
365374

366375
Spacer(modifier = Modifier.height(16.dp))
367-
StatusSection(item, accentColor)
376+
StatusSection(item, accentColor, feeRates)
368377
HorizontalDivider(modifier = Modifier.padding(top = 16.dp))
369378

370379
// Timestamp section: date and time
@@ -681,7 +690,11 @@ private fun ActivityDetailContent(
681690
}
682691

683692
@Composable
684-
private fun StatusSection(item: Activity, accentColor: Color) {
693+
private fun StatusSection(
694+
item: Activity,
695+
accentColor: Color,
696+
feeRates: FeeRates? = null,
697+
) {
685698
Column(modifier = Modifier.fillMaxWidth()) {
686699
Caption13Up(
687700
text = stringResource(R.string.wallet__activity_status),
@@ -726,9 +739,10 @@ private fun StatusSection(item: Activity, accentColor: Color) {
726739
var statusTestTag: String? = null
727740

728741
if (item.v1.isTransfer) {
729-
val duration = 0 // TODO get transfer duration
742+
val duration = FeeRate.getFeeDescription(item.v1.feeRate, feeRates)
743+
.removeEstimationSymbol()
730744
statusText = stringResource(R.string.wallet__activity_transfer_pending)
731-
.replace("{duration}", "$duration")
745+
.replace("{duration}", duration)
732746
statusTestTag = "StatusTransfer"
733747
}
734748

@@ -946,3 +960,6 @@ private fun isBoostCompleted(
946960

947961
return false
948962
}
963+
964+
// TODO remove this method after transifex update
965+
private fun String.removeEstimationSymbol() = this.replace("±", "")

0 commit comments

Comments
 (0)