Skip to content

Commit 71d78d0

Browse files
committed
show progress indicator on splash screen
1 parent c685cb1 commit 71d78d0

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

  • android-compose-app/src/main/java/com/softartdev/notedelight
  • shared-compose-ui/src/commonMain/kotlin/com/softartdev/notedelight/ui

android-compose-app/src/main/java/com/softartdev/notedelight/MainPreview.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fun PreviewSignInScreenLight() = PreferableMaterialTheme { SignInScreenBody() }
2323

2424
@Preview(showBackground = true, showSystemUi = true)
2525
@Composable
26-
fun PreviewSplashScreenLight() = PreferableMaterialTheme { SplashScreenBody() }
26+
fun PreviewSplashScreenLight() = PreferableMaterialTheme { SplashScreenBody(true) }
2727

2828
@Preview(showBackground = true, showSystemUi = true, uiMode = UI_MODE_NIGHT_YES)
2929
@Composable
@@ -39,4 +39,4 @@ fun PreviewSignInScreenDark() = PreferableMaterialTheme { SignInScreenBody() }
3939

4040
@Preview(showBackground = true, showSystemUi = true, uiMode = UI_MODE_NIGHT_YES)
4141
@Composable
42-
fun PreviewSplashScreenDark() = PreferableMaterialTheme { SplashScreenBody() }
42+
fun PreviewSplashScreenDark() = PreferableMaterialTheme { SplashScreenBody(true) }

shared-compose-ui/src/commonMain/kotlin/com/softartdev/notedelight/ui/SplashScreen.kt

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,20 @@ import androidx.compose.foundation.Image
55
import androidx.compose.foundation.background
66
import androidx.compose.foundation.layout.Box
77
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.foundation.layout.padding
9+
import androidx.compose.material3.LinearProgressIndicator
810
import androidx.compose.material3.MaterialTheme
911
import androidx.compose.runtime.Composable
1012
import androidx.compose.runtime.DisposableEffect
1113
import androidx.compose.runtime.State
1214
import 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
1319
import androidx.compose.ui.Alignment
1420
import androidx.compose.ui.Modifier
21+
import androidx.compose.ui.unit.dp
1522
import com.softartdev.notedelight.MR
1623
import com.softartdev.notedelight.shared.presentation.splash.SplashResult
1724
import 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

Comments
 (0)