diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt index 3b6c7f9b71..a370c7c647 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/ChooseServerOperators.kt @@ -9,7 +9,6 @@ import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp @@ -18,7 +17,6 @@ import chat.simplex.common.model.ServerOperator import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.helpers.* -import chat.simplex.common.views.usersettings.changeNotificationsMode import chat.simplex.common.views.usersettings.networkAndServers.ConditionsTextView import chat.simplex.common.views.usersettings.networkAndServers.UsageConditionsView import chat.simplex.res.MR @@ -257,6 +255,14 @@ private fun AcceptConditionsButton( selectedOperatorIds: State>, close: () -> Unit ) { + fun continueOnAccept() { + if (appPlatform.isDesktop || !onboarding) { + if (onboarding) { close() } + continueToNextStep(onboarding, close) + } else { + continueToSetNotificationsAfterAccept() + } + } OnboardingActionButton( modifier = if (appPlatform.isAndroid) Modifier.padding(horizontal = DEFAULT_PADDING * 2).fillMaxWidth() else Modifier, labelId = MR.strings.accept_conditions, @@ -274,20 +280,10 @@ private fun AcceptConditionsButton( val r2 = chatController.setServerOperators(rh = chatModel.remoteHostId(), operators = enabledOperators) if (r2 != null) { chatModel.conditions.value = r2 - if (appPlatform.isDesktop || !onboarding) { - if (onboarding) { close() } - continueToNextStep(onboarding, close) - } else { - continueToSetNotificationsAfterAccept() - } + continueOnAccept() } } else { - if (appPlatform.isDesktop || !onboarding) { - if (onboarding) { close() } - continueToNextStep(onboarding, close) - } else { - continueToSetNotificationsAfterAccept() - } + continueOnAccept() } } } @@ -298,6 +294,9 @@ private fun AcceptConditionsButton( private fun continueToNextStep(onboarding: Boolean, close: () -> Unit) { if (onboarding) { appPrefs.onboardingStage.set(if (appPlatform.isAndroid) OnboardingStage.Step4_SetNotificationsMode else OnboardingStage.OnboardingComplete) + if (appPlatform.isDesktop) { + startChatIfNeeded() + } } else { close() } @@ -308,6 +307,10 @@ private fun continueToSetNotificationsAfterAccept() { ModalManager.fullscreen.showModalCloseable(showClose = false) { SetNotificationsMode(chatModel) } } +private fun startChatIfNeeded() { + prepareChatBeforeNotificationsSetup() +} + private fun enabledOperators(operators: List, selectedOperatorIds: Set): List? { val ops = ArrayList(operators) if (ops.isNotEmpty()) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt index 0f25f05d37..93fd85f488 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/SetNotificationsMode.kt @@ -16,8 +16,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.model.ChatModel import chat.simplex.common.model.NotificationsMode -import chat.simplex.common.platform.ColumnWithScrollBar -import chat.simplex.common.platform.appPlatform +import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.helpers.* import chat.simplex.common.views.usersettings.changeNotificationsMode @@ -26,7 +25,7 @@ import chat.simplex.res.MR @Composable fun SetNotificationsMode(m: ChatModel) { LaunchedEffect(Unit) { - prepareChatBeforeNotificationsSetup(m) + prepareChatBeforeNotificationsSetup() } CompositionLocalProvider(LocalAppBarHandler provides rememberAppBarHandler()) { @@ -100,7 +99,7 @@ fun SelectableCard(currentValue: State, newValue: T, title: String, descr Spacer(Modifier.height(14.dp)) } -private fun prepareChatBeforeNotificationsSetup(chatModel: ChatModel) { +fun prepareChatBeforeNotificationsSetup() { // No visible users but may have hidden. In this case chat should be started anyway because it's stopped on this stage with hidden users if (chatModel.users.any { u -> !u.user.hidden }) return withBGApi {