Skip to content

Commit 888f50d

Browse files
authored
Merge pull request #445 from synonymdev/chore/activity-list-polish
Activity list polish
2 parents 05c3bfe + 33ba082 commit 888f50d

File tree

8 files changed

+224
-153
lines changed

8 files changed

+224
-153
lines changed

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

Lines changed: 31 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package to.bitkit.ui.screens.wallets.activity
22

33
import androidx.activity.compose.BackHandler
4-
import androidx.compose.foundation.background
54
import androidx.compose.foundation.gestures.detectHorizontalDragGestures
65
import androidx.compose.foundation.layout.Box
76
import androidx.compose.foundation.layout.Column
@@ -10,35 +9,21 @@ import androidx.compose.foundation.layout.Spacer
109
import androidx.compose.foundation.layout.fillMaxSize
1110
import androidx.compose.foundation.layout.height
1211
import androidx.compose.foundation.layout.padding
13-
import androidx.compose.foundation.shape.RoundedCornerShape
1412
import androidx.compose.material3.ExperimentalMaterial3Api
1513
import androidx.compose.runtime.Composable
1614
import androidx.compose.runtime.getValue
17-
import androidx.compose.runtime.mutableStateOf
1815
import androidx.compose.runtime.remember
19-
import androidx.compose.runtime.setValue
2016
import androidx.compose.ui.Modifier
2117
import androidx.compose.ui.composed
22-
import androidx.compose.ui.draw.clip
23-
import androidx.compose.ui.graphics.Brush
24-
import androidx.compose.ui.graphics.Color
2518
import androidx.compose.ui.input.pointer.pointerInput
2619
import androidx.compose.ui.input.pointer.util.VelocityTracker
27-
import androidx.compose.ui.layout.onGloballyPositioned
28-
import androidx.compose.ui.platform.LocalDensity
2920
import androidx.compose.ui.platform.testTag
3021
import androidx.compose.ui.res.stringResource
3122
import androidx.compose.ui.tooling.preview.Preview
3223
import androidx.compose.ui.unit.dp
33-
import androidx.compose.ui.zIndex
3424
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3525
import com.synonym.bitkitcore.Activity
36-
import dev.chrisbanes.haze.HazeState
37-
import dev.chrisbanes.haze.hazeEffect
38-
import dev.chrisbanes.haze.hazeSource
39-
import dev.chrisbanes.haze.materials.CupertinoMaterials
4026
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
41-
import dev.chrisbanes.haze.rememberHazeState
4227
import to.bitkit.R
4328
import to.bitkit.ui.appViewModel
4429
import to.bitkit.ui.components.Sheet
@@ -47,8 +32,8 @@ import to.bitkit.ui.screens.wallets.activity.components.ActivityListFilter
4732
import to.bitkit.ui.screens.wallets.activity.components.ActivityListGrouped
4833
import to.bitkit.ui.screens.wallets.activity.components.ActivityTab
4934
import to.bitkit.ui.screens.wallets.activity.utils.previewActivityItems
35+
import to.bitkit.ui.shared.util.screen
5036
import to.bitkit.ui.theme.AppThemeSurface
51-
import to.bitkit.ui.theme.Colors
5237
import to.bitkit.viewmodels.ActivityListViewModel
5338

