Fix invite flow.

pull/1/head
Matthew Chen 8 years ago
parent d754228fd6
commit 63b545b34d

@ -47,6 +47,10 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
} }
} }
deinit {
Logger.verbose("[InviteFlow] deinit")
}
// MARK: Twitter // MARK: Twitter
func canTweet() -> Bool { func canTweet() -> Bool {
@ -88,17 +92,16 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
func contactsPicker(_: ContactsPicker, didSelectMultipleContacts contacts: [Contact]) { func contactsPicker(_: ContactsPicker, didSelectMultipleContacts contacts: [Contact]) {
Logger.debug("\(TAG) didSelectContacts:\(contacts)") Logger.debug("\(TAG) didSelectContacts:\(contacts)")
self.presentingViewController.dismiss(animated: true)
guard let inviteChannel = channel else { guard let inviteChannel = channel else {
Logger.error("\(TAG) unexpected nil channel after returning from contact picker.") Logger.error("\(TAG) unexpected nil channel after returning from contact picker.")
self.presentingViewController.dismiss(animated: true)
return return
} }
switch inviteChannel { switch inviteChannel {
case .message: case .message:
let phoneNumbers: [String] = contacts.map { $0.userTextPhoneNumbers.first }.filter { $0 != nil }.map { $0! } let phoneNumbers: [String] = contacts.map { $0.userTextPhoneNumbers.first }.filter { $0 != nil }.map { $0! }
dismissAndSendSMSTo(phoneNumbers: phoneNumbers) sendSMSTo(phoneNumbers: phoneNumbers)
case .mail: case .mail:
let recipients: [String] = contacts.map { $0.emails.first }.filter { $0 != nil }.map { $0! } let recipients: [String] = contacts.map { $0.emails.first }.filter { $0 != nil }.map { $0! }
sendMailTo(emails: recipients) sendMailTo(emails: recipients)
@ -159,12 +162,6 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
} }
} }
public func dismissAndSendSMSTo(phoneNumbers: [String]) {
self.presentingViewController.dismiss(animated: true) {
self.sendSMSTo(phoneNumbers: phoneNumbers)
}
}
public func sendSMSTo(phoneNumbers: [String]) { public func sendSMSTo(phoneNumbers: [String]) {
if #available(iOS 10.0, *) { if #available(iOS 10.0, *) {
// iOS10 message compose view doesn't respect some system appearence attributes. // iOS10 message compose view doesn't respect some system appearence attributes.
@ -180,7 +177,9 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
let inviteText = NSLocalizedString("SMS_INVITE_BODY", comment: "body sent to contacts when inviting to Install Signal") let inviteText = NSLocalizedString("SMS_INVITE_BODY", comment: "body sent to contacts when inviting to Install Signal")
messageComposeViewController.body = inviteText.appending(" \(self.installUrl)") messageComposeViewController.body = inviteText.appending(" \(self.installUrl)")
self.presentingViewController.navigationController?.present(messageComposeViewController, animated: true) self.presentingViewController.dismiss(animated: true) {
self.presentingViewController.present(messageComposeViewController, animated: true)
}
} }
// MARK: MessageComposeViewControllerDelegate // MARK: MessageComposeViewControllerDelegate
@ -188,17 +187,17 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
// Revert system styling applied to make messaging app legible on iOS10. // Revert system styling applied to make messaging app legible on iOS10.
UIUtil.applySignalAppearence() UIUtil.applySignalAppearence()
self.presentingViewController.dismiss(animated: true, completion: nil) self.presentingViewController.dismiss(animated: true) {
switch result {
switch result { case .failed:
case .failed: let warning = UIAlertController(title: nil, message: NSLocalizedString("SEND_INVITE_FAILURE", comment: "Alert body after invite failed"), preferredStyle: .alert)
let warning = UIAlertController(title: nil, message: NSLocalizedString("SEND_INVITE_FAILURE", comment: "Alert body after invite failed"), preferredStyle: .alert) warning.addAction(UIAlertAction(title: CommonStrings.dismissButton, style: .default, handler: nil))
warning.addAction(UIAlertAction(title: CommonStrings.dismissButton, style: .default, handler: nil)) self.presentingViewController.present(warning, animated: true, completion: nil)
self.presentingViewController.present(warning, animated: true, completion: nil) case .sent:
case .sent: Logger.debug("\(self.TAG) user successfully invited their friends via SMS.")
Logger.debug("\(self.TAG) user successfully invited their friends via SMS.") case .cancelled:
case .cancelled: Logger.debug("\(self.TAG) user cancelled message invite")
Logger.debug("\(self.TAG) user cancelled message invite") }
} }
} }
@ -226,7 +225,6 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
func sendMailTo(emails recipientEmails: [String]) { func sendMailTo(emails recipientEmails: [String]) {
let mailComposeViewController = MFMailComposeViewController() let mailComposeViewController = MFMailComposeViewController()
mailComposeViewController.mailComposeDelegate = self mailComposeViewController.mailComposeDelegate = self
mailComposeViewController.setBccRecipients(recipientEmails) mailComposeViewController.setBccRecipients(recipientEmails)
let subject = NSLocalizedString("EMAIL_INVITE_SUBJECT", comment: "subject of email sent to contacts when inviting to install Signal") let subject = NSLocalizedString("EMAIL_INVITE_SUBJECT", comment: "subject of email sent to contacts when inviting to install Signal")
@ -236,28 +234,26 @@ class InviteFlow: NSObject, MFMessageComposeViewControllerDelegate, MFMailCompos
mailComposeViewController.setMessageBody(body, isHTML: false) mailComposeViewController.setMessageBody(body, isHTML: false)
self.presentingViewController.dismiss(animated: true) { self.presentingViewController.dismiss(animated: true) {
self.presentingViewController.navigationController?.present(mailComposeViewController, animated: true) { self.presentingViewController.present(mailComposeViewController, animated: true)
UIUtil.applySignalAppearence()
}
} }
} }
// MARK: MailComposeViewControllerDelegate // MARK: MailComposeViewControllerDelegate
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
self.presentingViewController.dismiss(animated: true, completion: nil) self.presentingViewController.dismiss(animated: true) {
switch result {
switch result { case .failed:
case .failed: let warning = UIAlertController(title: nil, message: NSLocalizedString("SEND_INVITE_FAILURE", comment: "Alert body after invite failed"), preferredStyle: .alert)
let warning = UIAlertController(title: nil, message: NSLocalizedString("SEND_INVITE_FAILURE", comment: "Alert body after invite failed"), preferredStyle: .alert) warning.addAction(UIAlertAction(title: CommonStrings.dismissButton, style: .default, handler: nil))
warning.addAction(UIAlertAction(title: CommonStrings.dismissButton, style: .default, handler: nil)) self.presentingViewController.present(warning, animated: true, completion: nil)
self.presentingViewController.present(warning, animated: true, completion: nil) case .sent:
case .sent: Logger.debug("\(self.TAG) user successfully invited their friends via mail.")
Logger.debug("\(self.TAG) user successfully invited their friends via mail.") case .saved:
case .saved: Logger.debug("\(self.TAG) user saved mail invite.")
Logger.debug("\(self.TAG) user saved mail invite.") case .cancelled:
case .cancelled: Logger.debug("\(self.TAG) user cancelled mail invite.")
Logger.debug("\(self.TAG) user cancelled mail invite.") }
} }
} }

Loading…
Cancel
Save