@@ -15,6 +15,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
1515import androidx.compose.foundation.layout.height
1616import androidx.compose.foundation.layout.padding
1717import androidx.compose.foundation.layout.systemBarsPadding
18+ import androidx.compose.foundation.rememberScrollState
19+ import androidx.compose.foundation.verticalScroll
1820import androidx.compose.material.ExperimentalMaterialApi
1921import androidx.compose.material.pullrefresh.PullRefreshIndicator
2022import androidx.compose.material.pullrefresh.pullRefresh
@@ -27,7 +29,6 @@ import androidx.compose.runtime.derivedStateOf
2729import androidx.compose.runtime.getValue
2830import androidx.compose.runtime.mutableStateOf
2931import androidx.compose.runtime.remember
30- import androidx.compose.runtime.rememberCoroutineScope
3132import androidx.compose.runtime.setValue
3233import androidx.compose.ui.Alignment
3334import androidx.compose.ui.Modifier
@@ -40,8 +41,6 @@ import androidx.navigation.NavController
4041import androidx.navigation.compose.NavHost
4142import androidx.navigation.compose.composable
4243import androidx.navigation.compose.rememberNavController
43- import kotlinx.coroutines.delay
44- import kotlinx.coroutines.launch
4544import kotlinx.serialization.Serializable
4645import to.bitkit.R
4746import to.bitkit.ext.requiresPermission
@@ -72,6 +71,7 @@ import to.bitkit.ui.utils.screenSlideIn
7271import to.bitkit.ui.utils.screenSlideOut
7372import to.bitkit.ui.utils.withAccent
7473import to.bitkit.viewmodels.AppViewModel
74+ import to.bitkit.viewmodels.MainUiState
7575import to.bitkit.viewmodels.WalletViewModel
7676
7777@Composable
@@ -80,7 +80,7 @@ fun HomeScreen(
8080 appViewModel : AppViewModel ,
8181 rootNavController : NavController ,
8282) {
83- val uiState by walletViewModel.uiState.collectAsState()
83+ val uiState: MainUiState by walletViewModel.uiState.collectAsState()
8484 val currentSheet by appViewModel.currentSheet
8585 SheetHost (
8686 shouldExpand = currentSheet != null ,
@@ -110,13 +110,14 @@ fun HomeScreen(
110110 val walletNavController = rememberNavController()
111111 NavHost (
112112 navController = walletNavController,
113- startDestination = HomeRoutes .Home
113+ startDestination = HomeRoutes .Home ,
114114 ) {
115115 composable<HomeRoutes .Home > {
116116 HomeContentView (
117+ uiState = uiState,
117118 rootNavController = rootNavController,
118119 walletNavController = walletNavController,
119- onRefresh = walletViewModel::refreshState ,
120+ onRefresh = walletViewModel::onPullToRefresh ,
120121 )
121122 }
122123 composable<HomeRoutes .Savings >(
@@ -172,14 +173,14 @@ fun HomeScreen(
172173@OptIn(ExperimentalMaterialApi ::class )
173174@Composable
174175private fun HomeContentView (
176+ uiState : MainUiState ,
175177 rootNavController : NavController ,
176178 walletNavController : NavController ,
177179 onRefresh : () -> Unit ,
178180) {
179181 AppScaffold (
180182 navController = rootNavController,
181183 titleText = " Your Name" ,
182- onRefresh = onRefresh,
183184 ) {
184185 RequestNotificationPermissions ()
185186 val balances = LocalBalances .current
@@ -190,22 +191,7 @@ private fun HomeContentView(
190191 showEmptyStateSetting && balances.totalSats == 0uL
191192 }
192193 }
193-
194- val scope = rememberCoroutineScope()
195- var isRefreshing by remember { mutableStateOf(false ) }
196-
197- fun refresh () = scope.launch {
198- // TODO use viewmodel state?!
199- isRefreshing = true
200- onRefresh()
201- delay(1500 )
202- isRefreshing = false
203- }
204-
205- val pullRefreshState = rememberPullRefreshState(
206- refreshing = isRefreshing,
207- onRefresh = ::refresh
208- )
194+ val pullRefreshState = rememberPullRefreshState(refreshing = uiState.isRefreshing, onRefresh = onRefresh)
209195
210196 Box (
211197 modifier = Modifier
@@ -216,6 +202,7 @@ private fun HomeContentView(
216202 modifier = Modifier
217203 .padding(horizontal = 16 .dp)
218204 .fillMaxSize()
205+ .verticalScroll(rememberScrollState())
219206 ) {
220207 BalanceHeaderView (sats = balances.totalSats.toLong(), modifier = Modifier .fillMaxWidth())
221208 if (! showEmptyState) {
@@ -266,7 +253,7 @@ private fun HomeContentView(
266253 }
267254
268255 PullRefreshIndicator (
269- refreshing = isRefreshing,
256+ refreshing = uiState. isRefreshing,
270257 state = pullRefreshState,
271258 modifier = Modifier .align(Alignment .TopCenter )
272259 )
@@ -310,6 +297,7 @@ object HomeRoutes {
310297private fun HomeContentViewPreview () {
311298 AppThemeSurface {
312299 HomeContentView (
300+ uiState = MainUiState (),
313301 rootNavController = rememberNavController(),
314302 walletNavController = rememberNavController(),
315303 onRefresh = {},
0 commit comments