From 67252e7756ba110f52d7895f4a68a1783e73bdac Mon Sep 17 00:00:00 2001 From: manuroe Date: Fri, 13 Sep 2019 11:27:35 +0200 Subject: [PATCH 1/5] SettingsVC: Fix crash --- Riot/Modules/Settings/SettingsViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index dd1b9775a..8ffd26d18 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -3856,7 +3856,7 @@ SettingsDiscoveryTableViewSectionDelegate, SettingsDiscoveryViewModelCoordinator } else { - [NSBundle mxk_localizedStringForKey:@"auth_email_is_required"]; + message = [NSBundle mxk_localizedStringForKey:@"auth_email_is_required"]; } failure([NSError errorWithDomain:MXKAuthErrorDomain From 5553bfb82604165bf5512eaad2d717a38a6937e2 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 16 Sep 2019 18:01:12 +0200 Subject: [PATCH 2/5] Privacy: If there is no IS, we cannot list local contacts using matrix #2672 --- Riot/Assets/en.lproj/Vector.strings | 1 + Riot/Generated/Strings.swift | 4 ++++ .../Contacts/DataSources/ContactsDataSource.m | 12 ++++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 2faf8de15..84461d849 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -199,6 +199,7 @@ // Contacts "contacts_address_book_section" = "LOCAL CONTACTS"; "contacts_address_book_matrix_users_toggle" = "Matrix users only"; +"contacts_address_book_no_identity_server" = "No identity server configured"; "contacts_address_book_no_contact" = "No local contacts"; "contacts_address_book_permission_required" = "Permission required to access local contacts"; "contacts_address_book_permission_denied" = "You didn't allow Riot to access your local contacts"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 4d06611fb..6eeda655b 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -426,6 +426,10 @@ internal enum VectorL10n { internal static var contactsAddressBookNoContact: String { return VectorL10n.tr("Vector", "contacts_address_book_no_contact") } + /// No identity server configured + internal static var contactsAddressBookNoIdentityServer: String { + return VectorL10n.tr("Vector", "contacts_address_book_no_identity_server") + } /// You didn't allow Riot to access your local contacts internal static var contactsAddressBookPermissionDenied: String { return VectorL10n.tr("Vector", "contacts_address_book_permission_denied") diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index fc396cbef..dbe2ea826 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -622,8 +622,16 @@ switch ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]) { case CNAuthorizationStatusAuthorized: - // Because there is no contacts on the device - tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_no_contact", @"Vector", nil); + if (hideNonMatrixEnabledContacts && !self.mxSession.identityService) + { + // Because we cannot make lookups with no IS + tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_no_identity_server", @"Vector", nil); + } + else + { + // Because there is no contacts on the device + tableViewCell.textLabel.text = NSLocalizedStringFromTable(@"contacts_address_book_no_contact", @"Vector", nil); + } break; case CNAuthorizationStatusNotDetermined: From c80e4b6a4d5afffd618e2a289f7acd8ffa96aeb6 Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 17 Sep 2019 10:06:10 +0200 Subject: [PATCH 3/5] Privacy: If there is no IS, we cannot invite people by email #2672 Display a message for MXRestClientErrorMissingIdentityServer errors --- Riot/Assets/en.lproj/Vector.strings | 4 ++++ Riot/Generated/Strings.swift | 4 ++++ .../Room/Members/RoomParticipantsViewController.m | 12 +++++++++++- Riot/Modules/Room/RoomViewController.m | 12 ++++++++++-- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 84461d849..988174db6 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -984,3 +984,7 @@ // MARK: Reaction history "reaction_history_title" = "Reactions"; + + +// Generic errors +"error_no_identity_server" = "Add an identity server in your settings to invite by email."; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 6eeda655b..261a6821f 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -994,6 +994,10 @@ internal enum VectorL10n { internal static var encryptedRoomMessageReplyToPlaceholder: String { return VectorL10n.tr("Vector", "encrypted_room_message_reply_to_placeholder") } + /// Add an identity server in your settings to invite by email. + internal static var errorNoIdentityServer: String { + return VectorL10n.tr("Vector", "error_no_identity_server") + } /// VoIP conference added by %@ internal static func eventFormatterJitsiWidgetAdded(_ p1: String) -> String { return VectorL10n.tr("Vector", "event_formatter_jitsi_widget_added", p1) diff --git a/Riot/Modules/Room/Members/RoomParticipantsViewController.m b/Riot/Modules/Room/Members/RoomParticipantsViewController.m index dfb55b6fc..8e4132a84 100644 --- a/Riot/Modules/Room/Members/RoomParticipantsViewController.m +++ b/Riot/Modules/Room/Members/RoomParticipantsViewController.m @@ -1646,8 +1646,18 @@ [self removePendingActionMask]; NSLog(@"[RoomParticipantsVC] Invite be email %@ failed", participantId); + // Alert user - [[AppDelegate theDelegate] showErrorAsAlert:error]; + if ([error.domain isEqualToString:kMXRestClientErrorDomain] + && error.code == MXRestClientErrorMissingIdentityServer) + { + NSString *message = [NSBundle mxk_localizedStringForKey:@"error_no_identity_server"]; + [[AppDelegate theDelegate] showAlertWithTitle:message message:nil]; + } + else + { + [[AppDelegate theDelegate] showErrorAsAlert:error]; + } }]; } else //if ([MXTools isMatrixUserIdentifier:participantId]) diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 46327a0e8..226b69600 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -5008,8 +5008,16 @@ NSLog(@"[RoomVC] Invite be email %@ failed", participantId); // Alert user - [[AppDelegate theDelegate] showErrorAsAlert:error]; - + if ([error.domain isEqualToString:kMXRestClientErrorDomain] + && error.code == MXRestClientErrorMissingIdentityServer) + { + NSString *message = [NSBundle mxk_localizedStringForKey:@"error_no_identity_server"]; + [[AppDelegate theDelegate] showAlertWithTitle:message message:nil]; + } + else + { + [[AppDelegate theDelegate] showErrorAsAlert:error]; + } }]; } else //if ([MXTools isMatrixUserIdentifier:participantId]) From 95175c960a29049a069a37a6f4a4bcec673e9001 Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 17 Sep 2019 10:37:57 +0200 Subject: [PATCH 4/5] Settings: Fix missing stopActivityIndicator --- Riot/Modules/Settings/SettingsViewController.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 8ffd26d18..4de0e63c7 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -3723,6 +3723,8 @@ SettingsDiscoveryTableViewSectionDelegate, SettingsDiscoveryViewModelCoordinator }]; } failure:^(NSError *error) { + [self stopActivityIndicator]; + // Notify user NSString *myUserId = session.myUser.userId; // TODO: Hanlde multi-account [[NSNotificationCenter defaultCenter] postNotificationName:kMXKErrorNotification object:error userInfo:myUserId ? @{kMXKErrorUserIdKey: myUserId} : nil]; From 1c1825f8562fd676cbea64f481841d774f8684a7 Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 17 Sep 2019 10:56:46 +0200 Subject: [PATCH 5/5] i18n: improve naming: error_no_identity_server -> error_invite_3pid_with_no_identity_server --- Riot/Assets/en.lproj/Vector.strings | 2 +- Riot/Generated/Strings.swift | 4 ++-- Riot/Modules/Room/Members/RoomParticipantsViewController.m | 2 +- Riot/Modules/Room/RoomViewController.m | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 988174db6..890408ecf 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -987,4 +987,4 @@ // Generic errors -"error_no_identity_server" = "Add an identity server in your settings to invite by email."; +"error_invite_3pid_with_no_identity_server" = "Add an identity server in your settings to invite by email."; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 261a6821f..ddba8359e 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -995,8 +995,8 @@ internal enum VectorL10n { return VectorL10n.tr("Vector", "encrypted_room_message_reply_to_placeholder") } /// Add an identity server in your settings to invite by email. - internal static var errorNoIdentityServer: String { - return VectorL10n.tr("Vector", "error_no_identity_server") + internal static var errorInvite3pidWithNoIdentityServer: String { + return VectorL10n.tr("Vector", "error_invite_3pid_with_no_identity_server") } /// VoIP conference added by %@ internal static func eventFormatterJitsiWidgetAdded(_ p1: String) -> String { diff --git a/Riot/Modules/Room/Members/RoomParticipantsViewController.m b/Riot/Modules/Room/Members/RoomParticipantsViewController.m index 8e4132a84..84b9836e0 100644 --- a/Riot/Modules/Room/Members/RoomParticipantsViewController.m +++ b/Riot/Modules/Room/Members/RoomParticipantsViewController.m @@ -1651,7 +1651,7 @@ if ([error.domain isEqualToString:kMXRestClientErrorDomain] && error.code == MXRestClientErrorMissingIdentityServer) { - NSString *message = [NSBundle mxk_localizedStringForKey:@"error_no_identity_server"]; + NSString *message = [NSBundle mxk_localizedStringForKey:@"error_invite_3pid_with_no_identity_server"]; [[AppDelegate theDelegate] showAlertWithTitle:message message:nil]; } else diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 226b69600..8b00b3441 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -5011,7 +5011,7 @@ if ([error.domain isEqualToString:kMXRestClientErrorDomain] && error.code == MXRestClientErrorMissingIdentityServer) { - NSString *message = [NSBundle mxk_localizedStringForKey:@"error_no_identity_server"]; + NSString *message = [NSBundle mxk_localizedStringForKey:@"error_invite_3pid_with_no_identity_server"]; [[AppDelegate theDelegate] showAlertWithTitle:message message:nil]; } else