@@ -5,6 +5,7 @@ package com.softartdev.notedelight.ui.settings.master
55import androidx.compose.foundation.clickable
66import androidx.compose.foundation.layout.Column
77import androidx.compose.foundation.layout.PaddingValues
8+ import androidx.compose.foundation.layout.fillMaxWidth
89import androidx.compose.foundation.layout.padding
910import androidx.compose.foundation.rememberScrollState
1011import androidx.compose.foundation.verticalScroll
@@ -13,6 +14,7 @@ import androidx.compose.material.icons.automirrored.filled.ArrowBack
1314import androidx.compose.material3.ExperimentalMaterial3Api
1415import androidx.compose.material3.Icon
1516import androidx.compose.material3.IconButton
17+ import androidx.compose.material3.LinearProgressIndicator
1618import androidx.compose.material3.ListItem
1719import androidx.compose.material3.ListItemDefaults
1820import androidx.compose.material3.Scaffold
@@ -26,6 +28,7 @@ import androidx.compose.runtime.LaunchedEffect
2628import androidx.compose.runtime.State
2729import androidx.compose.runtime.collectAsState
2830import androidx.compose.runtime.derivedStateOf
31+ import androidx.compose.runtime.mutableStateOf
2932import androidx.compose.runtime.remember
3033import androidx.compose.ui.Modifier
3134import androidx.compose.ui.platform.testTag
@@ -61,16 +64,13 @@ fun SettingsMasterScreen(
6164 onSettingsCategoriesAction : (SettingsCategoriesAction ) -> Unit ,
6265) {
6366 val result: SettingsCategoriesResult = settingsCategoriesResultState.value
64- val refreshState: State <Boolean > = remember {
65- derivedStateOf { settingsCategoriesResultState.value.loading }
66- }
6767 SettingsMasterScreenBody (
6868 selectedCategoryId = result.selectedCategoryId,
6969 onCategoryClick = { category: SettingsCategory ->
7070 onSettingsCategoriesAction(SettingsCategoriesAction .SelectCategory (category))
7171 },
7272 onRefresh = { onSettingsCategoriesAction(SettingsCategoriesAction .Refresh ) },
73- refreshState = refreshState ,
73+ refreshState = remember { derivedStateOf { settingsCategoriesResultState.value.loading } } ,
7474 onNavigateBack = { onSettingsCategoriesAction(SettingsCategoriesAction .NavBack ) }
7575 )
7676 NavBackHandler (enabled = result.selectedCategoryId == null ) {
@@ -85,7 +85,7 @@ fun SettingsMasterScreenBody(
8585 onNavigateBack : () -> Unit = {},
8686 onRefresh : () -> Unit = {},
8787 pullToRefreshState : PullToRefreshState = rememberPullToRefreshState(),
88- refreshState : State <Boolean > = remember { derivedStateOf { false } },
88+ refreshState : State <Boolean > = remember { mutableStateOf( false) },
8989) = Scaffold (
9090 topBar = {
9191 TopAppBar (
@@ -110,9 +110,8 @@ fun SettingsMasterScreenBody(
110110 LaunchedEffect (key1 = refreshState.value) {
111111 pullToRefreshState.animateToHidden()
112112 }
113- Column (
114- modifier = Modifier .verticalScroll(rememberScrollState())
115- ) {
113+ Column (modifier = Modifier .verticalScroll(rememberScrollState())) {
114+ if (refreshState.value) LinearProgressIndicator (Modifier .fillMaxWidth())
116115 SettingsCategory .entries.forEach { category: SettingsCategory ->
117116 SettingsCategoryItem (
118117 category = category,
@@ -142,7 +141,5 @@ private fun SettingsCategoryItem(
142141@Preview
143142@Composable
144143fun PreviewSettingsMasterScreen () = PreferableMaterialTheme {
145- SettingsMasterScreenBody (
146- selectedCategoryId = SettingsCategory .Security .id,
147- )
144+ SettingsMasterScreenBody (selectedCategoryId = SettingsCategory .Security .id)
148145}
0 commit comments