11package to.bitkit.ui.screens.wallets.activity
22
33import androidx.activity.compose.BackHandler
4- import androidx.compose.foundation.background
54import androidx.compose.foundation.gestures.detectHorizontalDragGestures
65import androidx.compose.foundation.layout.Box
76import androidx.compose.foundation.layout.Column
@@ -10,35 +9,21 @@ import androidx.compose.foundation.layout.Spacer
109import androidx.compose.foundation.layout.fillMaxSize
1110import androidx.compose.foundation.layout.height
1211import androidx.compose.foundation.layout.padding
13- import androidx.compose.foundation.shape.RoundedCornerShape
1412import androidx.compose.material3.ExperimentalMaterial3Api
1513import androidx.compose.runtime.Composable
1614import androidx.compose.runtime.getValue
17- import androidx.compose.runtime.mutableStateOf
1815import androidx.compose.runtime.remember
19- import androidx.compose.runtime.setValue
2016import androidx.compose.ui.Modifier
2117import 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
2518import androidx.compose.ui.input.pointer.pointerInput
2619import androidx.compose.ui.input.pointer.util.VelocityTracker
27- import androidx.compose.ui.layout.onGloballyPositioned
28- import androidx.compose.ui.platform.LocalDensity
2920import androidx.compose.ui.platform.testTag
3021import androidx.compose.ui.res.stringResource
3122import androidx.compose.ui.tooling.preview.Preview
3223import androidx.compose.ui.unit.dp
33- import androidx.compose.ui.zIndex
3424import androidx.lifecycle.compose.collectAsStateWithLifecycle
3525import 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
4026import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
41- import dev.chrisbanes.haze.rememberHazeState
4227import to.bitkit.R
4328import to.bitkit.ui.appViewModel
4429import to.bitkit.ui.components.Sheet
@@ -47,8 +32,8 @@ import to.bitkit.ui.screens.wallets.activity.components.ActivityListFilter
4732import to.bitkit.ui.screens.wallets.activity.components.ActivityListGrouped
4833import to.bitkit.ui.screens.wallets.activity.components.ActivityTab
4934import to.bitkit.ui.screens.wallets.activity.utils.previewActivityItems
35+ import to.bitkit.ui.shared.util.screen
5036import to.bitkit.ui.theme.AppThemeSurface
51- import to.bitkit.ui.theme.Colors
5237import 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 )
0 commit comments