mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Centralize recipient lookup in RecipientRepository.
This commit is contained in:
committed by
Cody Henthorne
parent
2e1291b3c3
commit
0e46ab33e8
@@ -41,6 +41,7 @@ import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.calls.new.NewCallUiState.CallType
|
||||
import org.thoughtcrime.securesms.calls.new.NewCallUiState.UserMessage
|
||||
import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity
|
||||
import org.thoughtcrime.securesms.recipients.ui.RecipientLookupFailureMessage
|
||||
import org.thoughtcrime.securesms.recipients.ui.RecipientPicker
|
||||
import org.thoughtcrime.securesms.recipients.ui.RecipientPickerCallbacks
|
||||
import org.thoughtcrime.securesms.recipients.ui.RecipientPickerScaffold
|
||||
@@ -218,19 +219,14 @@ private fun UserMessagesHost(
|
||||
when (userMessage) {
|
||||
null -> {}
|
||||
|
||||
is UserMessage.Info.NetworkError -> Dialogs.SimpleMessageDialog(
|
||||
message = stringResource(R.string.NetworkFailure__network_error_check_your_connection_and_try_again),
|
||||
dismiss = stringResource(android.R.string.ok),
|
||||
onDismiss = { onDismiss(userMessage) }
|
||||
)
|
||||
is UserMessage.RecipientLookupFailed -> {
|
||||
RecipientLookupFailureMessage(
|
||||
failure = userMessage.failure,
|
||||
onDismissed = { onDismiss(userMessage) }
|
||||
)
|
||||
}
|
||||
|
||||
is UserMessage.Info.RecipientNotSignalUser -> Dialogs.SimpleMessageDialog(
|
||||
message = stringResource(R.string.NewConversationActivity__s_is_not_a_signal_user, userMessage.phone.displayText),
|
||||
dismiss = stringResource(android.R.string.ok),
|
||||
onDismiss = { onDismiss(userMessage) }
|
||||
)
|
||||
|
||||
is UserMessage.Info.UserAlreadyInAnotherCall -> LaunchedEffect(userMessage) {
|
||||
is UserMessage.UserAlreadyInAnotherCall -> LaunchedEffect(userMessage) {
|
||||
snackbarHostState.showSnackbar(
|
||||
message = context.getString(R.string.CommunicationActions__you_are_already_in_a_call)
|
||||
)
|
||||
|
||||
@@ -16,7 +16,7 @@ import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.thoughtcrime.securesms.calls.new.NewCallUiState.CallType
|
||||
import org.thoughtcrime.securesms.calls.new.NewCallUiState.UserMessage.Info
|
||||
import org.thoughtcrime.securesms.calls.new.NewCallUiState.UserMessage
|
||||
import org.thoughtcrime.securesms.contacts.sync.ContactDiscovery
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
@@ -65,33 +65,17 @@ class NewCallViewModel : ViewModel() {
|
||||
}
|
||||
internalUiState.update { it.copy(isLookingUpRecipient = true) }
|
||||
|
||||
val lookupResult = withContext(Dispatchers.IO) {
|
||||
RecipientRepository.lookupNewE164(inputE164 = phone.value)
|
||||
}
|
||||
|
||||
when (lookupResult) {
|
||||
is RecipientRepository.LookupResult.Success -> {
|
||||
val recipient = withContext(Dispatchers.IO) {
|
||||
Recipient.resolved(lookupResult.recipientId)
|
||||
}
|
||||
when (val lookupResult = RecipientRepository.lookup(phone)) {
|
||||
is RecipientRepository.PhoneLookupResult.Found -> {
|
||||
internalUiState.update { it.copy(isLookingUpRecipient = false) }
|
||||
openCall(recipient)
|
||||
openCall(recipient = lookupResult.recipient)
|
||||
}
|
||||
|
||||
is RecipientRepository.LookupResult.NotFound, is RecipientRepository.LookupResult.InvalidEntry -> {
|
||||
is RecipientRepository.LookupResult.Failure -> {
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
isLookingUpRecipient = false,
|
||||
userMessage = Info.RecipientNotSignalUser(phone)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
is RecipientRepository.LookupResult.NetworkError -> {
|
||||
internalUiState.update {
|
||||
it.copy(
|
||||
isLookingUpRecipient = false,
|
||||
userMessage = Info.NetworkError
|
||||
userMessage = UserMessage.RecipientLookupFailed(failure = lookupResult)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -120,7 +104,7 @@ class NewCallViewModel : ViewModel() {
|
||||
}
|
||||
|
||||
fun showUserAlreadyInACall() {
|
||||
internalUiState.update { it.copy(userMessage = Info.UserAlreadyInAnotherCall) }
|
||||
internalUiState.update { it.copy(userMessage = UserMessage.UserAlreadyInAnotherCall) }
|
||||
}
|
||||
|
||||
fun refresh() {
|
||||
@@ -153,11 +137,8 @@ data class NewCallUiState(
|
||||
val userMessage: UserMessage? = null
|
||||
) {
|
||||
sealed interface UserMessage {
|
||||
sealed interface Info : UserMessage {
|
||||
data class RecipientNotSignalUser(val phone: PhoneNumber) : Info
|
||||
data object UserAlreadyInAnotherCall : Info
|
||||
data object NetworkError : Info
|
||||
}
|
||||
data object UserAlreadyInAnotherCall : UserMessage
|
||||
data class RecipientLookupFailed(val failure: RecipientRepository.LookupResult.Failure) : UserMessage
|
||||
}
|
||||
|
||||
sealed interface CallType {
|
||||
|
||||
Reference in New Issue
Block a user