Update error text for unregistered users

This commit is contained in:
Max Radermacher 2025-03-28 17:10:25 -05:00 committed by GitHub
parent ab0ad79fbe
commit fffa977337
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 23 additions and 12 deletions

View File

@ -2735,7 +2735,7 @@
"ERROR_DESCRIPTION_UNKNOWN_ERROR" = "An unknown error occurred.";
/* Error message when attempting to send message */
"ERROR_DESCRIPTION_UNREGISTERED_RECIPIENT" = "Contact is not a Signal user.";
"ERROR_DESCRIPTION_UNREGISTERED_RECIPIENT" = "Couldnt send message because this person is no longer using Signal.";
/* Error message indicating that attachment upload(s) failed. */
"ERROR_MESSAGE_ATTACHMENT_UPLOAD_FAILED" = "Attachment upload failed.";
@ -6167,7 +6167,7 @@
"RECIPIENT_PICKER_INVALID_NUMBER_TITLE" = "Invalid Phone Number";
/* Button. Shown after selecting a phone number that isn't a Signal user. Tapping the button will open a view that allows the user to send an SMS message to specified phone number. */
"RECIPIENT_PICKER_INVITE_ACTION" = "Message";
"RECIPIENT_PICKER_INVITE_ACTION" = "Invite";
/* Alert text. Shown after selecting a phone number that isn't a Signal user. */
"RECIPIENT_PICKER_INVITE_MESSAGE" = "%1$@ is not a Signal user. Would you like to invite this number?";

View File

@ -33,7 +33,11 @@ class SignalDotMePhoneNumberLink {
let signalRecipients = try await SSKEnvironment.shared.contactDiscoveryManagerRef.lookUp(phoneNumbers: [phoneNumber], mode: .oneOffUserRequest)
modal.dismissIfNotCanceled {
guard let recipient = signalRecipients.first else {
return OWSActionSheets.showErrorAlert(message: MessageSenderNoSuchSignalRecipientError().userErrorDescription)
RecipientPickerViewController.presentSMSInvitationSheet(
for: phoneNumber,
fromViewController: fromViewController
)
return
}
block(recipient.address)
}

View File

@ -231,10 +231,12 @@ public class FindByPhoneNumberViewController: OWSTableViewController2 {
let recipients = try await SSKEnvironment.shared.contactDiscoveryManagerRef.lookUp(phoneNumbers: [phoneNumber], mode: .oneOffUserRequest)
modal.dismissIfNotCanceled {
guard let recipient = recipients.first else {
return OWSActionSheets.showErrorAlert(
message: MessageSenderNoSuchSignalRecipientError().userErrorDescription,
RecipientPickerViewController.presentSMSInvitationSheet(
for: phoneNumber,
fromViewController: self,
dismissalDelegate: self
)
return
}
self.findByPhoneNumberDelegate?.findByPhoneNumber(self, didSelectAddress: recipient.address)
}

View File

@ -1328,7 +1328,7 @@ extension RecipientPickerViewController {
case (.`default`, .notFound(validE164: let validE164)):
// Otherwise, if we're trying to contact someone, offer to invite them.
presentSMSInvitationSheet(for: validE164)
Self.presentSMSInvitationSheet(for: validE164, fromViewController: self)
case (_, .notValid(invalidE164: let invalidE164)):
// If the number isn't valid, show an error so the user can fix it.
@ -1336,7 +1336,11 @@ extension RecipientPickerViewController {
}
}
private func presentSMSInvitationSheet(for phoneNumber: String) {
public static func presentSMSInvitationSheet(
for phoneNumber: String,
fromViewController viewController: UIViewController,
dismissalDelegate: (any SheetDismissalDelegate)? = nil
) {
let actionSheet = ActionSheetController(
title: OWSLocalizedString(
"RECIPIENT_PICKER_INVITE_TITLE",
@ -1357,17 +1361,18 @@ extension RecipientPickerViewController {
comment: "Button. Shown after selecting a phone number that isn't a Signal user. Tapping the button will open a view that allows the user to send an SMS message to specified phone number."
),
style: .default,
handler: { [weak self] action in
guard let self = self else { return }
handler: { [weak viewController] action in
guard let viewController else { return }
guard MFMessageComposeViewController.canSendText() else {
OWSActionSheets.showErrorAlert(message: InviteFlow.unsupportedFeatureMessage)
OWSActionSheets.showErrorAlert(message: InviteFlow.unsupportedFeatureMessage, fromViewController: viewController)
return
}
let inviteFlow = InviteFlow(presentingViewController: self)
let inviteFlow = InviteFlow(presentingViewController: viewController)
inviteFlow.sendSMSTo(phoneNumbers: [phoneNumber])
}
))
presentActionSheet(actionSheet)
actionSheet.dismissalDelegate = dismissalDelegate
viewController.presentActionSheet(actionSheet)
}
private func presentInvalidNumberSheet(for phoneNumber: String) {