Skip to content

Commit 7d7470a

Browse files
authored
Merge pull request #144 from synonymdev/feat/activity-filter
feat: Activity filter header
2 parents 5c47856 + 10321c0 commit 7d7470a

20 files changed

+838
-490
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,28 @@
11
package to.bitkit.ext
22

33
import uniffi.bitkitcore.Activity
4+
import uniffi.bitkitcore.PaymentType
45

56
fun Activity.rawId(): String = when (this) {
67
is Activity.Lightning -> v1.id
78
is Activity.Onchain -> v1.id
89
}
10+
11+
/**
12+
* Calculates the total value of an activity based on its type.
13+
*
14+
* For `Lightning` activity, the total value = `value + fee`.
15+
*
16+
* For `Onchain` activity:
17+
* - If it is a send, the total value = `value + fee`.
18+
* - Otherwise it's equal to `value`.
19+
*
20+
* @return The total value as an `ULong`.
21+
*/
22+
fun Activity.totalValue() = when(this) {
23+
is Activity.Lightning -> v1.value + (v1.fee ?: 0u)
24+
is Activity.Onchain -> when (v1.txType) {
25+
PaymentType.SENT -> v1.value + v1.fee
26+
else -> v1.value
27+
}
28+
}

app/src/main/java/to/bitkit/services/CoreService.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,11 @@ class ActivityService(
252252
txType = payment.direction.toPaymentType(),
253253
status = state,
254254
value = payment.amountSats ?: 0u,
255-
fee = null, // TODO
256-
invoice = "lnbc123", // TODO
255+
fee = (payment.feePaidMsat ?: 0u) / 1000u,
256+
invoice = "lnbc123_todo", // TODO
257257
message = "",
258258
timestamp = payment.latestUpdateTimestamp,
259-
preimage = null,
259+
preimage = kind.preimage,
260260
createdAt = payment.latestUpdateTimestamp,
261261
updatedAt = payment.latestUpdateTimestamp,
262262
)
@@ -370,7 +370,8 @@ class ActivityService(
370370
"Gift for mom",
371371
"Split dinner bill",
372372
"Monthly rent",
373-
"Gym membership"
373+
"Gym membership",
374+
"Very long invoice message to test truncation in list",
374375
)
375376

