From dac3a332d7ac2afbd05eb28da513bc61b23d341e Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 23 Apr 2025 14:19:36 -0300 Subject: [PATCH] Remove main-thread usage of Recipient.self. --- .../org/thoughtcrime/securesms/main/MainToolbar.kt | 2 +- .../securesms/main/MainToolbarViewModel.kt | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt index ab077e8eec..b6f85565bb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbar.kt @@ -129,7 +129,7 @@ enum class MainToolbarMode { data class MainToolbarState( val toolbarColor: Color? = null, - val self: Recipient = Recipient.self(), + val self: Recipient = Recipient.UNKNOWN, val mode: MainToolbarMode = MainToolbarMode.FULL, val destination: MainNavigationListLocation = MainNavigationListLocation.CHATS, val chatFilter: ConversationFilter = ConversationFilter.OFF, diff --git a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt index fcf3ae175d..ef5ee7c3d6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/main/MainToolbarViewModel.kt @@ -18,6 +18,8 @@ import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.rx3.asFlowable +import kotlinx.coroutines.withContext +import org.signal.core.util.concurrent.SignalDispatchers import org.thoughtcrime.securesms.backup.v2.BackupRepository import org.thoughtcrime.securesms.calls.log.CallLogFilter import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter @@ -31,9 +33,18 @@ class MainToolbarViewModel : ViewModel() { val state: StateFlow = internalStateFlow fun refresh() { + viewModelScope.launch { + val self = withContext(SignalDispatchers.IO) { + Recipient.self().resolve() + } + + internalStateFlow.update { + it.copy(self = self) + } + } + internalStateFlow.update { it.copy( - self = Recipient.self(), hasFailedBackups = BackupRepository.shouldDisplayBackupFailedIndicator() || BackupRepository.shouldDisplayBackupAlreadyRedeemedIndicator(), hasPassphrase = !SignalStore.settings.passphraseDisabled )