feat: implement first run tracking; update PreferencesManager to manage first run state and integrate with MainApp
This commit is contained in:
+4
@@ -16,6 +16,9 @@ class PreferencesManager(
|
||||
private val _serverUrl = MutableStateFlow(getServerUrl())
|
||||
val serverUrl: StateFlow<String> = _serverUrl.asStateFlow()
|
||||
|
||||
private val _isFirstRun = MutableStateFlow(isFirstRun())
|
||||
val isFirstRunFlow: StateFlow<Boolean> = _isFirstRun.asStateFlow()
|
||||
|
||||
private val _themeMode = MutableStateFlow(getThemeMode())
|
||||
val themeMode: StateFlow<String> = _themeMode.asStateFlow()
|
||||
|
||||
@@ -64,6 +67,7 @@ class PreferencesManager(
|
||||
|
||||
fun setIsFirstRun(isFirstRun: Boolean) {
|
||||
prefs.edit().putBoolean(KEY_FIRST_RUN, isFirstRun).apply()
|
||||
_isFirstRun.value = isFirstRun
|
||||
}
|
||||
|
||||
fun getServerPassword(): String? = prefs.getString(KEY_SERVER_PASSWORD, null)
|
||||
|
||||
@@ -16,6 +16,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
@@ -47,9 +48,10 @@ private object Routes {
|
||||
fun MainApp() {
|
||||
val context = LocalContext.current
|
||||
val prefs = remember { PreferencesManager.getInstance(context) }
|
||||
val isFirstRun by prefs.isFirstRunFlow.collectAsState()
|
||||
|
||||
// Show setup flow until completed; then show main app with bottom nav
|
||||
if (prefs.isFirstRun()) {
|
||||
if (isFirstRun) {
|
||||
val navController = rememberNavController()
|
||||
NavHost(navController, startDestination = Routes.SETUP) {
|
||||
composable(Routes.SETUP) {
|
||||
|
||||
Reference in New Issue
Block a user