From d4c433a9260cdfcb20e89ac998217eff6754e944 Mon Sep 17 00:00:00 2001 From: bemusementpark Date: Tue, 2 Jul 2024 14:28:54 +0930 Subject: [PATCH] Fix shareFlow#tryEmit in pick display name --- .../onboarding/pickname/PickDisplayNameActivity.kt | 3 ++- .../onboarding/pickname/PickDisplayNameViewModel.kt | 12 +++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt index 11a16978e5..c727cfd111 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt @@ -8,6 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.session.libsession.utilities.TextSecurePreferences import org.thoughtcrime.securesms.ApplicationContext @@ -40,7 +41,7 @@ class PickDisplayNameActivity : BaseActionBarActivity() { setComposeContent { DisplayNameScreen(viewModel) } - lifecycleScope.launch { + lifecycleScope.launch(Dispatchers.Main) { viewModel.events.collect { when (it) { is Event.CreateAccount -> startMessageNotificationsActivity(it.profileName) diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt index 947a923202..7e59fb459a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt @@ -3,13 +3,16 @@ package org.thoughtcrime.securesms.onboarding.pickname import androidx.annotation.StringRes import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.viewModelScope import dagger.assisted.Assisted import dagger.assisted.AssistedInject +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch import network.loki.messenger.R import org.session.libsession.utilities.SSKEnvironment.ProfileManagerProtocol.Companion.NAME_PADDED_LENGTH import org.session.libsession.utilities.TextSecurePreferences @@ -39,14 +42,13 @@ internal class PickDisplayNameViewModel( // next screen. _states.update { it.copy(isTextErrorColor = false, error = null) } - when { - loadFailed -> { + viewModelScope.launch(Dispatchers.IO) { + if (loadFailed) { prefs.setProfileName(displayName) configFactory.user?.setName(displayName) - _events.tryEmit(Event.LoadAccountComplete) - } - else -> _events.tryEmit(Event.CreateAccount(displayName)) + _events.emit(Event.LoadAccountComplete) + } else _events.emit(Event.CreateAccount(displayName)) } } }