@@ -5,13 +5,20 @@ import androidx.compose.foundation.Image
55import androidx.compose.foundation.background
66import androidx.compose.foundation.layout.Box
77import androidx.compose.foundation.layout.fillMaxSize
8+ import androidx.compose.foundation.layout.padding
9+ import androidx.compose.material3.LinearProgressIndicator
810import androidx.compose.material3.MaterialTheme
911import androidx.compose.runtime.Composable
1012import androidx.compose.runtime.DisposableEffect
1113import androidx.compose.runtime.State
1214import androidx.compose.runtime.collectAsState
15+ import androidx.compose.runtime.getValue
16+ import androidx.compose.runtime.mutableStateOf
17+ import androidx.compose.runtime.remember
18+ import androidx.compose.runtime.setValue
1319import androidx.compose.ui.Alignment
1420import androidx.compose.ui.Modifier
21+ import androidx.compose.ui.unit.dp
1522import com.softartdev.notedelight.MR
1623import com.softartdev.notedelight.shared.presentation.splash.SplashResult
1724import com.softartdev.notedelight.shared.presentation.splash.SplashViewModel
@@ -26,31 +33,37 @@ fun SplashScreen(splashViewModel: SplashViewModel, navSignIn: () -> Unit, navMai
2633 splashViewModel.checkEncryption()
2734 onDispose(splashViewModel::onCleared)
2835 }
36+ var showError: Boolean by remember { mutableStateOf(false ) }
2937 when (val splashResult: SplashResult = splashResultState.value) {
30- is SplashResult .Loading -> Unit // TODO: progress bar
38+ is SplashResult .Loading -> {
39+ showError = true
40+ }
3141 is SplashResult .NavSignIn -> navSignIn()
3242 is SplashResult .NavMain -> navMain()
3343 is SplashResult .ShowError -> themePrefs.dialogHolder.showError(splashResult.message)
3444 }
35- SplashScreenBody ()
45+ SplashScreenBody (showError )
3646}
3747
3848@Composable
39- fun SplashScreenBody () = Box (
49+ fun SplashScreenBody (showError : Boolean = false ) = Box (
4050 modifier = Modifier
4151 .fillMaxSize()
4252 .background(color = MaterialTheme .colorScheme.background)
4353) {
4454 Image (
55+ modifier = Modifier .align(Alignment .Center ),
4556 painter = painterResource(MR .images.app_icon),
46- contentDescription = null ,
57+ contentDescription = null
58+ )
59+ if (showError) LinearProgressIndicator (
4760 modifier = Modifier
48- .align(Alignment .Center )
49- .background(color = MaterialTheme .colorScheme.background )
61+ .align(Alignment .BottomCenter )
62+ .padding(bottom = 32 .dp )
5063 )
5164 themePrefs.showDialogIfNeed()
5265}
5366
5467@Preview
5568@Composable
56- fun PreviewSplashScreen () = SplashScreenBody ()
69+ fun PreviewSplashScreen () = SplashScreenBody (true )
0 commit comments