diff --git a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt index 2a6d7587bc..73d8ffe1ef 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt @@ -68,8 +68,15 @@ class SimplexApp: Application(), LifecycleEventObserver { withApi { val user = chatController.apiGetActiveUser() if (user == null) { + chatModel.controller.appPrefs.onboardingStage.set(OnboardingStage.Step1_SimpleXInfo) chatModel.onboardingStage.value = OnboardingStage.Step1_SimpleXInfo } else { + val savedOnboardingStage = appPreferences.onboardingStage.get() + chatModel.onboardingStage.value = if (listOf(OnboardingStage.Step1_SimpleXInfo, OnboardingStage.Step2_CreateProfile).contains(savedOnboardingStage) && chatModel.users.size == 1) { + OnboardingStage.Step3_CreateSimpleXAddress + } else { + savedOnboardingStage + } chatController.startChat(user) chatController.showBackgroundServiceNoticeIfNeeded() if (appPreferences.notificationsMode.get() == NotificationsMode.SERVICE.name) diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index 8603652ac2..0b719b4b7d 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -141,6 +141,7 @@ class AppPreferences(val context: Context) { val showMuteProfileAlert = mkBoolPreference(SHARED_PREFS_SHOW_MUTE_PROFILE_ALERT, true) val appLanguage = mkStrPreference(SHARED_PREFS_APP_LANGUAGE, null) + val onboardingStage = mkEnumPreference(SHARED_PREFS_ONBOARDING_STAGE, OnboardingStage.OnboardingComplete) { OnboardingStage.values().firstOrNull { it.name == this } } val storeDBPassphrase = mkBoolPreference(SHARED_PREFS_STORE_DB_PASSPHRASE, true) val initialRandomDBPassphrase = mkBoolPreference(SHARED_PREFS_INITIAL_RANDOM_DB_PASSPHRASE, false) val encryptedDBPassphrase = mkStrPreference(SHARED_PREFS_ENCRYPTED_DB_PASSPHRASE, null) @@ -246,6 +247,7 @@ class AppPreferences(val context: Context) { private const val SHARED_PREFS_CHAT_ARCHIVE_NAME = "ChatArchiveName" private const val SHARED_PREFS_CHAT_ARCHIVE_TIME = "ChatArchiveTime" private const val SHARED_PREFS_APP_LANGUAGE = "AppLanguage" + private const val SHARED_PREFS_ONBOARDING_STAGE = "OnboardingStage" private const val SHARED_PREFS_CHAT_LAST_START = "ChatLastStart" private const val SHARED_PREFS_DEVELOPER_TOOLS = "DeveloperTools" private const val SHARED_PREFS_NETWORK_USE_SOCKS_PROXY = "NetworkUseSocksProxy" @@ -326,7 +328,6 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a chatModel.userCreated.value = true apiSetIncognito(chatModel.incognito.value) getUserChatData() - chatModel.onboardingStage.value = OnboardingStage.OnboardingComplete chatModel.controller.appPrefs.chatLastStart.set(Clock.System.now()) chatModel.chatRunning.value = true startReceiver() diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt index e82e11d641..36a593f6fc 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/WelcomeView.kt @@ -125,6 +125,7 @@ fun createProfile(chatModel: ChatModel, displayName: String, fullName: String, c chatModel.currentUser.value = user if (chatModel.users.isEmpty()) { chatModel.controller.startChat(user) + chatModel.controller.appPrefs.onboardingStage.set(OnboardingStage.Step3_CreateSimpleXAddress) chatModel.onboardingStage.value = OnboardingStage.Step3_CreateSimpleXAddress SimplexApp.context.chatModel.controller.ntfManager.createNtfChannelsMaybeShowAlert() } else { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/CreateSimpleXAddress.kt b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/CreateSimpleXAddress.kt index 41a180494e..60dcb04838 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/CreateSimpleXAddress.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/CreateSimpleXAddress.kt @@ -14,8 +14,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import chat.simplex.app.* import chat.simplex.app.R -import chat.simplex.app.TAG import chat.simplex.app.model.ChatModel import chat.simplex.app.model.UserContactLinkRec import chat.simplex.app.ui.theme.* @@ -57,6 +57,7 @@ fun CreateSimpleXAddress(m: ChatModel) { } }, nextStep = { + m.controller.appPrefs.onboardingStage.set(OnboardingStage.Step4_SetNotificationsMode) m.onboardingStage.value = OnboardingStage.Step4_SetNotificationsMode }, ) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt index 0efcdcdc90..8f48d7ac0b 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/onboarding/SimpleXInfo.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.* import chat.simplex.app.R +import chat.simplex.app.SimplexApp import chat.simplex.app.model.ChatModel import chat.simplex.app.model.User import chat.simplex.app.ui.theme.* @@ -130,6 +131,9 @@ fun OnboardingActionButton( SimpleButtonFrame(click = { onclick?.invoke() onboardingStage.value = onboarding + if (onboarding != null) { + SimplexApp.context.chatModel.controller.appPrefs.onboardingStage.set(onboarding) + } }, modifier) { Text(stringResource(labelId), style = MaterialTheme.typography.h2, color = MaterialTheme.colors.primary, fontSize = 20.sp) Icon(