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