@@ -42,6 +42,7 @@ import androidx.compose.ui.unit.dp
4242import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
4343import androidx.lifecycle.compose.collectAsStateWithLifecycle
4444import com.synonym.bitkitcore.Activity
45+ import com.synonym.bitkitcore.FeeRates
4546import com.synonym.bitkitcore.LightningActivity
4647import com.synonym.bitkitcore.OnchainActivity
4748import com.synonym.bitkitcore.PaymentState
@@ -52,12 +53,15 @@ import to.bitkit.ext.ellipsisMiddle
5253import to.bitkit.ext.isSent
5354import to.bitkit.ext.isTransfer
5455import to.bitkit.ext.rawId
56+ import to.bitkit.ext.timestamp
5557import to.bitkit.ext.toActivityItemDate
5658import to.bitkit.ext.toActivityItemTime
5759import to.bitkit.ext.totalValue
60+ import to.bitkit.models.FeeRate
5861import to.bitkit.models.Toast
5962import to.bitkit.ui.Routes
6063import to.bitkit.ui.appViewModel
64+ import to.bitkit.ui.blocktankViewModel
6165import to.bitkit.ui.components.BalanceHeaderView
6266import to.bitkit.ui.components.BodySSB
6367import to.bitkit.ui.components.BottomSheetPreview
@@ -188,6 +192,10 @@ fun ActivityDetailScreen(
188192 }
189193
190194 val context = LocalContext .current
195+ val blocktankInfo by blocktankViewModel?.info?.collectAsStateWithLifecycle() ? : remember {
196+ mutableStateOf(null )
197+ }
198+ val feeRates = blocktankInfo?.onchain?.feeRates
191199
192200 Column (
193201 modifier = Modifier .background(Colors .Black )
@@ -220,7 +228,8 @@ fun ActivityDetailScreen(
220228 title = copyToastTitle,
221229 description = text.ellipsisMiddle(40 )
222230 )
223- }
231+ },
232+ feeRates = feeRates,
224233 )
225234 if (showAddTagSheet) {
226235 ActivityAddTagSheet (
@@ -289,6 +298,7 @@ private fun ActivityDetailContent(
289298 isCpfpChild : Boolean = false,
290299 boostTxDoesExist : Map <String , Boolean > = emptyMap(),
291300 onCopy : (String ) -> Unit ,
301+ feeRates : FeeRates ? = null,
292302) {
293303 val isLightning = item is Activity .Lightning
294304 val isSent = item.isSent()
@@ -303,13 +313,7 @@ private fun ActivityDetailContent(
303313 }
304314
305315 val amountPrefix = if (isSent) " -" else " +"
306- val timestamp = when (item) {
307- is Activity .Lightning -> item.v1.timestamp
308- is Activity .Onchain -> when (item.v1.confirmed) {
309- true -> item.v1.confirmTimestamp ? : item.v1.timestamp
310- else -> item.v1.timestamp
311- }
312- }
316+ val timestamp = item.timestamp()
313317 val paymentValue = when (item) {
314318 is Activity .Lightning -> item.v1.value
315319 is Activity .Onchain -> item.v1.value
@@ -369,7 +373,7 @@ private fun ActivityDetailContent(
369373 }
370374
371375 Spacer (modifier = Modifier .height(16 .dp))
372- StatusSection (item, accentColor)
376+ StatusSection (item, accentColor, feeRates )
373377 HorizontalDivider (modifier = Modifier .padding(top = 16 .dp))
374378
375379 // Timestamp section: date and time
@@ -686,7 +690,11 @@ private fun ActivityDetailContent(
686690}
687691
688692@Composable
689- private fun StatusSection (item : Activity , accentColor : Color ) {
693+ private fun StatusSection (
694+ item : Activity ,
695+ accentColor : Color ,
696+ feeRates : FeeRates ? = null,
697+ ) {
690698 Column (modifier = Modifier .fillMaxWidth()) {
691699 Caption13Up (
692700 text = stringResource(R .string.wallet__activity_status),
@@ -731,9 +739,10 @@ private fun StatusSection(item: Activity, accentColor: Color) {
731739 var statusTestTag: String? = null
732740
733741 if (item.v1.isTransfer) {
734- val duration = 0 // TODO get transfer duration
742+ val duration = FeeRate .getFeeDescription(item.v1.feeRate, feeRates)
743+ .removeEstimationSymbol()
735744 statusText = stringResource(R .string.wallet__activity_transfer_pending)
736- .replace(" {duration}" , " $ duration" )
745+ .replace(" {duration}" , duration)
737746 statusTestTag = " StatusTransfer"
738747 }
739748
@@ -951,3 +960,6 @@ private fun isBoostCompleted(
951960
952961 return false
953962}
963+
964+ // TODO remove this method after transifex update
965+ private fun String.removeEstimationSymbol () = this .replace(" ±" , " " )
0 commit comments