5439
@OptIn(ExperimentalMaterial3Api::class)
@@ -76,9 +61,11 @@ fun AllActivityScreen(
7661
searchText = searchText,
7762
onSearchTextChange = { viewModel.setSearchText(it) },
7863
hasTagFilter = selectedTags.isNotEmpty(),
64+
selectedTags = selectedTags,
7965
hasDateRangeFilter = startDate != null,
8066
tabs = tabs,
8167
currentTabIndex = currentTabIndex,
68+
onRemoveTag = { viewModel.toggleTag(it) },
8269
onTabChange = { viewModel.setTab(tabs[it]) },
8370
onBackClick = onBack,
8471
onTagClick = { app.showSheet(Sheet.ActivityTagSelector) },
@@ -95,73 +82,50 @@ private fun AllActivityScreenContent(
9582
searchText: String,
9683
onSearchTextChange: (String) -> Unit,
9784
hasTagFilter: Boolean,
85+
selectedTags: Set<String>,
9886
hasDateRangeFilter: Boolean,
9987
tabs: List<ActivityTab>,
10088
currentTabIndex: Int,
89+
onRemoveTag: (String) -> Unit,
10190
onTabChange: (Int) -> Unit,
10291
onBackClick: () -> Unit,
10392
onTagClick: () -> Unit,
10493
onDateRangeClick: () -> Unit,
10594
onActivityItemClick: (String) -> Unit,
10695
onEmptyActivityRowClick: () -> Unit,
107-
hazeState: HazeState = rememberHazeState(),
10896
) {
109-
val density = LocalDensity.current
110-
var headerHeight by remember { mutableStateOf(120.dp) }
111-
Box(
112-
modifier = Modifier
113-
.fillMaxSize()
114-
.background(Colors.Black)
97+
Column(
98+
modifier = Modifier.screen()
11599
) {
116-
// Header
117-
val (gradientStart, gradientEnd) = Color(0xFF1e1e1e) to Color(0xFF161616)
118-
Column(
119-
modifier = Modifier
120-
.clip(RoundedCornerShape(bottomStart = 16.dp, bottomEnd = 16.dp))
121-
.background(Brush.horizontalGradient(listOf(gradientStart, gradientEnd)))
122-
.hazeEffect(
123-
state = hazeState,
124-
style = CupertinoMaterials.ultraThin(containerColor = gradientEnd)
125-
)
126-
.background(
127-
Brush.verticalGradient(
128-
colorStops = arrayOf(0f to gradientEnd, 0.5f to Color.Transparent)
129-
)
130-
)
131-
.background(Brush.horizontalGradient(listOf(Colors.White06, Color.Transparent)))
132-
.onGloballyPositioned { coords -> headerHeight = with(density) { coords.size.height.toDp() } }
133-
.zIndex(1f)
134-
) {
135-
AppTopBar(stringResource(R.string.wallet__activity_all), onBackClick)
136-
Column(
137-
modifier = Modifier.padding(horizontal = 16.dp)
138-
) {
139-
ActivityListFilter(
140-
searchText = searchText,
141-
onSearchTextChange = onSearchTextChange,
142-
hasTagFilter = hasTagFilter,
143-
hasDateRangeFilter = hasDateRangeFilter,
144-
onTagClick = onTagClick,
145-
onDateRangeClick = onDateRangeClick,
146-
tabs = tabs,
147-
currentTabIndex = currentTabIndex,
148-
onTabChange = { onTabChange(tabs.indexOf(it)) },
149-
)
150-
Spacer(modifier = Modifier.height(16.dp))
151-
}
152-
}
100+
AppTopBar(stringResource(R.string.wallet__activity_all), onBackClick)
101+
102+
ActivityListFilter(
103+
searchText = searchText,
104+
onSearchTextChange = onSearchTextChange,
105+
hasTagFilter = hasTagFilter,
106+
hasDateRangeFilter = hasDateRangeFilter,
107+
onTagClick = onTagClick,
108+
selectedTags = selectedTags,
109+
onRemoveTag = onRemoveTag,
110+
onDateRangeClick = onDateRangeClick,
111+
tabs = tabs,
112+
currentTabIndex = currentTabIndex,
113+
onTabChange = { onTabChange(tabs.indexOf(it)) },
114+
modifier = Modifier.padding(horizontal = 16.dp)
115+
116+
)
117+
Spacer(modifier = Modifier.height(16.dp))
118+
153119
// List
154120
Box(
155121
modifier = Modifier
156122
.fillMaxSize()
157-
.hazeSource(state = hazeState)
158-
.zIndex(0f)
159123
) {
160124
ActivityListGrouped(
161125
items = filteredActivities,
162126
onActivityItemClick = onActivityItemClick,
163127
onEmptyActivityRowClick = onEmptyActivityRowClick,
164-
contentPadding = PaddingValues(top = headerHeight + 20.dp),
128+
contentPadding = PaddingValues(top = 0.dp),
165129
modifier = Modifier
166130
.swipeToChangeTab(
167131
currentTabIndex = currentTabIndex,
@@ -208,15 +172,16 @@ private fun Preview() {
208172
searchText = "",
209173
onSearchTextChange = {},
210174
hasTagFilter = false,
175+
selectedTags = setOf(),
211176
hasDateRangeFilter = false,
212177
tabs = ActivityTab.entries,
213178
currentTabIndex = 0,
214-
hazeState = rememberHazeState(),
215179
onTabChange = {},
216180
onBackClick = {},
217181
onTagClick = {},
218182
onDateRangeClick = {},
219183
onActivityItemClick = {},
184+
onRemoveTag = {},
220185
onEmptyActivityRowClick = {},
221186
)
222187
}
@@ -231,14 +196,15 @@ private fun PreviewEmpty() {
231196
searchText = "",
232197
onSearchTextChange = {},
233198
hasTagFilter = false,
199+
selectedTags = setOf("tag1", "tag2"),
234200
hasDateRangeFilter = false,
235201
tabs = ActivityTab.entries,
236202
currentTabIndex = 0,
237-
hazeState = rememberHazeState(),
238203
onTabChange = {},
239204
onBackClick = {},
240205
onTagClick = {},
241206
onDateRangeClick = {},
207+
onRemoveTag = {},
242208
onActivityItemClick = {},
243209
onEmptyActivityRowClick = {},
244210
)

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

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package to.bitkit.ui.screens.wallets.activity
33
import androidx.compose.foundation.layout.Arrangement
44
import androidx.compose.foundation.layout.Column
55
import androidx.compose.foundation.layout.FlowRow
6-
import androidx.compose.foundation.layout.Row
76
import androidx.compose.foundation.layout.Spacer
87
import androidx.compose.foundation.layout.fillMaxWidth
98
import androidx.compose.foundation.layout.height
@@ -22,14 +21,14 @@ import to.bitkit.R
2221
import to.bitkit.ui.activityListViewModel
2322
import to.bitkit.ui.appViewModel
2423
import to.bitkit.ui.components.BottomSheetPreview
25-
import to.bitkit.ui.components.PrimaryButton
26-
import to.bitkit.ui.components.SecondaryButton
24+
import to.bitkit.ui.components.Caption13Up
2725
import to.bitkit.ui.components.SheetSize
2826
import to.bitkit.ui.components.TagButton
2927
import to.bitkit.ui.scaffold.SheetTopBar
3028
import to.bitkit.ui.shared.modifiers.sheetHeight
3129
import to.bitkit.ui.shared.util.gradientBackground
3230
import to.bitkit.ui.theme.AppThemeSurface
31+
import to.bitkit.ui.theme.Colors
3332

3433
@Composable
3534
fun TagSelectorSheet() {
@@ -41,12 +40,8 @@ fun TagSelectorSheet() {
4140
Content(
4241
availableTags = availableTags,
4342
selectedTags = selectedTags,
44-
onTagClick = { activity.toggleTag(it) },
45-
onClearClick = {
46-
activity.clearTags()
47-
app.hideSheet()
48-
},
49-
onApplyClick = {
43+
onTagClick = {
44+
activity.toggleTag(it)
5045
app.hideSheet()
5146
},
5247
)
@@ -57,8 +52,6 @@ private fun Content(
5752
availableTags: List<String>,
5853
selectedTags: Set<String>,
5954
onTagClick: (String) -> Unit = {},
60-
onClearClick: () -> Unit = {},
61-
onApplyClick: () -> Unit = {},
6255
) {
6356
Column(
6457
modifier = Modifier
@@ -70,6 +63,13 @@ private fun Content(
7063
) {
7164
SheetTopBar(stringResource(R.string.wallet__tags_filter_title))
7265

66+
Spacer(modifier = Modifier.height(42.dp))
67+
68+
Caption13Up(
69+
text = stringResource(R.string.wallet__tags_filter),
70+
color = Colors.White64,
71+
)
72+
7373
Spacer(modifier = Modifier.height(16.dp))
7474

7575
FlowRow(
@@ -89,24 +89,6 @@ private fun Content(
8989
}
9090

9191
Spacer(modifier = Modifier.weight(1f))
92-
Spacer(modifier = Modifier.height(16.dp))
93-
Row(
94-
horizontalArrangement = Arrangement.spacedBy(16.dp),
95-
modifier = Modifier
96-
.fillMaxWidth()
97-
) {
98-
SecondaryButton(
99-
onClick = onClearClick,
100-
text = stringResource(R.string.wallet__filter_clear),
101-
modifier = Modifier.weight(1f),
102-
)
103-
PrimaryButton(
104-
onClick = onApplyClick,
105-
text = stringResource(R.string.wallet__filter_apply),
106-
modifier = Modifier.weight(1f),
107-
)
108-
}
109-
Spacer(modifier = Modifier.height(16.dp))
11092
}
11193
}
11294

0 commit comments

Comments
 (0)