376377
repeat(count) { i ->

app/src/main/java/to/bitkit/ui/components/Text.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,8 @@ fun CaptionB(
350350
modifier: Modifier = Modifier,
351351
color: Color = MaterialTheme.colorScheme.primary,
352352
textAlign: TextAlign = TextAlign.Start,
353+
maxLines: Int = Int.MAX_VALUE,
354+
overflow: TextOverflow = if (maxLines == 1) TextOverflow.Ellipsis else TextOverflow.Clip,
353355
) {
354356
Text(
355357
text = text,
@@ -363,6 +365,8 @@ fun CaptionB(
363365
textAlign = textAlign,
364366
),
365367
modifier = modifier,
368+
maxLines = maxLines,
369+
overflow = overflow,
366370
)
367371
}
368372

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ import to.bitkit.ui.navigateToTransferSavingsIntro
6060
import to.bitkit.ui.navigateToTransferSpendingAmount
6161
import to.bitkit.ui.navigateToTransferSpendingIntro
6262
import to.bitkit.ui.scaffold.AppScaffold
63-
import to.bitkit.ui.screens.wallets.activity.HomeActivityList
63+
import to.bitkit.ui.screens.wallets.activity.components.ActivityListSimple
6464
import to.bitkit.ui.screens.wallets.activity.AllActivityScreen
6565
import to.bitkit.ui.screens.wallets.activity.DateRangeSelectorSheet
6666
import to.bitkit.ui.screens.wallets.activity.TagSelectorSheet
@@ -272,7 +272,7 @@ private fun HomeContentView(
272272
Spacer(modifier = Modifier.height(16.dp))
273273
val activity = activityListViewModel ?: return@Column
274274
val latestActivities by activity.latestActivities.collectAsStateWithLifecycle()
275-
HomeActivityList(
275+
ActivityListSimple(
276276
items = latestActivities,
277277
onAllActivityClick = { walletNavController.navigate(HomeRoutes.AllActivity) },
278278
onActivityItemClick = { rootNavController.navigateToActivityItem(it) },

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import to.bitkit.ui.components.EmptyStateView
3333
import to.bitkit.ui.components.SecondaryButton
3434
import to.bitkit.ui.scaffold.AppTopBar
3535
import to.bitkit.ui.scaffold.ScreenColumn
36-
import to.bitkit.ui.screens.wallets.activity.ActivityListWithHeaders
36+
import to.bitkit.ui.screens.wallets.activity.components.ActivityListGrouped
3737
import to.bitkit.ui.theme.AppThemeSurface
3838
import to.bitkit.ui.theme.Colors
3939
import to.bitkit.ui.utils.withAccent
@@ -88,10 +88,10 @@ fun SavingsWalletScreen(
8888
)
8989
}
9090
)
91-
Spacer(modifier = Modifier.height(16.dp))
91+
9292
val activity = activityListViewModel ?: return@Column
9393
val onchainActivities by activity.onchainActivities.collectAsState()
94-
ActivityListWithHeaders(
94+
ActivityListGrouped(
9595
items = onchainActivities,
9696
showFooter = true,
9797
onAllActivityButtonClick = onAllActivityButtonClick,

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import to.bitkit.ui.components.EmptyStateView
3333
import to.bitkit.ui.components.SecondaryButton
3434
import to.bitkit.ui.scaffold.AppTopBar
3535
import to.bitkit.ui.scaffold.ScreenColumn
36-
import to.bitkit.ui.screens.wallets.activity.ActivityListWithHeaders
36+
import to.bitkit.ui.screens.wallets.activity.components.ActivityListGrouped
3737
import to.bitkit.ui.theme.AppThemeSurface
3838
import to.bitkit.ui.theme.Colors
3939
import to.bitkit.ui.utils.withAccent
@@ -100,12 +100,11 @@ fun SpendingWalletScreen(
100100
)
101101
}
102102
)
103-
Spacer(modifier = Modifier.height(16.dp))
104103
}
105104

106105
val activity = activityListViewModel ?: return@Column
107106
val lightningActivities by activity.lightningActivities.collectAsState()
108-
ActivityListWithHeaders(
107+
ActivityListGrouped(
109108
items = lightningActivities,
110109
showFooter = true,
111110
onAllActivityButtonClick = onAllActivityButtonClick,

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import to.bitkit.ext.ellipsisMiddle
3838
import to.bitkit.ext.rawId
3939
import to.bitkit.ext.toActivityItemDate
4040
import to.bitkit.ext.toActivityItemTime
41+
import to.bitkit.ext.totalValue
4142
import to.bitkit.models.Toast
4243
import to.bitkit.ui.Routes
4344
import to.bitkit.ui.appViewModel
@@ -50,7 +51,6 @@ import to.bitkit.ui.components.TagButton
5051
import to.bitkit.ui.components.Title
5152
import to.bitkit.ui.scaffold.AppTopBar
5253
import to.bitkit.ui.scaffold.CloseNavIcon
53-
import to.bitkit.ui.scaffold.ScreenColumn
5454
import to.bitkit.ui.screens.wallets.activity.components.ActivityAddTagSheet
5555
import to.bitkit.ui.screens.wallets.activity.components.ActivityIcon
5656
import to.bitkit.ui.shared.util.clickableAlpha
@@ -89,7 +89,9 @@ fun ActivityDetailScreen(
8989
detailViewModel.setActivity(item)
9090
}
9191

92-
ScreenColumn {
92+
Column(
93+
modifier = Modifier.background(Colors.Black)
94+
) {
9395
AppTopBar(
9496
titleText = stringResource(item.getScreenTitleRes()),
9597
onBackClick = onBackClick,
@@ -111,6 +113,7 @@ fun ActivityDetailScreen(
111113
)
112114
if (showAddTagSheet) {
113115
ActivityAddTagSheet(
116+
listViewModel = listViewModel,
114117
activityViewModel = detailViewModel,
115118
onDismiss = { showAddTagSheet = false },
116119
)
@@ -142,13 +145,6 @@ private fun ActivityDetailContent(
142145
else -> item.v1.timestamp
143146
}
144147
}
145-
val value = when (item) {
146-
is Activity.Lightning -> item.v1.value
147-
is Activity.Onchain -> when {
148-
isSent -> item.v1.value + item.v1.fee
149-
else -> item.v1.value
150-
}
151-
}
152148
val paymentValue = when (item) {
153149
is Activity.Lightning -> item.v1.value
154150
is Activity.Onchain -> item.v1.value
@@ -171,7 +167,7 @@ private fun ActivityDetailContent(
171167
.padding(vertical = 16.dp)
172168
) {
173169
BalanceHeaderView(
174-
sats = value.toLong(),
170+
sats = item.totalValue().toLong(),
175171
prefix = amountPrefix,
176172
showBitcoinSymbol = false,
177173
modifier = Modifier.weight(1f)

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import to.bitkit.R
3434
import to.bitkit.env.Env
3535
import to.bitkit.ext.ellipsisMiddle
3636
import to.bitkit.ext.rawId
37+
import to.bitkit.ext.totalValue
3738
import to.bitkit.models.Toast
3839
import to.bitkit.ui.Routes
3940
import to.bitkit.ui.appViewModel
@@ -129,17 +130,13 @@ private fun ActivityExploreContent(
129130
.fillMaxWidth()
130131
.padding(vertical = 16.dp)
131132
) {
132-
val value = when (item) {
133-
is Activity.Lightning -> item.v1.value
134-
is Activity.Onchain -> item.v1.value
135-
}
136133
val isSent = when (item) {
137134
is Activity.Lightning -> item.v1.txType == PaymentType.SENT
138135
is Activity.Onchain -> item.v1.txType == PaymentType.SENT
139136
}
140137
val amountPrefix = if (isSent) "-" else "+"
141138
BalanceHeaderView(
142-
sats = value.toLong(),
139+
sats = item.totalValue().toLong(),
143140
prefix = amountPrefix,
144141
showBitcoinSymbol = false,
145142
modifier = Modifier.weight(1f),

0 commit comments

Comments
 (0)