From cf2b5cd329a1f2075e39dfccb9ab43c15d841056 Mon Sep 17 00:00:00 2001 From: Doug Date: Thu, 15 Jul 2021 18:23:36 +0100 Subject: [PATCH 01/87] Drop use of deprecated currentUserNotificationSettings property in favour of UNUserNotificationCenter. --- Riot/Modules/Settings/SettingsViewController.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index a6dad221f..a3afaec1c 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2790,10 +2790,19 @@ TableViewSectionsDelegate> } - (void)togglePushNotifications:(id)sender +{ + // Get the user's notification settings to check check authorization status. + [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self togglePushNotifications:sender withNotificationSettings:settings]; + }); + }]; +} + +- (void)togglePushNotifications:(id)sender withNotificationSettings:(UNNotificationSettings * _Nonnull)settings { // Check first whether the user allow notification from device settings - UIUserNotificationType currentUserNotificationTypes = UIApplication.sharedApplication.currentUserNotificationSettings.types; - if (currentUserNotificationTypes == UIUserNotificationTypeNone) + if (settings.authorizationStatus == UNAuthorizationStatusDenied) { [currentAlert dismissViewControllerAnimated:NO completion:nil]; From 4bd9b33c7e824d74afcd90234381967ec097bd00 Mon Sep 17 00:00:00 2001 From: Doug Date: Thu, 15 Jul 2021 18:24:02 +0100 Subject: [PATCH 02/87] Typo. --- 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 a3afaec1c..63e8e5a33 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2791,7 +2791,7 @@ TableViewSectionsDelegate> - (void)togglePushNotifications:(id)sender { - // Get the user's notification settings to check check authorization status. + // Get the user's notification settings to check their authorization status. [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { dispatch_async(dispatch_get_main_queue(), ^{ [self togglePushNotifications:sender withNotificationSettings:settings]; From 3ec89b467cbdfd3bcdc96f349206250a1dd7206e Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Fri, 23 Jul 2021 15:27:06 +0200 Subject: [PATCH 03/87] Add a script to initialize quickly and easily the project. --- setup_project.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 setup_project.sh diff --git a/setup_project.sh b/setup_project.sh new file mode 100755 index 000000000..dff61b7f2 --- /dev/null +++ b/setup_project.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# Use this script to setup the Xcode project + +# Remove existing project file if any +rm -r Riot.xcodeproj + +# Generate project file +xcodegen + +# Use appropriated dependencies + +# Check if Podfile changed in unstaged +git diff --exit-code --quiet --name-only Podfile +PODFILE_HAS_CHANGED_UNSTAGED=$? +# Check if Podfile changed in staged +git diff --staged --exit-code --quiet --name-only Podfile +PODFILE_HAS_CHANGED_STAGED=$? + +# If Podfile has changed locally do not modify it +# otherwise use the appropriated dependencies according to the current branch +if [[ "$PODFILE_HAS_CHANGED_UNSTAGED" -eq 1 || "$PODFILE_HAS_CHANGED_STAGED" -eq 1 ]]; then + echo "Podfile has been changed locally do not modify it" +else + echo "Podfile has not been changed locally, use appropriated dependencies according to the current branch" + bundle exec fastlane point_dependencies_to_same_feature +fi + +# Install dependencies +pod install From 4a1ac9b1b3e031363d3f0a948b9f7b2c7bf0328e Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Fri, 23 Jul 2021 15:30:50 +0200 Subject: [PATCH 04/87] setup_project.sh: Update comments. --- setup_project.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup_project.sh b/setup_project.sh index dff61b7f2..1da8aedb9 100755 --- a/setup_project.sh +++ b/setup_project.sh @@ -5,7 +5,7 @@ # Remove existing project file if any rm -r Riot.xcodeproj -# Generate project file +# Create the xcodeproj with all project source files xcodegen # Use appropriated dependencies @@ -26,5 +26,5 @@ else bundle exec fastlane point_dependencies_to_same_feature fi -# Install dependencies +# Create the xcworkspace with all project dependencies pod install From 704c457221c275900041dc35cabc4e33febf0af4 Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Fri, 23 Jul 2021 15:30:56 +0200 Subject: [PATCH 05/87] Update changes --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index e0140c153..6f976ca2e 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -8,6 +8,7 @@ Changes to be released in next version * Room: Added support for Voice Messages (#4090, #4091, #4092, #4094, #4095, #4096) * Remove the directory section from the Rooms tab. * Notifications: Show decrypted content is enabled by default (#4519). + * Tools: Add a script to initialize quickly and easily the project. 🐛 Bugfix * Room: Fixed mentioning users from room info member details (#4583) From 71e6b1e905c09a517303022b7fd803ea1e1ffd55 Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Fri, 23 Jul 2021 15:34:22 +0200 Subject: [PATCH 06/87] Update Readme --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 31edf7a51..7c9b7b5ed 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,7 @@ You can try last beta build by accessing our [TestFlight Public Link](https://te If you have already everything installed, opening the project workspace in Xcode should be as easy as: ``` -$ xcodegen # Create the xcodeproj with all project source files -$ pod install # Create the xcworkspace with all project dependencies +$ ./setup_project.sh # Local script that creates the xcodeproj and xcworkspace with all source files and dependencies $ open Riot.xcworkspace # Open Xcode ``` From a358e87cb5f7732ea3407d23b6ba83ee507d156d Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 27 Jul 2021 17:15:43 +0100 Subject: [PATCH 07/87] Fix compile error. --- 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 9b8251cf0..747b261c3 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2812,7 +2812,7 @@ TableViewSectionsDelegate> }]; } -- (void)togglePushNotifications:(id)sender withNotificationSettings:(UNNotificationSettings * _Nonnull)settings +- (void)togglePushNotifications:(UISwitch *)sender withNotificationSettings:(UNNotificationSettings * _Nonnull)settings { // Check first whether the user allow notification from device settings if (settings.authorizationStatus == UNAuthorizationStatusDenied) From ce2f7999858bd3a22dc2deb29527b4e71a618c64 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 27 Jul 2021 17:31:22 +0100 Subject: [PATCH 08/87] Cherry-pick ceb5a35 and 949d3d9 as an additional option, rather than replacing the toggle. --- .../Modules/Settings/SettingsViewController.m | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 747b261c3..ea0332be6 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -89,6 +89,7 @@ enum enum { NOTIFICATION_SETTINGS_ENABLE_PUSH_INDEX = 0, + NOTIFICATION_SETTINGS_SYSTEM_SETTINGS, NOTIFICATION_SETTINGS_SHOW_DECODED_CONTENT, NOTIFICATION_SETTINGS_GLOBAL_SETTINGS_INDEX, NOTIFICATION_SETTINGS_PIN_MISSED_NOTIFICATIONS_INDEX, @@ -351,6 +352,7 @@ TableViewSectionsDelegate> Section *sectionNotificationSettings = [Section sectionWithTag:SECTION_TAG_NOTIFICATIONS]; [sectionNotificationSettings addRowWithTag:NOTIFICATION_SETTINGS_ENABLE_PUSH_INDEX]; + [sectionNotificationSettings addRowWithTag:NOTIFICATION_SETTINGS_SYSTEM_SETTINGS]; if (RiotSettings.shared.settingsScreenShowNotificationDecodedContentOption) { [sectionNotificationSettings addRowWithTag:NOTIFICATION_SETTINGS_SHOW_DECODED_CONTENT]; @@ -1798,6 +1800,22 @@ TableViewSectionsDelegate> cell = labelAndSwitchCell; } + else if (row == NOTIFICATION_SETTINGS_SYSTEM_SETTINGS) + { + cell = [tableView dequeueReusableCellWithIdentifier:kSettingsViewControllerPhoneBookCountryCellId]; + if (!cell) + { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kSettingsViewControllerPhoneBookCountryCellId]; + } + + cell.textLabel.textColor = ThemeService.shared.theme.textPrimaryColor; + + cell.textLabel.text = NSLocalizedStringFromTable(@"settings_enable_push_notif", @"Vector", nil); + cell.detailTextLabel.text = @""; + + [cell vc_setAccessoryDisclosureIndicatorWithCurrentTheme]; + cell.selectionStyle = UITableViewCellSelectionStyleDefault; + } else if (row == NOTIFICATION_SETTINGS_SHOW_DECODED_CONTENT) { MXKTableViewCellWithLabelAndSwitch* labelAndSwitchCell = [self getLabelAndSwitchCell:tableView forIndexPath:indexPath]; @@ -2501,6 +2519,10 @@ TableViewSectionsDelegate> UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; [self showInviteFriendsFromSourceView:selectedCell]; } + else if (section == SECTION_TAG_NOTIFICATIONS && row == NOTIFICATION_SETTINGS_SYSTEM_SETTINGS) + { + [self openSystemSettingsApp]; + } else if (section == SECTION_TAG_DISCOVERY) { [self.settingsDiscoveryTableViewSection selectRow:row]; @@ -2880,6 +2902,12 @@ TableViewSectionsDelegate> } } +- (void)openSystemSettingsApp +{ + NSURL *settingsAppURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + [[UIApplication sharedApplication] openURL:settingsAppURL options:@{} completionHandler:nil]; +} + - (void)toggleCallKit:(UISwitch *)sender { [MXKAppSettings standardAppSettings].enableCallKit = sender.isOn; From 3ac01ddc69b4104faa80257d698d0fbccb7af054 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 27 Jul 2021 17:38:40 +0100 Subject: [PATCH 09/87] Update string. --- Riot/Assets/en.lproj/Vector.strings | 1 + Riot/Generated/Strings.swift | 4 ++++ Riot/Modules/Settings/SettingsViewController.m | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 80c55d989..aabfb8ead 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -492,6 +492,7 @@ Tap the + to start adding people."; "settings_security" = "SECURITY"; "settings_enable_push_notif" = "Notifications on this device"; +"settings_device_notifications" = "Device notifications"; "settings_show_decrypted_content" = "Show decrypted content"; "settings_global_settings_info" = "Global notification settings are available on your %@ web client"; "settings_pin_rooms_with_missed_notif" = "Pin rooms with missed notifications"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 3de870902..76dfc1fde 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -4114,6 +4114,10 @@ internal enum VectorL10n { internal static var settingsDeactivateMyAccount: String { return VectorL10n.tr("Vector", "settings_deactivate_my_account") } + /// Device notifications + internal static var settingsDeviceNotifications: String { + return VectorL10n.tr("Vector", "settings_device_notifications") + } /// SESSIONS internal static var settingsDevices: String { return VectorL10n.tr("Vector", "settings_devices") diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index ea0332be6..4f306d217 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -1810,7 +1810,7 @@ TableViewSectionsDelegate> cell.textLabel.textColor = ThemeService.shared.theme.textPrimaryColor; - cell.textLabel.text = NSLocalizedStringFromTable(@"settings_enable_push_notif", @"Vector", nil); + cell.textLabel.text = NSLocalizedStringFromTable(@"settings_device_notifications", @"Vector", nil); cell.detailTextLabel.text = @""; [cell vc_setAccessoryDisclosureIndicatorWithCurrentTheme]; From 973f16c4e0f99d1d8ec04733bd9c1a73c5cbaa0b Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 28 Jul 2021 11:38:49 +0100 Subject: [PATCH 10/87] Turn the toggle off if notifications were denied. --- .../Modules/Settings/SettingsViewController.m | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 4f306d217..eda70d0c8 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -236,6 +236,11 @@ TableViewSectionsDelegate> */ @property (nonatomic) BOOL newPhoneEditingEnabled; +/** + The current `UNUserNotificationCenter` notification settings for the app. + */ +@property (nonatomic) UNNotificationSettings *systemNotificationSettings; + @property (nonatomic, weak) DeactivateAccountViewController *deactivateAccountViewController; @property (nonatomic, strong) SignOutAlertPresenter *signOutAlertPresenter; @property (nonatomic, weak) UIButton *signOutButton; @@ -1233,6 +1238,27 @@ TableViewSectionsDelegate> [self editNewPhoneNumberTextField]; keepNewPhoneNumberEditing = NO; } + + // Update notification access + [self refreshSystemNotificationSettings]; +} + +- (void)refreshSystemNotificationSettings +{ + __weak typeof(self) weakSelf = self; + + // Get the system notification settings to check authorization status and configuration. + [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { + dispatch_async(dispatch_get_main_queue(), ^{ + if (weakSelf) + { + typeof(self) self = weakSelf; + + self.systemNotificationSettings = settings; + [self.tableView reloadData]; + } + }); + }]; } - (void)formatNewPhoneNumber @@ -1793,11 +1819,20 @@ TableViewSectionsDelegate> MXKTableViewCellWithLabelAndSwitch* labelAndSwitchCell = [self getLabelAndSwitchCell:tableView forIndexPath:indexPath]; labelAndSwitchCell.mxkLabel.text = NSLocalizedStringFromTable(@"settings_enable_push_notif", @"Vector", nil); - labelAndSwitchCell.mxkSwitch.on = account.pushNotificationServiceIsActive; labelAndSwitchCell.mxkSwitch.onTintColor = ThemeService.shared.theme.tintColor; labelAndSwitchCell.mxkSwitch.enabled = YES; [labelAndSwitchCell.mxkSwitch addTarget:self action:@selector(togglePushNotifications:) forControlEvents:UIControlEventTouchUpInside]; + BOOL isPushEnabled = account.pushNotificationServiceIsActive; + + // Even if push is enabled for the account, the user may have turned off notifications in system settings + if (isPushEnabled && self.systemNotificationSettings) + { + isPushEnabled = self.systemNotificationSettings.authorizationStatus == UNAuthorizationStatusAuthorized; + } + + labelAndSwitchCell.mxkSwitch.on = isPushEnabled; + cell = labelAndSwitchCell; } else if (row == NOTIFICATION_SETTINGS_SYSTEM_SETTINGS) @@ -2826,18 +2861,8 @@ TableViewSectionsDelegate> - (void)togglePushNotifications:(UISwitch *)sender { - // Get the user's notification settings to check their authorization status. - [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self togglePushNotifications:sender withNotificationSettings:settings]; - }); - }]; -} - -- (void)togglePushNotifications:(UISwitch *)sender withNotificationSettings:(UNNotificationSettings * _Nonnull)settings -{ - // Check first whether the user allow notification from device settings - if (settings.authorizationStatus == UNAuthorizationStatusDenied) + // Check first whether the user allow notification from system settings + if (self.systemNotificationSettings.authorizationStatus == UNAuthorizationStatusDenied) { [currentAlert dismissViewControllerAnimated:NO completion:nil]; From 9692a8fcabd88ee6f68a2d93744a94dfe196188b Mon Sep 17 00:00:00 2001 From: Doug Date: Wed, 28 Jul 2021 12:45:06 +0100 Subject: [PATCH 11/87] Update notifications disabled alert. --- Riot/Assets/bg.lproj/Vector.strings | 1 - Riot/Assets/ca.lproj/Vector.strings | 1 - Riot/Assets/cy.lproj/Vector.strings | 1 - Riot/Assets/de.lproj/Vector.strings | 1 - Riot/Assets/en.lproj/Vector.strings | 3 ++- Riot/Assets/eo.lproj/Vector.strings | 1 - Riot/Assets/es.lproj/Vector.strings | 1 - Riot/Assets/et.lproj/Vector.strings | 1 - Riot/Assets/eu.lproj/Vector.strings | 1 - Riot/Assets/fr.lproj/Vector.strings | 1 - Riot/Assets/hu.lproj/Vector.strings | 1 - Riot/Assets/is.lproj/Vector.strings | 1 - Riot/Assets/it.lproj/Vector.strings | 1 - Riot/Assets/ja.lproj/Vector.strings | 1 - Riot/Assets/kab.lproj/Vector.strings | 1 - Riot/Assets/nb-NO.lproj/Vector.strings | 1 - Riot/Assets/nl.lproj/Vector.strings | 1 - Riot/Assets/pl.lproj/Vector.strings | 1 - Riot/Assets/pt_BR.lproj/Vector.strings | 1 - Riot/Assets/ru.lproj/Vector.strings | 1 - Riot/Assets/sq.lproj/Vector.strings | 1 - Riot/Assets/sv.lproj/Vector.strings | 1 - Riot/Assets/vi.lproj/Vector.strings | 1 - Riot/Assets/zh_Hans.lproj/Vector.strings | 1 - Riot/Assets/zh_Hant.lproj/Vector.strings | 1 - Riot/Generated/Strings.swift | 12 ++++++--- .../Modules/Settings/SettingsViewController.m | 26 +++++++++++++++---- 27 files changed, 31 insertions(+), 34 deletions(-) diff --git a/Riot/Assets/bg.lproj/Vector.strings b/Riot/Assets/bg.lproj/Vector.strings index 04a669524..854c51242 100644 --- a/Riot/Assets/bg.lproj/Vector.strings +++ b/Riot/Assets/bg.lproj/Vector.strings @@ -298,7 +298,6 @@ "settings_global_settings_info" = "Глобални настройки на известия са налични на Вашия %@ уеб клиент"; "settings_pin_rooms_with_missed_notif" = "Закачане на стаи с пропуснати известия"; "settings_pin_rooms_with_unread" = "Закачане на стаи с непрочетени съобщения"; -"settings_on_denied_notification" = "Известията са отказани за %@. Моля, включете ги в настройките на устройството"; "settings_enable_callkit" = "Интегрирани разговори"; "settings_callkit_info" = "Получаване на входящи повиквания при заключен екран. Показване на Element разговори в историята на системата. Ако iCloud е включен, историята на разговорите се споделя с Apple."; "settings_ui_language" = "Език"; diff --git a/Riot/Assets/ca.lproj/Vector.strings b/Riot/Assets/ca.lproj/Vector.strings index 75c7c7fe2..d690d7efe 100644 --- a/Riot/Assets/ca.lproj/Vector.strings +++ b/Riot/Assets/ca.lproj/Vector.strings @@ -295,7 +295,6 @@ "settings_global_settings_info" = "Els paràmetres de notificació globals estan disponibles al teu client web %@"; "settings_pin_rooms_with_missed_notif" = "Fixa sales amb notificacions pendents"; "settings_pin_rooms_with_unread" = "Fixa sales amb missatges pendents"; -"settings_on_denied_notification" = "%@ no permet notificacions, si us plau activa-les en els ajustos del teu dispositiu"; "settings_enable_callkit" = "Trucades integrades"; "settings_callkit_info" = "Rep les trucades entrants a la pantalla de bloqueig. Consulta les trucades de Element a l'historial de trucades del sistema. Si està habilitat iCloud, aquest historial de trucades es compartirà amb Apple."; "settings_ui_language" = "Llenguatge"; diff --git a/Riot/Assets/cy.lproj/Vector.strings b/Riot/Assets/cy.lproj/Vector.strings index 868341391..36b72d7b5 100644 --- a/Riot/Assets/cy.lproj/Vector.strings +++ b/Riot/Assets/cy.lproj/Vector.strings @@ -373,7 +373,6 @@ "settings_global_settings_info" = "Mae gosodiadau hysbysu eang ar gael ar eich cleient %@ gwe"; "settings_pin_rooms_with_missed_notif" = "Pinio ystafelloedd gyda hysbysiadau heb eu gweld"; "settings_pin_rooms_with_unread" = "Pinio ystafelloedd gyda negeseuon heb eu darllen"; -"settings_on_denied_notification" = "Gwrthodir hysbysiadau i %@, caniatewch nhw yn eich gosodiadau dyfais"; "settings_enable_callkit" = "Galw integredig"; "settings_callkit_info" = "Derbyn galwadau sy'n dod i mewn ar eich sgrin clo. Gwelwch eich galwadau Element yn hanes galwadau'r system. Os yw iCloud wedi'i alluogi, bydd yr hanes galw hwn yn cael ei rannu gydag Apple."; "settings_calls_stun_server_fallback_button" = "Caniatáu gweinydd cymorth galw wrth gefn"; diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index df37ce7c2..32aabeaf5 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -316,7 +316,6 @@ "settings_global_settings_info" = "Globale Benachrichtigungseinstellungen sind auf deinem %@ web-Client verfügbar"; "settings_pin_rooms_with_missed_notif" = "Pinnen von Räumen mit verpassten Benachrichtigungen"; "settings_pin_rooms_with_unread" = "Pinnen von Räumen mit ungelesenen Nachrichten"; -"settings_on_denied_notification" = "Benachrichtigungen verboten für %@, bitte in den Geräte-Einstellungen erlauben"; "settings_contacts_discover_matrix_users" = "Entdecke andere Benutzer mittels E-Mail-Adressen oder Telefonnummern"; "settings_labs_e2e_encryption_prompt_message" = "Zum Fertigstellen der Verschlüsselung bitte neu anmelden."; "settings_third_party_notices" = "Anmerkungen von Dritten"; diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index aabfb8ead..ee302e5c7 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -497,7 +497,8 @@ Tap the + to start adding people."; "settings_global_settings_info" = "Global notification settings are available on your %@ web client"; "settings_pin_rooms_with_missed_notif" = "Pin rooms with missed notifications"; "settings_pin_rooms_with_unread" = "Pin rooms with unread messages"; -"settings_on_denied_notification" = "Notifications are denied for %@, please allow them in your device settings"; +"settings_notifications_disabled_alert_title" = "Notifications disabled"; +"settings_notifications_disabled_alert_message" = "To enable notifications, go to your device settings."; //"settings_enable_all_notif" = "Enable all notifications"; //"settings_messages_my_display_name" = "Msg containing my display name"; //"settings_messages_my_user_name" = "Msg containing my user name"; diff --git a/Riot/Assets/eo.lproj/Vector.strings b/Riot/Assets/eo.lproj/Vector.strings index bf7636ecb..5fb7c6707 100644 --- a/Riot/Assets/eo.lproj/Vector.strings +++ b/Riot/Assets/eo.lproj/Vector.strings @@ -975,7 +975,6 @@ "settings_calls_stun_server_fallback_description" = "Permesi repaŝan servilon %@ asistan je vokoj, kiam la hejmservilo ne provizas servilon (via IP-adreso ne doniĝus dum voko)."; "settings_calls_stun_server_fallback_button" = "Permesi repaŝan servilon asistan je vokoj"; "settings_callkit_info" = "Ricevi vokpetojn ĉe via ŝlosa ekrano. Vidi viajn vokojn de Element ĉe la sistema vokhistorio. Se iCloud estas ŝaltita, la vokhistorio doniĝas ankaŭ al Apple."; -"settings_on_denied_notification" = "Sciigo por %s estas malŝaltitaj, bonvole permesu ilin per la agordoj de via aparato"; "settings_pin_rooms_with_unread" = "Alpingli ĉambrojn kun nelegitaj mesaĝoj"; "settings_pin_rooms_with_missed_notif" = "Alpinigli ĉambrojn kun nerimarkitaj sciigoj"; "settings_show_decrypted_content" = "Montri malĉifritajn enhavojn"; diff --git a/Riot/Assets/es.lproj/Vector.strings b/Riot/Assets/es.lproj/Vector.strings index 216722a92..bcb6247d5 100644 --- a/Riot/Assets/es.lproj/Vector.strings +++ b/Riot/Assets/es.lproj/Vector.strings @@ -321,7 +321,6 @@ "settings_global_settings_info" = "Los ajustes de notificación globales están disponibles en tu cliente web %@"; "settings_pin_rooms_with_missed_notif" = "Fijar salas con notificaciones pendientes"; "settings_pin_rooms_with_unread" = "Fijar salas con mensajes no leídos"; -"settings_on_denied_notification" = "Las notificaciones están denegadas para %@, por favor habilita notificaciones en los ajustes de tu dispositivo"; "settings_enable_callkit" = "Integración de llamadas"; "settings_callkit_info" = "Recibe llamadas entrantes en tu pantalla de bloqueo. Ve tus llamadas de Element en el historial de llamadas del sistema. Si iCloud está habilitado, este historial de llamadas se compartirá con Apple."; "settings_ui_language" = "Idioma"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 4844bde61..b1a08d6a5 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -497,7 +497,6 @@ "settings_global_settings_info" = "Üldised teavituste seadistused leiduvad sinu %@ veebikliendis"; "settings_pin_rooms_with_missed_notif" = "Klammerda jututoad, kus leidub lugemata teavitusi"; "settings_pin_rooms_with_unread" = "Klammerda jututoad, kus leidub lugemata sõnumeid"; -"settings_on_denied_notification" = "Teavitused on %@ jaoks keelatud, palun luba nad oma seadme seadistustes"; "settings_enable_callkit" = "Lõimitud helistamine"; "settings_callkit_info" = "Vasta kõnedele lukustuskuvalt. Vaata Element'i kõnesid süsteemi kõnelogist. Kui iCloud on kasutusel, siis kõnede ajalugu jagatakse Applega."; "settings_calls_stun_server_fallback_button" = "Kasuta kõnehõlbustusserverit"; diff --git a/Riot/Assets/eu.lproj/Vector.strings b/Riot/Assets/eu.lproj/Vector.strings index 9278d4a1d..b3651544f 100644 --- a/Riot/Assets/eu.lproj/Vector.strings +++ b/Riot/Assets/eu.lproj/Vector.strings @@ -396,7 +396,6 @@ "room_participants_remove_third_party_invite_msg" = "Hirugarrengoen gonbidapenak kentzea ez da onartzen APIa ez dagoen bitartean"; "settings_sign_out_e2e_warn" = "Zure muturretik muturrerako zifratze gakoak galduko dituzu. Horrek esan nahi du ezin izango dituzula mezu zaharrak gehiago irakurri zifratutako geletan gailu honetatik."; "settings_global_settings_info" = "Jakinarazpen orokorren ezarpenak eskuragarri daude zure %@ web bezeroan"; -"settings_on_denied_notification" = "Jakinarazpenak ukatu dira %@(e)n, baimendu zure gailuaren ezarpenetan"; "room_details_history_section_prompt_msg" = "Historiala nork irakurri dezakeen aldatzea gelak honetara aurrerantzean bidalitako mezuei besterik ez zaie aplikatuko. Badagoen historialaren ikusgaitasuna ez da aldatuko."; // Call "call_incoming_voice_prompt" = "%@ erabiltzailearen deia jasotzen"; diff --git a/Riot/Assets/fr.lproj/Vector.strings b/Riot/Assets/fr.lproj/Vector.strings index 2f632e10c..d7734038b 100644 --- a/Riot/Assets/fr.lproj/Vector.strings +++ b/Riot/Assets/fr.lproj/Vector.strings @@ -278,7 +278,6 @@ "settings_global_settings_info" = "Les paramètres de notification globaux sont disponibles sur votre client web %@"; "settings_pin_rooms_with_missed_notif" = "Épingler les salons avec des notifications non lues"; "settings_pin_rooms_with_unread" = "Épingler les salons avec des messages non lus"; -"settings_on_denied_notification" = "Les notifications sont refusées pour %@, merci de les autoriser dans les paramètres de votre appareil"; "settings_unignore_user" = "Afficher tous les messages de %@ ?"; "settings_contacts_discover_matrix_users" = "Utiliser un e-mail ou un numéro de téléphone pour retrouver des utilisateurs"; "settings_contacts_phonebook_country" = "Pays pour le répertoire téléphonique"; diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index 0d516eb93..01905a26f 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -311,7 +311,6 @@ "settings_global_settings_info" = "Globális értesítési beállításokat a webes kliensedben találod: %@"; "settings_pin_rooms_with_missed_notif" = "Szobák kitűzése elszalasztott értesítésekkel"; "settings_pin_rooms_with_unread" = "Szobák kitűzése olvasatlan üzenetekkel"; -"settings_on_denied_notification" = "Az értesítések tiltva vannak ehhez: %@, kérlek engedélyezd az eszköz beállításaiban"; "settings_enable_callkit" = "Beépített hívás"; "settings_callkit_info" = "Hívások fogadása a zárolt képernyőn. Element hívások megjelenítése a rendszer hívás naplójában. Ha az iCloud engedélyezett akkor a hívásnapló az Apple-el megosztásra kerül."; "settings_ui_language" = "Nyelv"; diff --git a/Riot/Assets/is.lproj/Vector.strings b/Riot/Assets/is.lproj/Vector.strings index bd4577fda..a34e891ad 100644 --- a/Riot/Assets/is.lproj/Vector.strings +++ b/Riot/Assets/is.lproj/Vector.strings @@ -442,7 +442,6 @@ "settings_fail_to_update_profile" = "Mistókst að uppfæra notandasnið"; "settings_pin_rooms_with_missed_notif" = "Festa spjallrásir með óskoðuðum tilkynningum"; "settings_pin_rooms_with_unread" = "Festa spjallrásir með ólesnum skilaboðum"; -"settings_on_denied_notification" = "Tilkynningum er hafnað fyrir %@, leyfðu þær í stillingum tækisins"; "settings_ui_theme_picker_message" = "\"Sjálfvirkt\" notar \"Umsnúa litum\" stillingar tækisins"; "settings_contacts_discover_matrix_users" = "Notaðu tölvupóstföng og símanúmer til að finna notendur"; "settings_labs_e2e_encryption_prompt_message" = "Til að ljúka við uppsetningu á dulritun verðurðu að skrá þig inn aftur."; diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index 0a7d64e0e..0a0d7b6ca 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -327,7 +327,6 @@ "settings_global_settings_info" = "Le impostazioni di notifica avanzate sono disponibili nel tuo %@ web client"; "settings_pin_rooms_with_missed_notif" = "Segna le stanze con notifiche perse"; "settings_pin_rooms_with_unread" = "Segna le stanze con messaggi non letti"; -"settings_on_denied_notification" = "Le notifiche non sono permesse per %@, abilitale nelle impostazioni del tuo dispositivo"; "settings_enable_callkit" = "Chiamate integrate"; "settings_callkit_info" = "Ricevi le chiamate in arrivo sul blocca schermo. Mostra le chiamate Element nella cronologia di chiamate del dispositivo. Se iCloud è attivo, questa cronologia sarà condivisa con Apple."; "settings_ui_language" = "Lingua"; diff --git a/Riot/Assets/ja.lproj/Vector.strings b/Riot/Assets/ja.lproj/Vector.strings index 6ccb42bc3..2ca4ac3b8 100644 --- a/Riot/Assets/ja.lproj/Vector.strings +++ b/Riot/Assets/ja.lproj/Vector.strings @@ -289,7 +289,6 @@ "settings_show_decrypted_content" = "復号化された文章を表示"; "settings_global_settings_info" = "あなたの %@ webクライアント上で、全体の通知設定が可能です"; "settings_pin_rooms_with_missed_notif" = "通知の届かなかった部屋をピン止めする"; -"settings_on_denied_notification" = "%@で通知されないように設定されています。あなたの端末設定で許可してください"; "settings_callkit_info" = "画面がロックされているときに着信がありました。Elementの着信はシステムの通話履歴で確認できます。 iCloudが有効になっている場合、この通話履歴はAppleと共有されます。"; "settings_ui_language" = "言語"; "settings_ui_theme" = "外観"; diff --git a/Riot/Assets/kab.lproj/Vector.strings b/Riot/Assets/kab.lproj/Vector.strings index 1fa265a06..58166fb8f 100644 --- a/Riot/Assets/kab.lproj/Vector.strings +++ b/Riot/Assets/kab.lproj/Vector.strings @@ -1305,7 +1305,6 @@ "security_settings_blacklist_unverified_devices" = "Ɣur-k·m ad tazneḍ akk iznan ɣer tɣimiyin ur nettwattkal ara"; "security_settings_crypto_sessions_description_2" = "MA yella ur tessineḍ ara anekcum, senfel awal-ik·imuffir, rnu wennez aḥraz aɣellsan."; "settings_send_crash_report" = "Azen tura tura isefka yerrẓen & useqdec"; -"settings_on_denied_notification" = "Ttwagin yilɣa i %@, ttxil-k·m sireg-iten deg yiɣewaren n yibenk-inek·inem"; "settings_global_settings_info" = "Iɣewwaren n yilɣa imatuyen llan ɣef umsaɣ-inek·inem web %@"; "room_participants_start_new_chat_error_using_user_email_without_identity_server" = "Ulac aqeddac n timagit i yettusbadun, ihi ur tezmireḍ ara ad tebduḍ adiwenni akked unermis isseqdacen imayl."; "contacts_address_book_permission_required" = "Ttusrant tsirag i unekcum ɣer yinermisen idiganen"; diff --git a/Riot/Assets/nb-NO.lproj/Vector.strings b/Riot/Assets/nb-NO.lproj/Vector.strings index 744f54033..418c89a9c 100644 --- a/Riot/Assets/nb-NO.lproj/Vector.strings +++ b/Riot/Assets/nb-NO.lproj/Vector.strings @@ -857,7 +857,6 @@ "room_details_photo_for_dm" = "Bilde"; "room_details_photo" = "Rombilde"; "settings_flair" = "Vis kobling hvor tillatt"; -"settings_on_denied_notification" = "Varsler er ikke tillat for %@, vennligst tillat dem i enhetens innstillinger"; "settings_pin_rooms_with_missed_notif" = "Fest rom med tapte varsler"; "room_info_list_several_members" = "%@ medlemmer"; "pin_protection_not_allowed_pin" = "Av sikkerhetsårsaker er denne PIN-koden ikke tilgjengelig. Prøv en annen PIN-kode"; diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 5c7a00cae..a7ba063a6 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -289,7 +289,6 @@ "settings_global_settings_info" = "Globale meldingsinstellingen zijn beschikbaar op uw %@-webcliënt"; "settings_pin_rooms_with_missed_notif" = "Gesprekken met gemiste meldingen vastprikken"; "settings_pin_rooms_with_unread" = "Gesprekken met ongelezen berichten vastprikken"; -"settings_on_denied_notification" = "Meldingen worden geweigerd voor %@, sta ze toe in uw apparaatinstellingen"; //"settings_enable_all_notif" = "Alle notificaties aanzetten"; //"settings_messages_my_display_name" = "Bericht dat mijn naam bevat"; //"settings_messages_my_user_name" = "Bericht dat mijn gebruikersnaam bevat"; diff --git a/Riot/Assets/pl.lproj/Vector.strings b/Riot/Assets/pl.lproj/Vector.strings index 9fc3c92a9..96af5fb0b 100644 --- a/Riot/Assets/pl.lproj/Vector.strings +++ b/Riot/Assets/pl.lproj/Vector.strings @@ -503,7 +503,6 @@ "settings_key_backup" = "KOPIA ZAPASOWA KLUCZY"; "settings_enable_push_notif" = "Powiadomienia na tym urządzeniu"; "settings_global_settings_info" = "Globalne i szczegółowe ustawienia powiadomień są dostępne z poziomu klienta webowego: %@"; -"settings_on_denied_notification" = "Powiadomienia dla aplikacji %@ są wyłączone. Proszę zezwól na nie w ustawieniach urządzenia"; "settings_callkit_info" = "Odbieraj połączenia przychodzące na ekranie blokady. Zobacz swoje połęczenia Element w historii połączeń w systemie. Jeśli usługa iCloud jest włączona, historia połączeń zostanie udostępniona Apple."; "settings_ui_theme_picker_message" = "\"Auto\" używa ustawienia \"Odwróć kolory\" Twojego urządzenia"; "close" = "Zamknij"; diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index 5af654656..81f3d7799 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -317,7 +317,6 @@ "settings_enable_push_notif" = "Notificações neste dispositivo"; "settings_show_decrypted_content" = "Mostrar conteúdo decriptado"; "settings_global_settings_info" = "Configurações de notificação globais estão disponíveis em seu cliente web %@"; -"settings_on_denied_notification" = "Notificações são negadas para %@, por favor permita-as nas configurações de seu dispositivo"; "settings_enable_callkit" = "Chamamento integrado"; "settings_callkit_info" = "Receba chamadas chegando em sua tela de bloqueio. Veja suas chamadas Element no histórico de chamadas do sistema. Se iCloud está ativado, este histórico de chamadas vai ser compartilhado com Apple."; "settings_ui_language" = "Língua"; diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 0ad6dbef6..0091c576a 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -259,7 +259,6 @@ "settings_fail_to_update_profile" = "Не удалось обновить профиль"; "settings_enable_push_notif" = "Уведомления на этом устройстве"; "settings_global_settings_info" = "Глобальные настройки уведомлений доступны в вашем %@ веб-клиенте"; -"settings_on_denied_notification" = "Уведомления для %@ запрещены, пожалуйста, разрешите их в настройках вашего устройства"; "settings_ui_language" = "Язык"; "settings_unignore_user" = "Показать все сообщения от %@?"; "settings_labs_e2e_encryption" = "Сквозное шифрование"; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index 295c8a932..7a6eb2f8c 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -493,7 +493,6 @@ "settings_sign_out_e2e_warn" = "Do të humbni kyçet tuaj të fshehtëzimit skaj-më-skaj. Kjo do të thotë se s’do të jeni më në gjendje të lexoni mesazhe të vjetër te dhoma të fshehtëzuara në këtë pajisje."; "settings_surname" = "Mbiemër"; "settings_global_settings_info" = "Rregullimet globale për njoftime i gjeni te klienti juaj %@ web"; -"settings_on_denied_notification" = "Njoftimet për %@ s’pranohen, ju lutemi, lejojini që nga rregullimet e pajisjes tuaj"; "settings_enable_callkit" = "Thirrje të integruara"; "settings_callkit_info" = "Merrini thirrjet ardhëse edhe me ekran të kyçur. Shihni thirrjet tuaja nën Element te historiku i thirrjeve të sistemit. Nëse iCloud është i aktivizuar, ky historik thirrjesh do t’i jepet kompanisë Apple."; "settings_ui_theme_picker_message" = "\"Auto\" përdor rregullimet \"Përmbysi Ngjyrat\" të pajisjes tuaj"; diff --git a/Riot/Assets/sv.lproj/Vector.strings b/Riot/Assets/sv.lproj/Vector.strings index 1bbec2ef6..8316784a1 100644 --- a/Riot/Assets/sv.lproj/Vector.strings +++ b/Riot/Assets/sv.lproj/Vector.strings @@ -309,7 +309,6 @@ "settings_show_decrypted_content" = "Visa avkrypterat innehåll"; "settings_pin_rooms_with_missed_notif" = "Fäst rum med missade aviseringar"; "settings_pin_rooms_with_unread" = "Fäst rum med olästa meddelanden"; -"settings_on_denied_notification" = "Aviseringar har nekats för %@, vänligen tillåt dem i dina enhetsinställningar"; "settings_enable_callkit" = "Integrerade samtal"; "settings_integrations_allow_button" = "Hantera integrationer"; "settings_ui_language" = "Språk"; diff --git a/Riot/Assets/vi.lproj/Vector.strings b/Riot/Assets/vi.lproj/Vector.strings index 88fc75f85..c401d3268 100644 --- a/Riot/Assets/vi.lproj/Vector.strings +++ b/Riot/Assets/vi.lproj/Vector.strings @@ -290,7 +290,6 @@ "settings_global_settings_info" = "Cài đặt thông báo toàn cầu khả dụng trên %@ trình duyệt khách của bạn"; "settings_pin_rooms_with_missed_notif" = "Neo phòng có thông báo bỏ lỡ"; "settings_pin_rooms_with_unread" = "Neo phòng có tin nhắn chưa đọc"; -"settings_on_denied_notification" = "Thông báo bị từ chối cho %@, vui lòng cho phép trong cài đặt thiết bị của bạn"; "settings_enable_callkit" = "Cuộc gọi tích hợp"; "settings_callkit_info" = "Nhận cuộc gọi tới trên màn hình khóa. Xem lịch sử cuộc gọi trong lịch sử cuộc gọi của hệ thống. Nếu iCloud được kích hoạt, lịch sử cuộc gọi sẽ được chia sẻ với Apple."; "settings_ui_language" = "Ngôn ngữ"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index da074b767..519be3cfc 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -272,7 +272,6 @@ "settings_global_settings_info" = "全局通知设置可在 %@ 的网页客户端中修改"; "settings_pin_rooms_with_missed_notif" = "置顶含有错过的通知的聊天室"; "settings_pin_rooms_with_unread" = "置顶含有未读消息的聊天室"; -"settings_on_denied_notification" = "%@ 的通知请求被拒绝,请在系统设置中允许"; "settings_unignore_user" = "显示所有来自 %@ 的消息?"; "settings_contacts_discover_matrix_users" = "使用电子邮件和手机号码来发现用户"; "settings_contacts_phonebook_country" = "电话本国家"; diff --git a/Riot/Assets/zh_Hant.lproj/Vector.strings b/Riot/Assets/zh_Hant.lproj/Vector.strings index de6fbf1ab..bf0c0648c 100644 --- a/Riot/Assets/zh_Hant.lproj/Vector.strings +++ b/Riot/Assets/zh_Hant.lproj/Vector.strings @@ -344,7 +344,6 @@ "room_ongoing_conference_call_with_close" = "群組通話進行中。 以 %@ 或 %@ 加入。%@ 該通話。"; "settings_pin_rooms_with_missed_notif" = "釘選含有錯過的通知的聊天室"; "settings_pin_rooms_with_unread" = "釘選含有未讀訊息的聊天室"; -"settings_on_denied_notification" = "因 %@ 的通知不被允許,請在裝置設定中允許"; "settings_enable_callkit" = "整合式通話"; "settings_callkit_info" = "在鎖定畫面接聽 Element 來電、在通話紀錄中顯示 Element 通話。 如果您已啟用 iCloud ,則這些通話紀錄會與蘋果公司共享。"; "settings_ui_language" = "語言"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 76dfc1fde..26b216bae 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -4394,6 +4394,14 @@ internal enum VectorL10n { internal static var settingsNightMode: String { return VectorL10n.tr("Vector", "settings_night_mode") } + /// To enable notifications, go to your device settings. + internal static var settingsNotificationsDisabledAlertMessage: String { + return VectorL10n.tr("Vector", "settings_notifications_disabled_alert_message") + } + /// Notifications disabled + internal static var settingsNotificationsDisabledAlertTitle: String { + return VectorL10n.tr("Vector", "settings_notifications_disabled_alert_title") + } /// NOTIFICATION SETTINGS internal static var settingsNotificationsSettings: String { return VectorL10n.tr("Vector", "settings_notifications_settings") @@ -4406,10 +4414,6 @@ internal enum VectorL10n { internal static func settingsOlmVersion(_ p1: String) -> String { return VectorL10n.tr("Vector", "settings_olm_version", p1) } - /// Notifications are denied for %@, please allow them in your device settings - internal static func settingsOnDeniedNotification(_ p1: String) -> String { - return VectorL10n.tr("Vector", "settings_on_denied_notification", p1) - } /// OTHER internal static var settingsOther: String { return VectorL10n.tr("Vector", "settings_other") diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index eda70d0c8..adfae4344 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -2867,13 +2867,14 @@ TableViewSectionsDelegate> [currentAlert dismissViewControllerAnimated:NO completion:nil]; __weak typeof(self) weakSelf = self; - - NSString *appDisplayName = [[NSBundle mainBundle] infoDictionary][@"CFBundleDisplayName"]; - currentAlert = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:NSLocalizedStringFromTable(@"settings_on_denied_notification", @"Vector", nil), appDisplayName] message:nil preferredStyle:UIAlertControllerStyleAlert]; + NSString *title = NSLocalizedStringFromTable(@"settings_notifications_disabled_alert_title", @"Vector", nil); + NSString *message = NSLocalizedStringFromTable(@"settings_notifications_disabled_alert_message", @"Vector", nil); - [currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"ok"] - style:UIAlertActionStyleDefault + currentAlert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; + + [currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"] + style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { if (weakSelf) @@ -2884,6 +2885,21 @@ TableViewSectionsDelegate> }]]; + UIAlertAction *settingsAction = [UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"settings"] + style:UIAlertActionStyleDefault + handler:^(UIAlertAction * action) { + if (weakSelf) + { + typeof(self) self = weakSelf; + self->currentAlert = nil; + + [self openSystemSettingsApp]; + } + }]; + + [currentAlert addAction:settingsAction]; + currentAlert.preferredAction = settingsAction; + [currentAlert mxk_setAccessibilityIdentifier: @"SettingsVCPushNotificationsAlert"]; [self presentViewController:currentAlert animated:YES completion:nil]; From a88c31b6dd7e0ac396392c0b10e122cd8e7c6346 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Thu, 29 Jul 2021 09:50:20 +0100 Subject: [PATCH 12/87] Update CHANGES.rst --- CHANGES.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 6efffb50b..6ce23abd7 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -8,6 +8,8 @@ Changes to be released in next version * Room: Added support for Voice Messages (#4090, #4091, #4092, #4094, #4095, #4096) * Remove the directory section from the Rooms tab. * Notifications: Show decrypted content is enabled by default (#4519). + * Settings: The notifications toggle no longer detects the system's "Deliver Quietly" configuration as disabled (#2368). + * Settings: Adds a link to open the Settings app to quickly configure app notifications. 🐛 Bugfix * Room: Fixed mentioning users from room info member details (#4583) From ffd9dc6c259cd976c9556e3043727eb5b2a0f312 Mon Sep 17 00:00:00 2001 From: Doug Date: Thu, 29 Jul 2021 11:37:19 +0100 Subject: [PATCH 13/87] Use MXWeakify/MXStrongifyAndReturnIfNil. --- Riot/Modules/Settings/SettingsViewController.m | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index adfae4344..7f40c9ded 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -1245,18 +1245,15 @@ TableViewSectionsDelegate> - (void)refreshSystemNotificationSettings { - __weak typeof(self) weakSelf = self; + MXWeakify(self); // Get the system notification settings to check authorization status and configuration. - [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { + [UNUserNotificationCenter.currentNotificationCenter getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { dispatch_async(dispatch_get_main_queue(), ^{ - if (weakSelf) - { - typeof(self) self = weakSelf; - - self.systemNotificationSettings = settings; - [self.tableView reloadData]; - } + MXStrongifyAndReturnIfNil(self); + + self.systemNotificationSettings = settings; + [self.tableView reloadData]; }); }]; } From 592bbdcfab22b6b6dff7a43eeb8fb976a723f7ae Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Thu, 29 Jul 2021 14:50:36 +0200 Subject: [PATCH 14/87] Revert "Update Readme" This reverts commit 71e6b1e905c09a517303022b7fd803ea1e1ffd55. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7c9b7b5ed..31edf7a51 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,8 @@ You can try last beta build by accessing our [TestFlight Public Link](https://te If you have already everything installed, opening the project workspace in Xcode should be as easy as: ``` -$ ./setup_project.sh # Local script that creates the xcodeproj and xcworkspace with all source files and dependencies +$ xcodegen # Create the xcodeproj with all project source files +$ pod install # Create the xcworkspace with all project dependencies $ open Riot.xcworkspace # Open Xcode ``` From 6716c00508d6bc7813a92bfb93cfb09332e6d3ef Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Thu, 29 Jul 2021 15:08:54 +0200 Subject: [PATCH 15/87] Update install guide. --- INSTALL.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index ca983508a..5248af653 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -123,6 +123,13 @@ You may need to change the bundle identifier and app group identifier to be uniq Each target has its own YAML file in the folder Targets folder. +### Generate the project in one line without effort + +If you want to generate the project easily and quickly there is a local script called `setup_project.sh` that creates the `xcodeproj` and `xcworkspace` with all source files and dependencies with commands described before. It select automatically the right dependencies based on your local Git branch or your Podfile local modifications. All you have to do is to go in the project root folder and run the script: + +``` +$ ./setup_project.sh +``` ## Generate IPA From 3635313f11e00edb0ddb51825813b322a6196274 Mon Sep 17 00:00:00 2001 From: Doug Date: Fri, 30 Jul 2021 12:19:28 +0100 Subject: [PATCH 16/87] Check for functional members state and if found, exclude the service members from the room name and avatar computation. --- CHANGES.rst | 2 +- Riot/Utils/EventFormatter.m | 90 +++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index c7d5e0920..74bd3235c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,7 +5,7 @@ Changes to be released in next version * 🙌 Improvements - * + * Add support for Functional Members. 🐛 Bugfix * diff --git a/Riot/Utils/EventFormatter.m b/Riot/Utils/EventFormatter.m index 11603bf59..8544e122b 100644 --- a/Riot/Utils/EventFormatter.m +++ b/Riot/Utils/EventFormatter.m @@ -408,6 +408,96 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; return senderAvatarUrl; } +#pragma mark - MXRoomSummaryUpdating +- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withStateEvents:(NSArray *)stateEvents roomState:(MXRoomState *)roomState +{ + BOOL updated = [super session:session updateRoomSummary:summary withStateEvents:stateEvents roomState:roomState]; + + // Customisation for EMS Functional Members + MXEvent *functionalMembersEvent = [self functionalMembersEventFromStateEvents:stateEvents]; + + if (functionalMembersEvent) + { + MXEvent *existingFunctionalMembersEvent = [self previousFunctionalMembersEventFromStateEvents:roomState.stateEvents]; + + // If there isn't an existing functional members event we're done, the state has changed. + if (!existingFunctionalMembersEvent) + { + MXLogDebug(@"[EventFormatter] A functional members event has been added to the room.") + return YES; + } + + NSArray *serviceMemberIDs = functionalMembersEvent.content[@"service_members"] ?: @[]; + NSArray *existingServiceMemberIDs = existingFunctionalMembersEvent.content[@"service_members"] ?: @[]; + + // If the new service members differ from the existing ones, the state has changed. + if (![serviceMemberIDs isEqualToArray:existingServiceMemberIDs]) + { + MXLogDebug(@"[EventFormatter] The functional members event has changed.") + return YES; + } + } + + return updated; +} + +- (BOOL)session:(MXSession *)session updateRoomSummary:(MXRoomSummary *)summary withServerRoomSummary:(MXRoomSyncSummary *)serverRoomSummary roomState:(MXRoomState *)roomState +{ + BOOL updated = [super session:session updateRoomSummary:summary withServerRoomSummary:serverRoomSummary roomState:roomState]; + + // Customisation for EMS Functional Members + MXEvent *functionalMembersEvent = [self functionalMembersEventFromStateEvents:roomState.stateEvents]; + + if (functionalMembersEvent) + { + MXLogDebug(@"[EventFormatter] Computing the room name and avatar excluding functional members.") + + NSArray *serviceMemberIDs = functionalMembersEvent.content[@"service_members"] ?: @[]; + + updated |= [defaultRoomSummaryUpdater updateSummaryDisplayname:summary + session:session + withServerRoomSummary:serverRoomSummary + roomState:roomState + excludingUserIDs:serviceMemberIDs]; + + updated |= [defaultRoomSummaryUpdater updateSummaryAvatar:summary + session:session + withServerRoomSummary:serverRoomSummary + roomState:roomState + excludingUserIDs:serviceMemberIDs]; + } + + return updated; +} + +/** + Gets the newest state event of type `io.element.functional_members` from the supplied array of state events. + @return An event of type `io.element.functional_members`, or nil if the event wasn't found. + */ +- (MXEvent *)functionalMembersEventFromStateEvents:(NSArray *)stateEvents +{ + NSPredicate *functionalMembersPredicate = [NSPredicate predicateWithFormat:@"type == %@", @"io.element.functional_members"]; + return [stateEvents filteredArrayUsingPredicate:functionalMembersPredicate].lastObject; +} + +/** + Gets the last but one state event of type `io.element.functional_members` from the supplied array of state events. + @return An event of type `io.element.functional_members`, or nil if the event wasn't found. + */ +- (MXEvent *)previousFunctionalMembersEventFromStateEvents:(NSArray *)stateEvents +{ + NSPredicate *functionalMembersPredicate = [NSPredicate predicateWithFormat:@"type == %@", @"io.element.functional_members"]; + NSArray *events = [stateEvents filteredArrayUsingPredicate:functionalMembersPredicate]; + + if (events.count <= 1) + { + // There are no previous events, return nil. + return nil; + } + + return events[events.count - 2]; +} + #pragma mark - Timestamp formatting - (NSString*)dateStringFromDate:(NSDate *)date withTime:(BOOL)time From 0c8ae463bcb3311a1229563a7ff77db891ad3618 Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Tue, 3 Aug 2021 14:07:05 +0300 Subject: [PATCH 17/87] stable ids for MSC 2858 --- .../Authentication/SSO/SSOAuthenticationService.swift | 6 ++---- Riot/Modules/Authentication/SSO/SSOURLConstants.swift | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift b/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift index d00094b85..1ede12851 100644 --- a/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift +++ b/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift @@ -48,12 +48,10 @@ final class SSOAuthenticationService: NSObject { return nil } - let ssoRedirectPath: String + var ssoRedirectPath = SSOURLConstants.Paths.redirect if let identityProvider = identityProvider { - ssoRedirectPath = SSOURLConstants.Paths.unstableRedirect + identityProvider - } else { - ssoRedirectPath = SSOURLConstants.Paths.redirect + ssoRedirectPath.append(identityProvider) } authenticationComponent.path = ssoRedirectPath diff --git a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift index 01de2ddc9..7cc90150d 100644 --- a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift +++ b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift @@ -25,6 +25,5 @@ enum SSOURLConstants { enum Paths { static let redirect = "/_matrix/client/r0/login/sso/redirect" - static let unstableRedirect = "/_matrix/client/unstable/org.matrix.msc2858/login/sso/redirect/" } } From 09ede8e4d59f463fb956921ab23ddc3cf9e479d2 Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Tue, 3 Aug 2021 14:09:45 +0300 Subject: [PATCH 18/87] Update CHANGES.rst --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index c7d5e0920..39ca3b388 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,7 +5,7 @@ Changes to be released in next version * 🙌 Improvements - * + * SSO: Stable ids for MSC 2858 (#4362). 🐛 Bugfix * From e0e8924fd768d19cb53ad390a3367ae77a7e20e6 Mon Sep 17 00:00:00 2001 From: manuroe Date: Tue, 3 Aug 2021 15:16:36 +0200 Subject: [PATCH 19/87] Prepare for new sprint --- CHANGES.rst | 24 ++++++++++++++++++++++++ Config/AppIdentifiers.xcconfig | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 34b40353d..a19c8b4e6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,27 @@ +Changes to be released in next version +================================================= + +✨ Features + * + +🙌 Improvements + * + +🐛 Bugfix + * + +⚠️ API Changes + * + +🗣 Translations + * + +🧱 Build + * + +Others + * + Changes in 1.4.9 (2021-08-03) ================================================= diff --git a/Config/AppIdentifiers.xcconfig b/Config/AppIdentifiers.xcconfig index c21273565..87a13956f 100644 --- a/Config/AppIdentifiers.xcconfig +++ b/Config/AppIdentifiers.xcconfig @@ -22,8 +22,8 @@ APPLICATION_GROUP_IDENTIFIER = group.im.vector APPLICATION_SCHEME = element // Version -MARKETING_VERSION = 1.4.9 -CURRENT_PROJECT_VERSION = 1.4.9 +MARKETING_VERSION = 1.4.10 +CURRENT_PROJECT_VERSION = 1.4.10 // Team From 599acc8606b39a1fea648fed5cac0734d9b12527 Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Tue, 3 Aug 2021 17:00:13 +0300 Subject: [PATCH 20/87] Add & update icons --- .../call_missed_video.imageset/Contents.json | 23 ++++++++++++++++++ .../Call/call_missed_video.imageset/Video.png | Bin 0 -> 401 bytes .../call_missed_video.imageset/Video@2x.png | Bin 0 -> 615 bytes .../call_missed_video.imageset/Video@3x.png | Bin 0 -> 771 bytes .../call_missed_voice.imageset/Contents.json | 23 ++++++++++++++++++ .../call_missed_voice.imageset/Voice call.png | Bin 0 -> 421 bytes .../Voice call@2x.png | Bin 0 -> 644 bytes .../Voice call@3x.png | Bin 0 -> 866 bytes .../Call/call_video_icon.imageset/24.png | Bin 333 -> 0 bytes .../Call/call_video_icon.imageset/24@2x.png | Bin 498 -> 0 bytes .../Call/call_video_icon.imageset/24@3x.png | Bin 633 -> 0 bytes .../call_video_icon.imageset/Contents.json | 6 ++--- .../Call/call_video_icon.imageset/Video.png | Bin 0 -> 315 bytes .../call_video_icon.imageset/Video@2x.png | Bin 0 -> 419 bytes .../call_video_icon.imageset/Video@3x.png | Bin 0 -> 576 bytes Riot/Generated/Images.swift | 2 ++ 16 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Contents.json create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video@2x.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video@3x.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Contents.json create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call@2x.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call@3x.png delete mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png delete mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@2x.png delete mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video@2x.png create mode 100644 Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video@3x.png diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Contents.json new file mode 100644 index 000000000..20f5e66df --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Video.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Video@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Video@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video.png b/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video.png new file mode 100644 index 0000000000000000000000000000000000000000..e3258d174f23dfcb075b56623aa64461e12cff55 GIT binary patch literal 401 zcmV;C0dD?@P)%=MDGaEU0SH4D ze37LmP^t21%>1JUZ6T4gUH7%m{BRp?&Hknh=xvZ*utoLRI9f^qeQB0C&e!(=0;Z#G vf?X0V{0@|dK$_~qFRcuwm8Cp7)4$aR-V<-|OzIViIoP9KkHJ3RdL+a)RIqXay=Uh0+GAOblb%6PTPJuCtM34c7cx&y_gV|65MTrP9h63^WLi51*qWbe@ zAe1V`G3_Z9pM%GMaMm}iYd`W5UB)Sp5=#P}kn&oyBoX(WcyB7F;0e&$=05L0e|}bPtLrwe98M_-YtkDIt0J7dsWTC>)}R4 zZ#SyeRX?O;q%Gi;|6=ivKJo3ZRpZ8$T3Dysy&ajMMX0}QT|FVZ!Xl^n_fT;p17k4M zfE1{g*TVXsiLAtv4JZt*2RMsFrr$(V$VxoX020>AtKrE_#rK=|w3n55qJeArUrcvR zWF_uMbr3ldoS9!ZBq)|l$vx+>69tY&Lyt3-T{-(OsN0>002ovPDHLkV1n|5 B7jggq literal 0 HcmV?d00001 diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video@3x.png b/Riot/Assets/Images.xcassets/Call/call_missed_video.imageset/Video@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f27d51f50b18d2d82a6cef8676615c3cae8516cc GIT binary patch literal 771 zcmV+e1N{7nP)leK~#7F?U>(D z+dvS;_jD33i6<_>bbvd+6(k*CDv0_A5pF3x14Fsp-+7QLJlIAH5 zNG4APrq*qAc-5wjIEVRb`?~@kI6zN-$BjctU9)too=Hxf`5g z!sTAOZ1IHB0Cs7^y(9aUbM5-Ui--wF9NdJ@Wr-(JhER-5{8$C13#d8zNeW)ChWe|#h#)=f1DIv zx~tCwca7Ij;q3&5$4Qp?7kz6KK5OI(YnhZ?Qt?n7MH(O{ei8?@%ygalRwxVnEeeI8 zCC$&{>vbWT`s``1*JnCjuM4pZheu6KO-;>;^A|4uHMRsoDr5iv002ovPDHLkV1n_l BN}vD$ literal 0 HcmV?d00001 diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Contents.json new file mode 100644 index 000000000..5e3dda044 --- /dev/null +++ b/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Voice call.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Voice call@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Voice call@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call.png b/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call.png new file mode 100644 index 0000000000000000000000000000000000000000..f24b41a57ce80deb84a24c5712865931689b81a7 GIT binary patch literal 421 zcmV;W0b2fvP)XG={ZwtG3let**c{xW*fBgx z(o89>E=|7$;m!Pfc{2}yje^O=U=V27*m?%WwAs?rnR8&4`~CaJLqamdnk|3F7nIGW zHWx665%9Vq2odoGDsZTQh#r8zRJfv71YPgQ@~e5Z#*iwluaoRUopR)1Zxk6q&{-w; zX?hKpqp{C{pRW`AiHl*>{w=fAi5~>o_Itx1%G+Gw`Ye`Wp1(4tOx{|biErEKN=g4N za>e<5X~eaNBl@S#es@XI8%7Ffp literal 0 HcmV?d00001 diff --git a/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call@2x.png b/Riot/Assets/Images.xcassets/Call/call_missed_voice.imageset/Voice call@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4a900f161d4a4940cc7e1639bc98fcd22729c995 GIT binary patch literal 644 zcmV-~0(%G&RsmH3brmW=Y||6K5z-sDH%NEs zFymJ{O{0+7jxqxaAU`Sbc>L%4=GpT+085rUbHT$jsMuW zsB(_Alztz*uSe3>hk=I`5>=15VI6$pNLN6#ryt_b)lYy2Bo@rZh=8sUL7HnuJn@Pn z2Bxl*>O&C&R#SjsN@?T@sYN{5f3p?4=JPJW402qK_J!FWWyKdVkgGf)qHit}MZ^~} zz)%d{?Y!EynJ6kg*8oe?9{dfxYu((lwk<2ylxpT3t zdv~p~=cp33Rxcv5Lf1u7iXIa>pzBQ{P<|BuH;bLZvcc($H~#9>&1L?kff*iR-65UghQeiwS8-ld8J7G z5UZK<^J+5bFgwgwD*;1VBc-D`wI3AG(R5$;TX1q2-smK=@;sG|C>lTs+B$J%Ls89O e@kF)c@$&}~?gN7}o2?%J0000gOw4$;N9!Bf%ZHD4#*Fv1O%d$tFze#D0#oz3+K;+6TYKf#lXqO z-2?TxP7)Su=n`)bRihvR0R+eVHvHr83Mg@saDhjxZ{~(ad2v$&_yX7mB{NVEh%mtF zaM@)JOcNlY{f*Yzj`A|ajRXI0aA@K;1iz0H6#pSvPVElxKBt3L6T++ z*8UkT-G?hj$u-)u&)_EaZ{>-uL) z`sYG!Jexh1+1ALYB|d#Uc*ASHy4xxW1E$k%zSz!+QAu=n4|}}MH{jveTW_vK)4t4= z=zcrgvetG$PfR?4xw1@1ChyH34CR%35x2QS*j{g~ralRo5|VN4TyUcTodys60uOx* zN_d1rOQRE|Ou|+3LfS?|W+^_Z&MbjafQelM1c^uG-V{^2JgubeMP*84mD3La0)}bF zOWQoVPfX6YeNe(lDu&yD80$kTsaZW!f=lQAWV?9-&a~31R-h8WE#UGbl0HMOlM@mK{~Aabo`mO-FavEr~LDmcs1B;>C1yOt`~!byq66HG`404>%1Gi sh+Kma*I>L<|ESCjJK*tnJf8dJH$SJ0*eH%oZvX%Q07*qoM6N<$g0n*aa+ literal 0 HcmV?d00001 diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24.png deleted file mode 100644 index aa4d945029981c87146fa45709d0b6a3856f9826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{v%Hp$B+ufvy<*~9&+G0HhIgBHPUxD`W|rf zEfCIFtMo{o&&5UeTUbGJUV!@r-a7}H{IjYze!s9>Y$eyL_YdEBd+f7OVc5@h_VUy^ z(RYP&XSl3uu-KIQdc&l1D=#Ey)C#H>&hYw}BgAZd`=`TGo?pWHDJ^VM6m~|KE}e5C zqx@OvC4HyzSB6ts7;oQNbiixNd^g?6$`yjUUZ!39GtKdwfZdbbY%LYnM7bI&r$5a} zxiLL9+2{J=Ny?j#h2`(MH~E-W+0&qaq;?LCd8Uigjz^2g1gYKmxa=V7@|+7(y%#L$ dd7xj(;6BOE0!YB|ErD;8Z@dUCYZv3-xiAUfDmf*_F z%yWhWZAdjGw78jHGVRQ~PTrUHrQZWE82%X&UR0Q8TT+w&F$c?lH~~sW?uBy)OY$wC z)^vcBV?a`MyUrl)36fm$5E2V+ul^M0QBrGNl?l*WNR~iMtsUR522nx%srB7w z)qql@B}g8dZt-$dz-ji|mJsiH)LPe-j3kgFkOCBT!^>HL3vrJC`S~6J($1*lHl$30 zd08&_qe_`w2-y_Yz$fP{BKeH92>1&lzz8q`)*=8ioS}BgC;{r%7(faTB$N5vXJ=z+ z@q(Hz+O#$!c!M;cFbXfV2)E-Dl~te5_axvAMf}-F3jMl&>yA{Pz=ZX&t%ujCvzZZ| zH2c1?rejD76h*h&h}9KY`tthnFx=ZeQ0_?bumZZCRA+VQ_D+X!&nz^hmsv}094+0H o>g0kx%gyP)XDpSXHW*Ul3om1m$P##)V*mgE07*qoM6N<$f>@N(%m4rY diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/24@3x.png deleted file mode 100644 index 2c487f4aa9c5d63da2ffaeb3679e2406986de085..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 633 zcmV-<0*3vGP)3~#V=s>Cbuq=J|Va4ImVAe5jI_-^Sod%|)4 z3D8(rry1Yx10!^MbNBA{R&x(4OGKYr8*pZI9Z?snSk4s z|AFcz|BI#XdF?Vgq0CQ`CRMKdpEPb$_TJF(>2P26VFsIM4oC0%^KD_>vrh*E^$cdQ z374a{y{Rt;YJW{JstnF59_E{3y62-YY3}^)grIvic;b_yJ!V)%RyA1HX3l4tBs13B z`oABY`!e|!tdsw(F_lry=L|&6H60rYHRbrt@P*DQBQ-b0)mDJy_@qc!eFYT639yY5 zU>hgEHco(ToB-R@Rse&Kip14cz~_tpB=vM#gv6WTL;%IG4RfwDF^NtV+Dk&Yx#YGR zaZ0oP4%@7mpkWfdiskOxmf3#!w@ogRQ>7S}undv6)u|IVufx!X;_%Jo@0Ex?7+>_G z>^9#!9bPj%v>TU?Ndw9Er?@98U&y~XlK}YVtZXW1|Fj zWps7oZ?=}LogjH^#xi4~B)N`O=GLtYuRV#_k?ms2wVp#`TEvBOI2;a#qX<6%4aCMR T!e4;O00000NkvXXu0mjf>&zec diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json index 453722c5e..044af1b2e 100644 --- a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json +++ b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Contents.json @@ -1,17 +1,17 @@ { "images" : [ { - "filename" : "24.png", + "filename" : "Video.png", "idiom" : "universal", "scale" : "1x" }, { - "filename" : "24@2x.png", + "filename" : "Video@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "24@3x.png", + "filename" : "Video@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video.png new file mode 100644 index 0000000000000000000000000000000000000000..b43277bebce49d56a5ffa2a0dfcd4f774e1e3070 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^fh_!7srqa#;cP~a~^UKXiJZ`d&-<`i5-|ZxmDC zT=pyf@^;~}sHL7IKQ$(94n5FP&gvj9<#3>2d(Wj;w#(=A*9%U`zTBzVxDI!OsgNom0R zP?+ywn7Q{dbGS1w2QU~KhW;*YAK$M5>kR+E0rm3epqF-vzaa`x4Uv{>N+6<~vsedl?(?$h{6w@F%?C3jE(OlarD zdxMDwMwpx{P$St}W3ZFOY7^kzzjf@R&$*t?(1d_Y#AMjJ)L*r~EntNTAjUc`K7P5=*P(9okGR9K|T)wb?&n5r> N002ovPDHLkV1m>2u;Ks! literal 0 HcmV?d00001 diff --git a/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video@3x.png b/Riot/Assets/Images.xcassets/Call/call_video_icon.imageset/Video@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2acb22945698234c15e6121cefa0b7b0fa38be GIT binary patch literal 576 zcmV-G0>Ax%S>ZpSiXOXj{3b-W5SWCJy%a%u%*T!59(N(Ph#w z7OF&KQumR`G$2M;Cq+|AS*1SL2#5)pv(lcF;`t}r$3jHfb}P#BL%*C_+v&^y0hy!f zv|b5e7`v)@&9Qax4`30xz#?>kMd$*H&;=Hu3tEc^jLxmvt2M^eX)VHYj+^dzc3J&~ z-;An@g`M1stfh8y`@`mA(-Y;wf#=I$nE;#pbFpe{&pB)avc1vYC*otMg9ac3W1G0A zPY4=Fl<$TfmQzVc-+zHH` Date: Tue, 3 Aug 2021 17:00:35 +0300 Subject: [PATCH 21/87] Update strings --- Riot/Assets/en.lproj/Vector.strings | 12 +++++----- Riot/Generated/Strings.swift | 36 ++++++++++++++--------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 01a6f2ef1..dc5e82252 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -844,14 +844,14 @@ Tap the + to start adding people."; "event_formatter_rerequest_keys_part1_link" = "Re-request encryption keys"; "event_formatter_rerequest_keys_part2" = " from your other sessions."; "event_formatter_message_edited_mention" = "(edited)"; -"event_formatter_call_voice" = "Voice call"; -"event_formatter_call_video" = "Video call"; "event_formatter_call_connecting" = "Connecting…"; "event_formatter_call_ringing" = "Ringing…"; -"event_formatter_call_has_ended" = "Ended %@"; -"event_formatter_call_you_currently_in" = "Active call"; -"event_formatter_call_you_declined" = "You declined this call"; -"event_formatter_call_you_missed" = "You missed this call"; +"event_formatter_call_has_ended" = "Call ended %@"; +"event_formatter_call_active_voice" = "Active voice call"; +"event_formatter_call_active_video" = "Active video call"; +"event_formatter_call_you_declined" = "Call declined"; +"event_formatter_call_missed_voice" = "Missed voice call"; +"event_formatter_call_missed_video" = "Missed video call"; "event_formatter_call_connection_failed" = "Connection failed"; "event_formatter_call_back" = "Call back"; "event_formatter_call_decline" = "Decline"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 7f2cb1930..0935e0719 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -1242,6 +1242,14 @@ internal enum VectorL10n { internal static var errorUserAlreadyLoggedIn: String { return VectorL10n.tr("Vector", "error_user_already_logged_in") } + /// Active video call + internal static var eventFormatterCallActiveVideo: String { + return VectorL10n.tr("Vector", "event_formatter_call_active_video") + } + /// Active voice call + internal static var eventFormatterCallActiveVoice: String { + return VectorL10n.tr("Vector", "event_formatter_call_active_voice") + } /// Answer internal static var eventFormatterCallAnswer: String { return VectorL10n.tr("Vector", "event_formatter_call_answer") @@ -1266,10 +1274,18 @@ internal enum VectorL10n { internal static var eventFormatterCallEndCall: String { return VectorL10n.tr("Vector", "event_formatter_call_end_call") } - /// Ended %@ + /// Call ended %@ internal static func eventFormatterCallHasEnded(_ p1: String) -> String { return VectorL10n.tr("Vector", "event_formatter_call_has_ended", p1) } + /// Missed video call + internal static var eventFormatterCallMissedVideo: String { + return VectorL10n.tr("Vector", "event_formatter_call_missed_video") + } + /// Missed voice call + internal static var eventFormatterCallMissedVoice: String { + return VectorL10n.tr("Vector", "event_formatter_call_missed_voice") + } /// Retry internal static var eventFormatterCallRetry: String { return VectorL10n.tr("Vector", "event_formatter_call_retry") @@ -1278,26 +1294,10 @@ internal enum VectorL10n { internal static var eventFormatterCallRinging: String { return VectorL10n.tr("Vector", "event_formatter_call_ringing") } - /// Video call - internal static var eventFormatterCallVideo: String { - return VectorL10n.tr("Vector", "event_formatter_call_video") - } - /// Voice call - internal static var eventFormatterCallVoice: String { - return VectorL10n.tr("Vector", "event_formatter_call_voice") - } - /// Active call - internal static var eventFormatterCallYouCurrentlyIn: String { - return VectorL10n.tr("Vector", "event_formatter_call_you_currently_in") - } - /// You declined this call + /// Call declined internal static var eventFormatterCallYouDeclined: String { return VectorL10n.tr("Vector", "event_formatter_call_you_declined") } - /// You missed this call - internal static var eventFormatterCallYouMissed: String { - return VectorL10n.tr("Vector", "event_formatter_call_you_missed") - } /// Group call internal static var eventFormatterGroupCall: String { return VectorL10n.tr("Vector", "event_formatter_group_call") From 444799ec7a98a08c46db4c71836e60eb7db61cae Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Tue, 3 Aug 2021 17:01:17 +0300 Subject: [PATCH 22/87] Remove type and dot labels --- .../Call/CallBubbleCellBaseContentView.swift | 5 ----- .../Call/CallBubbleCellBaseContentView.xib | 22 ++++--------------- 2 files changed, 4 insertions(+), 23 deletions(-) diff --git a/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.swift b/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.swift index cdec7a227..6b7ef9a23 100644 --- a/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.swift +++ b/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.swift @@ -32,8 +32,6 @@ class CallBubbleCellBaseContentView: UIView { @IBOutlet weak var avatarImageView: MXKImageView! @IBOutlet weak var callerNameLabel: UILabel! @IBOutlet weak var callIconView: UIImageView! - @IBOutlet weak var callTypeLabel: UILabel! - @IBOutlet weak var dotLabel: UILabel! @IBOutlet private weak var callStatusLabel: UILabel! @IBOutlet private weak var callSummaryHeightConstraint: NSLayoutConstraint! @@ -51,7 +49,6 @@ class CallBubbleCellBaseContentView: UIView { var statusText: String? { didSet { - dotLabel.isHidden = statusText == nil callStatusLabel.text = statusText } } @@ -106,8 +103,6 @@ extension CallBubbleCellBaseContentView: Themable { bgView.backgroundColor = theme.colors.tile callerNameLabel.textColor = theme.textPrimaryColor callIconView.tintColor = theme.textTertiaryColor - callTypeLabel.textColor = theme.textSecondaryColor - dotLabel.textColor = theme.textSecondaryColor callStatusLabel.textColor = theme.textSecondaryColor if let bottomContainerView = bottomContainerView as? Themable { diff --git a/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.xib b/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.xib index 526f057fa..09df8b2e6 100644 --- a/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.xib +++ b/Riot/Modules/Room/Views/BubbleCells/Call/CallBubbleCellBaseContentView.xib @@ -1,9 +1,9 @@ - + - + @@ -78,7 +78,7 @@ - + @@ -87,20 +87,8 @@ - - - @@ -127,13 +118,11 @@ - - diff --git a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.h b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.h index 92d5cf2cb..db8a7590c 100644 --- a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.h +++ b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.h @@ -22,7 +22,6 @@ @interface RoomTableViewCell : MXKTableViewCell @property (weak, nonatomic) IBOutlet MXKImageView *avatarImageView; -@property (weak, nonatomic) IBOutlet UIView *directRoomBorderView; @property (weak, nonatomic) IBOutlet UIImageView *encryptedRoomIcon; @property (weak, nonatomic) IBOutlet UILabel *titleLabel; diff --git a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.m b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.m index 81d51cb33..cf6fcaee2 100644 --- a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.m +++ b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.m @@ -22,11 +22,6 @@ #import "MXRoomSummary+Riot.h" -#pragma mark - Defines & Constants - -static const CGFloat kDirectRoomBorderColorAlpha = 0.75; -static const CGFloat kDirectRoomBorderWidth = 3.0; - @implementation RoomTableViewCell #pragma mark - Class methods @@ -37,16 +32,6 @@ static const CGFloat kDirectRoomBorderWidth = 3.0; self.titleLabel.textColor = ThemeService.shared.theme.textPrimaryColor; - // Prepare direct room border - CGColorRef directRoomBorderColor = CGColorCreateCopyWithAlpha(ThemeService.shared.theme.tintColor.CGColor, kDirectRoomBorderColorAlpha); - - [self.directRoomBorderView.layer setCornerRadius:self.directRoomBorderView.frame.size.width / 2]; - self.directRoomBorderView.clipsToBounds = YES; - self.directRoomBorderView.layer.borderColor = directRoomBorderColor; - self.directRoomBorderView.layer.borderWidth = kDirectRoomBorderWidth; - - CFRelease(directRoomBorderColor); - self.avatarImageView.defaultBackgroundColor = [UIColor clearColor]; } @@ -64,15 +49,6 @@ static const CGFloat kDirectRoomBorderWidth = 3.0; [room.summary setRoomAvatarImageIn:self.avatarImageView]; self.titleLabel.text = room.summary.displayname; - - self.directRoomBorderView.hidden = !room.isDirect; -} - -- (void)prepareForReuse -{ - [super prepareForReuse]; - - self.directRoomBorderView.hidden = YES; } + (CGFloat)cellHeight diff --git a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.xib b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.xib index 633ae0a98..b4ac6e718 100644 --- a/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.xib +++ b/Riot/Modules/Contacts/Details/Views/RoomTableViewCell.xib @@ -1,11 +1,9 @@ - - - - + + - + @@ -14,8 +12,8 @@ - - + + @@ -23,19 +21,12 @@ - + - - - + diff --git a/Riot/Modules/Home/Views/RoomCollectionViewCell.h b/Riot/Modules/Home/Views/RoomCollectionViewCell.h index fd5c93afc..439cf0527 100644 --- a/Riot/Modules/Home/Views/RoomCollectionViewCell.h +++ b/Riot/Modules/Home/Views/RoomCollectionViewCell.h @@ -36,7 +36,6 @@ @property (weak, nonatomic) IBOutlet UIView *editionArrowView; -@property (weak, nonatomic) IBOutlet UIView *directRoomBorderView; @property (weak, nonatomic) IBOutlet MXKImageView *roomAvatar; @property (weak, nonatomic) IBOutlet UIImageView *encryptedRoomIcon; diff --git a/Riot/Modules/Home/Views/RoomCollectionViewCell.m b/Riot/Modules/Home/Views/RoomCollectionViewCell.m index 1c53b20e2..33b263a80 100644 --- a/Riot/Modules/Home/Views/RoomCollectionViewCell.m +++ b/Riot/Modules/Home/Views/RoomCollectionViewCell.m @@ -26,11 +26,6 @@ #import "MXTools.h" -#pragma mark - Defines & Constants - -static const CGFloat kDirectRoomBorderColorAlpha = 0.75; -static const CGFloat kDirectRoomBorderWidth = 3.0; - @implementation RoomCollectionViewCell #pragma mark - Class methods @@ -67,16 +62,6 @@ static const CGFloat kDirectRoomBorderWidth = 3.0; self.roomTitle1.textColor = ThemeService.shared.theme.textPrimaryColor; self.roomTitle2.textColor = ThemeService.shared.theme.textPrimaryColor; - // Prepare direct room border - CGColorRef directRoomBorderColor = CGColorCreateCopyWithAlpha(ThemeService.shared.theme.tintColor.CGColor, kDirectRoomBorderColorAlpha); - - [self.directRoomBorderView.layer setCornerRadius:self.directRoomBorderView.frame.size.width / 2]; - self.directRoomBorderView.clipsToBounds = YES; - self.directRoomBorderView.layer.borderColor = directRoomBorderColor; - self.directRoomBorderView.layer.borderWidth = kDirectRoomBorderWidth; - - CFRelease(directRoomBorderColor); - self.editionArrowView.backgroundColor = ThemeService.shared.theme.headerBackgroundColor; self.roomAvatar.defaultBackgroundColor = [UIColor clearColor]; @@ -145,8 +130,6 @@ static const CGFloat kDirectRoomBorderWidth = 3.0; } - self.directRoomBorderView.hidden = !roomCellData.roomSummary.room.isDirect; - [roomCellData.roomSummary setRoomAvatarImageIn:self.roomAvatar]; } } diff --git a/Riot/Modules/Home/Views/RoomCollectionViewCell.xib b/Riot/Modules/Home/Views/RoomCollectionViewCell.xib index 837d0de4e..83b28104b 100644 --- a/Riot/Modules/Home/Views/RoomCollectionViewCell.xib +++ b/Riot/Modules/Home/Views/RoomCollectionViewCell.xib @@ -1,9 +1,9 @@ - + - + @@ -24,16 +24,8 @@ - - + - + From 67cd381c4a81015c8045ead36b17df4653eac5cc Mon Sep 17 00:00:00 2001 From: Doug Date: Fri, 6 Aug 2021 12:09:08 +0100 Subject: [PATCH 46/87] Update CHANGES.rst. --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 65f5aa0ba..d645fa3cf 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -10,6 +10,7 @@ Changes to be released in next version * VoIP: Text & icon changes on call tiles (#4642). * Voice messages: Stop recording and go into locked mode when the application becomes inactive (#4656) * Voice messages: Allow voice message playback control from the iOS lock screen and control center (#4655) + * Room: Remove the green border from direct message room avatars (#4520). 🐛 Bugfix * From 50b1a5516d380a0efb266ca57a656f79db0d4fa3 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Fri, 6 Aug 2021 12:16:57 +0300 Subject: [PATCH 47/87] Fixes voice message audio quality. --- .../Room/VoiceMessages/VoiceMessageAudioConverter.swift | 4 ++-- .../Room/VoiceMessages/VoiceMessageAudioRecorder.swift | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift index 3d4ef1df6..c6ca771be 100644 --- a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift +++ b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift @@ -24,12 +24,12 @@ enum VoiceMessageAudioConverterError: Error { struct VoiceMessageAudioConverter { static func convertToOpusOgg(sourceURL: URL, destinationURL: URL, completion: @escaping (Result) -> Void) { - let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a libopus \"\(destinationURL.path)\"" + let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a libopus -b:a -b:a 24k \"\(destinationURL.path)\"" executeCommand(command, completion: completion) } static func convertToMPEG4AAC(sourceURL: URL, destinationURL: URL, completion: @escaping (Result) -> Void) { - let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a aac_at -b:a 192k \"\(destinationURL.path)\"" + let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a aac_at \"\(destinationURL.path)\"" executeCommand(command, completion: completion) } diff --git a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioRecorder.swift b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioRecorder.swift index 76043f073..c1fb0a5a9 100644 --- a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioRecorder.swift +++ b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioRecorder.swift @@ -51,7 +51,8 @@ class VoiceMessageAudioRecorder: NSObject, AVAudioRecorderDelegate { func recordWithOutputURL(_ url: URL) { let settings = [AVFormatIDKey: Int(kAudioFormatMPEG4AAC), - AVSampleRateKey: 12000, + AVSampleRateKey: 48000, + AVEncoderBitRateKey: 128000, AVNumberOfChannelsKey: 1, AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue] From a19aea00e817e242c56a37676445bdd6b0cdee26 Mon Sep 17 00:00:00 2001 From: Stefan Ceriu Date: Fri, 6 Aug 2021 12:18:10 +0300 Subject: [PATCH 48/87] Remove labs setting for voice messages, enable the feature by default. Fixed incorrect ffmpeg arguments. --- CHANGES.rst | 2 ++ Config/BuildSettings.swift | 4 ---- Riot/Managers/Settings/RiotSettings.swift | 10 ---------- .../Views/InputToolbar/RoomInputToolbarView.m | 18 +----------------- .../VoiceMessageAudioConverter.swift | 2 +- Riot/Modules/Settings/SettingsViewController.m | 18 ------------------ 6 files changed, 4 insertions(+), 50 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 65f5aa0ba..4109d36bb 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -10,6 +10,8 @@ Changes to be released in next version * VoIP: Text & icon changes on call tiles (#4642). * Voice messages: Stop recording and go into locked mode when the application becomes inactive (#4656) * Voice messages: Allow voice message playback control from the iOS lock screen and control center (#4655) + * Voice messages: Improve audio recording quality + * Voice messages: Remove labs setting and enable them by default 🐛 Bugfix * diff --git a/Config/BuildSettings.swift b/Config/BuildSettings.swift index ed613fa9b..85f25282a 100644 --- a/Config/BuildSettings.swift +++ b/Config/BuildSettings.swift @@ -309,10 +309,6 @@ final class BuildSettings: NSObject { static let messageDetailsAllowCopyMedia: Bool = true static let messageDetailsAllowPasteMedia: Bool = true - // MARK: - Voice Message - - static let voiceMessagesEnabled = false - // MARK: - Notifications static let decryptNotificationsByDefault: Bool = true diff --git a/Riot/Managers/Settings/RiotSettings.swift b/Riot/Managers/Settings/RiotSettings.swift index 7d41bc4df..2b60b3123 100644 --- a/Riot/Managers/Settings/RiotSettings.swift +++ b/Riot/Managers/Settings/RiotSettings.swift @@ -52,7 +52,6 @@ final class RiotSettings: NSObject { static let roomCreationScreenRoomIsPublic = "roomCreationScreenRoomIsPublic" static let allowInviteExernalUsers = "allowInviteExernalUsers" static let enableRingingForGroupCalls = "enableRingingForGroupCalls" - static let enableVoiceMessages = "enableVoiceMessages" static let roomSettingsScreenShowLowPriorityOption = "roomSettingsScreenShowLowPriorityOption" static let roomSettingsScreenShowDirectChatOption = "roomSettingsScreenShowDirectChatOption" static let roomSettingsScreenAllowChangingAccessSettings = "roomSettingsScreenAllowChangingAccessSettings" @@ -96,7 +95,6 @@ final class RiotSettings: NSObject { private override init() { super.init() - defaults.register(defaults: [UserDefaultsKeys.enableVoiceMessages: BuildSettings.voiceMessagesEnabled]) } // MARK: Servers @@ -221,14 +219,6 @@ final class RiotSettings: NSObject { } } - var enableVoiceMessages: Bool { - get { - return defaults.bool(forKey: UserDefaultsKeys.enableVoiceMessages) - } set { - defaults.set(newValue, forKey: UserDefaultsKeys.enableVoiceMessages) - } - } - // MARK: Calls /// Indicate if `allowStunServerFallback` settings has been set once. diff --git a/Riot/Modules/Room/Views/InputToolbar/RoomInputToolbarView.m b/Riot/Modules/Room/Views/InputToolbar/RoomInputToolbarView.m index 2234cbf9a..1ebe7f099 100644 --- a/Riot/Modules/Room/Views/InputToolbar/RoomInputToolbarView.m +++ b/Riot/Modules/Room/Views/InputToolbar/RoomInputToolbarView.m @@ -82,10 +82,6 @@ const CGFloat kComposerContainerTrailingPadding = 12; - (void)setVoiceMessageToolbarView:(UIView *)voiceMessageToolbarView { - if (RiotSettings.shared.enableVoiceMessages == NO) { - return; - } - _voiceMessageToolbarView = voiceMessageToolbarView; self.voiceMessageToolbarView.translatesAutoresizingMaskIntoConstraints = NO; [self addSubview:self.voiceMessageToolbarView]; @@ -407,10 +403,7 @@ const CGFloat kComposerContainerTrailingPadding = 12; [UIView animateWithDuration:kActionMenuContentAlphaAnimationDuration delay:_actionMenuOpened ? 0 : .1 options:UIViewAnimationOptionCurveEaseIn animations:^{ self->messageComposerContainer.alpha = actionMenuOpened ? 0 : 1; self.rightInputToolbarButton.alpha = self->growingTextView.text.length == 0 || actionMenuOpened ? 0 : 1; - if (RiotSettings.shared.enableVoiceMessages) - { - self.voiceMessageToolbarView.alpha = self->growingTextView.text.length > 0 || actionMenuOpened ? 0 : 1; - } + self.voiceMessageToolbarView.alpha = self->growingTextView.text.length > 0 || actionMenuOpened ? 0 : 1; } completion:nil]; [UIView animateWithDuration:kActionMenuComposerHeightAnimationDuration animations:^{ @@ -442,16 +435,7 @@ const CGFloat kComposerContainerTrailingPadding = 12; - (void)updateUIWithTextMessage:(NSString *)textMessage animated:(BOOL)animated { self.actionMenuOpened = NO; - - if (RiotSettings.shared.enableVoiceMessages == NO) { - self.rightInputToolbarButton.alpha = textMessage.length ? 1.0f : 0.0f; - self.messageComposerContainerTrailingConstraint.constant = (textMessage.length ? self.frame.size.width - self.rightInputToolbarButton.frame.origin.x : 0.0f) + kComposerContainerTrailingPadding; - - [self layoutIfNeeded]; - return; - } - [UIView animateWithDuration:(animated ? 0.15f : 0.0f) animations:^{ self.rightInputToolbarButton.alpha = textMessage.length ? 1.0f : 0.0f; self.voiceMessageToolbarView.alpha = textMessage.length ? 0.0f : 1.0; diff --git a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift index c6ca771be..0c521b1b8 100644 --- a/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift +++ b/Riot/Modules/Room/VoiceMessages/VoiceMessageAudioConverter.swift @@ -24,7 +24,7 @@ enum VoiceMessageAudioConverterError: Error { struct VoiceMessageAudioConverter { static func convertToOpusOgg(sourceURL: URL, destinationURL: URL, completion: @escaping (Result) -> Void) { - let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a libopus -b:a -b:a 24k \"\(destinationURL.path)\"" + let command = "-hide_banner -y -i \"\(sourceURL.path)\" -c:a libopus -b:a 24k \"\(destinationURL.path)\"" executeCommand(command, completion: completion) } diff --git a/Riot/Modules/Settings/SettingsViewController.m b/Riot/Modules/Settings/SettingsViewController.m index 7f40c9ded..29765dd4a 100644 --- a/Riot/Modules/Settings/SettingsViewController.m +++ b/Riot/Modules/Settings/SettingsViewController.m @@ -144,7 +144,6 @@ enum enum { LABS_ENABLE_RINGING_FOR_GROUP_CALLS_INDEX = 0, - LABS_ENABLE_VOICE_MESSAGES = 1 }; enum @@ -495,7 +494,6 @@ TableViewSectionsDelegate> { Section *sectionLabs = [Section sectionWithTag:SECTION_TAG_LABS]; [sectionLabs addRowWithTag:LABS_ENABLE_RINGING_FOR_GROUP_CALLS_INDEX]; - [sectionLabs addRowWithTag:LABS_ENABLE_VOICE_MESSAGES]; sectionLabs.headerTitle = NSLocalizedStringFromTable(@"settings_labs", @"Vector", nil); if (sectionLabs.hasAnyRows) { @@ -2315,17 +2313,6 @@ TableViewSectionsDelegate> [labelAndSwitchCell.mxkSwitch addTarget:self action:@selector(toggleEnableRingingForGroupCalls:) forControlEvents:UIControlEventValueChanged]; - cell = labelAndSwitchCell; - } else if (row == LABS_ENABLE_VOICE_MESSAGES) - { - MXKTableViewCellWithLabelAndSwitch *labelAndSwitchCell = [self getLabelAndSwitchCell:tableView forIndexPath:indexPath]; - - labelAndSwitchCell.mxkLabel.text = NSLocalizedStringFromTable(@"settings_labs_voice_messages", @"Vector", nil); - labelAndSwitchCell.mxkSwitch.on = RiotSettings.shared.enableVoiceMessages; - labelAndSwitchCell.mxkSwitch.onTintColor = ThemeService.shared.theme.tintColor; - - [labelAndSwitchCell.mxkSwitch addTarget:self action:@selector(toggleEnableVoiceMessages:) forControlEvents:UIControlEventValueChanged]; - cell = labelAndSwitchCell; } } @@ -3034,11 +3021,6 @@ TableViewSectionsDelegate> RiotSettings.shared.enableRingingForGroupCalls = sender.isOn; } -- (void)toggleEnableVoiceMessages:(UISwitch *)sender -{ - RiotSettings.shared.enableVoiceMessages = sender.isOn; -} - - (void)togglePinRoomsWithMissedNotif:(UISwitch *)sender { RiotSettings.shared.pinRoomsWithMissedNotificationsOnHome = sender.isOn; From 55e49a79aa98ec024688d676b4f8c5dd1081e14d Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Fri, 6 Aug 2021 16:19:53 +0300 Subject: [PATCH 49/87] New strings --- Riot/Assets/en.lproj/Vector.strings | 3 ++- Riot/Generated/Strings.swift | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 4193d23ca..e46028bc4 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -848,7 +848,8 @@ Tap the + to start adding people."; "event_formatter_message_edited_mention" = "(edited)"; "event_formatter_call_connecting" = "Connecting…"; "event_formatter_call_ringing" = "Ringing…"; -"event_formatter_call_has_ended" = "Call ended %@"; +"event_formatter_call_has_ended" = "Call ended"; +"event_formatter_call_has_ended_with_time" = "Call ended • %@"; "event_formatter_call_incoming_voice" = "Incoming voice call"; "event_formatter_call_incoming_video" = "Incoming video call"; "event_formatter_call_active_voice" = "Active voice call"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 3598c2003..680cd7848 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -1274,9 +1274,13 @@ internal enum VectorL10n { internal static var eventFormatterCallEndCall: String { return VectorL10n.tr("Vector", "event_formatter_call_end_call") } - /// Call ended %@ - internal static func eventFormatterCallHasEnded(_ p1: String) -> String { - return VectorL10n.tr("Vector", "event_formatter_call_has_ended", p1) + /// Call ended + internal static var eventFormatterCallHasEnded: String { + return VectorL10n.tr("Vector", "event_formatter_call_has_ended") + } + /// Call ended • %@ + internal static func eventFormatterCallHasEndedWithTime(_ p1: String) -> String { + return VectorL10n.tr("Vector", "event_formatter_call_has_ended_with_time", p1) } /// Incoming video call internal static var eventFormatterCallIncomingVideo: String { From 01d8d55d51241a9c003fee2c2ba8d3c1383c4c6a Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Fri, 6 Aug 2021 16:20:10 +0300 Subject: [PATCH 50/87] Use new strings for ended calls --- .../RoomDirectCallStatusBubbleCell.swift | 28 ++++++++++++------- .../Group/RoomGroupCallStatusBubbleCell.swift | 14 ++++++++-- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/Riot/Modules/Room/Views/BubbleCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift b/Riot/Modules/Room/Views/BubbleCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift index 8ed4af78f..103296014 100644 --- a/Riot/Modules/Room/Views/BubbleCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift +++ b/Riot/Modules/Room/Views/BubbleCells/Call/Direct/RoomDirectCallStatusBubbleCell.swift @@ -220,27 +220,27 @@ class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { .remoteHangup, .answeredElseWhere: viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() case .missed: if call.isIncoming { viewState = .missed statusText = isVideoCall ? VectorL10n.eventFormatterCallMissedVideo : VectorL10n.eventFormatterCallMissedVoice } else { - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() } case .busy: configureForRejectedCall(call: call) @unknown default: viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() } case .inviteExpired, .answeredElseWhere: viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() @unknown default: viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() } } @@ -261,21 +261,21 @@ class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { statusText = VectorL10n.eventFormatterCallYouDeclined } else { viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() } } private func configureForHangupCall(withEvent event: MXEvent) { guard let hangupEventContent = MXCallHangupEventContent(fromJSON: event.content) else { viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() return } switch hangupEventContent.reasonType { case .userHangup: viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() default: viewState = .failed statusText = VectorL10n.eventFormatterCallConnectionFailed @@ -290,7 +290,15 @@ class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { } else { // outgoing unanswered call viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() + } + } + + private func updateStatusTextForEndedCall() { + if callDurationString.count > 0 { + statusText = VectorL10n.eventFormatterCallHasEndedWithTime(callDurationString) + } else { + statusText = VectorL10n.eventFormatterCallHasEnded } } @@ -404,7 +412,7 @@ class RoomDirectCallStatusBubbleCell: RoomBaseCallBubbleCell { // there is no reject or hangup event, we can just say this call has ended viewState = .ended - statusText = VectorL10n.eventFormatterCallHasEnded(callDurationString) + updateStatusTextForEndedCall() return } diff --git a/Riot/Modules/Room/Views/BubbleCells/Call/Group/RoomGroupCallStatusBubbleCell.swift b/Riot/Modules/Room/Views/BubbleCells/Call/Group/RoomGroupCallStatusBubbleCell.swift index e7a74a70b..2a37dccf6 100644 --- a/Riot/Modules/Room/Views/BubbleCells/Call/Group/RoomGroupCallStatusBubbleCell.swift +++ b/Riot/Modules/Room/Views/BubbleCells/Call/Group/RoomGroupCallStatusBubbleCell.swift @@ -158,6 +158,14 @@ class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { } } + private func updateStatusTextForEndedCall() { + if callDurationString.count > 0 { + statusText = VectorL10n.eventFormatterCallHasEndedWithTime(callDurationString) + } else { + statusText = VectorL10n.eventFormatterCallHasEnded + } + } + // MARK: - Actions @objc @@ -265,7 +273,7 @@ class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { in: room, with: roomState) else { self.viewState = .ended - self.statusText = VectorL10n.eventFormatterCallHasEnded(self.callDurationString) + self.updateStatusTextForEndedCall() return } @@ -277,7 +285,7 @@ class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { guard let widget = widgets.first(where: { $0.widgetId == widgetId }) else { self.viewState = .ended - self.statusText = VectorL10n.eventFormatterCallHasEnded(self.callDurationString) + self.updateStatusTextForEndedCall() return } @@ -301,7 +309,7 @@ class RoomGroupCallStatusBubbleCell: RoomBaseCallBubbleCell { } } else { self.viewState = .ended - self.statusText = VectorL10n.eventFormatterCallHasEnded(self.callDurationString) + self.updateStatusTextForEndedCall() } } } From 5b8ca9f448c058e9cd052808e9124ee19fd80d0f Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Fri, 6 Aug 2021 16:21:24 +0300 Subject: [PATCH 51/87] Update CHANGES.rst --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 4109d36bb..78d4b4692 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -12,6 +12,7 @@ Changes to be released in next version * Voice messages: Allow voice message playback control from the iOS lock screen and control center (#4655) * Voice messages: Improve audio recording quality * Voice messages: Remove labs setting and enable them by default + * VoIP: Additional changes on call tiles (#4642). 🐛 Bugfix * From 7a77710e7ddc4379191d1045bb7093aff02737c2 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Fri, 6 Aug 2021 15:18:11 +0100 Subject: [PATCH 52/87] Update INSTALL.md Add references to AppIdentifiers.xcconfig. --- INSTALL.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index ca983508a..f15b41281 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -77,7 +77,14 @@ Every time you change the `$matrixKitVersion` variable in the `Podfile`, you hav ## Build -## Generate Xcode project +### Configure project + +You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the bundle identifier, application group identifier and app name in the `Config/AppIdentifiers.xcconfig` file to your new identifiers. + +More advanced build configuration can be found in the `project.yml` file and each target has a `target.yml` file in its respective folder. + + +### Generate Xcode project In order to get rid of git conflicts, the `Riot.xcodeproj` is not pushed into the git repository anymore but generated using `XcodeGen`. To generate the `xcodeproj` file simply run the following command line from the root folder : @@ -117,12 +124,6 @@ $ open Riot.xcworkspace **Note**: If you have multiple Xcode versions installed don't forget to use the right version of Command Line Tools when you are building the app. To check the Command Line Tools version go to `Xcode > Preferences > Locations > Command Line Tools` and check that the displayed version match your Xcode version. -### Configure project - -You may need to change the bundle identifier and app group identifier to be unique to get Xcode to build the app. Make sure to change the bundle identifier, application group identifier and app name in the `project.yml` file to your new identifiers. - -Each target has its own YAML file in the folder Targets folder. - ## Generate IPA From df58f71e38c8384fa103a13e633762c348b78b71 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Fri, 6 Aug 2021 15:20:12 +0100 Subject: [PATCH 53/87] Update CHANGES.rst --- CHANGES.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index f3d7a0603..39b26f327 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -27,7 +27,7 @@ Changes to be released in next version * Others - * + * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md Changes in 1.4.9 (2021-08-03) ================================================= From 230b3ecbd907be338d14ebe691ae1135fee008d3 Mon Sep 17 00:00:00 2001 From: jelv Date: Thu, 5 Aug 2021 08:16:48 +0000 Subject: [PATCH 54/87] Translated using Weblate (Dutch) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/nl/ --- Riot/Assets/nl.lproj/Vector.strings | 260 ++++++++++++++-------------- 1 file changed, 133 insertions(+), 127 deletions(-) diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 06e3a5084..821a77b30 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -18,7 +18,7 @@ "title_home" = "Thuis"; "title_favourites" = "Favorieten"; "title_people" = "Personen"; -"title_rooms" = "Gesprekken"; +"title_rooms" = "Kamers"; "warning" = "Waarschuwing"; // Actions "view" = "Weergeven"; @@ -84,18 +84,18 @@ "auth_msisdn_validation_title" = "Verificatie in afwachting"; "auth_msisdn_validation_message" = "We hebben een sms met een activatiecode gestuurd. Voer deze code hieronder in."; "auth_msisdn_validation_error" = "Kan het telefoonnummer niet verifiëren."; -"auth_recaptcha_message" = "Deze thuisserver wil er graag zeker van zijn dat u geen robot bent"; +"auth_recaptcha_message" = "Deze server wil er graag zeker van zijn dat u geen robot bent"; "auth_reset_password_message" = "Voer het e-mailadres dat met uw account verbonden is in om uw wachtwoord opnieuw in te stellen:"; "auth_reset_password_missing_email" = "Het e-mailadres dat met uw account verbonden is moet ingevoerd worden."; "auth_reset_password_missing_password" = "Er moet een nieuw wachtwoord ingevoerd worden."; "auth_reset_password_email_validation_message" = "Er is een e-mail naar %@ gestuurd. Klik hieronder zodra u de koppeling erin hebt gevolgd."; "auth_reset_password_next_step_button" = "Ik heb mijn e-mailadres geverifieerd"; "auth_reset_password_error_unauthorized" = "Verifiëren van e-mailadres is mislukt: wees er zeker van dat u op de koppeling in de e-mail hebt getikt"; -"auth_reset_password_error_not_found" = "Het ziet er niet naar uit dat uw e-mailadres met een Matrix-ID op deze thuisserver is verbonden."; +"auth_reset_password_error_not_found" = "Het ziet er niet naar uit dat uw e-mailadres met een Matrix-ID is verbonden op deze server."; "auth_reset_password_success_message" = "Uw wachtwoord is opnieuw ingesteld.\n\nU bent op alle apparaten afgemeld en u zult geen pushmeldingen meer ontvangen. Om meldingen weer in te schakelen, meldt u zich op elk apparaat opnieuw aan."; "auth_add_email_and_phone_warning" = "Registratie met e-mailadres en telefoonnummer tegelijkertijd wordt, totdat de API bestaat, nog niet ondersteund. Alleen het telefoonnummer zal worden gebruikt. U kunt uw e-mailadres later aan uw profiel in de instellingen toevoegen."; // Chat creation -"room_creation_title" = "Nieuw gesprek"; +"room_creation_title" = "Nieuwe chat"; "room_creation_account" = "Account"; "room_creation_appearance" = "Uiterlijk"; "room_creation_appearance_name" = "Naam"; @@ -108,29 +108,29 @@ "room_creation_make_public_prompt_msg" = "Weet u zeker dat u dit gesprek publiek wilt maken? Iedereen kan uw berichten lezen en aan het gesprek deelnemen."; "room_creation_keep_private" = "Privé houden"; "room_creation_make_private" = "Privé maken"; -"room_creation_wait_for_creation" = "Er wordt al een gesprek aangemaakt. Even geduld."; +"room_creation_wait_for_creation" = "Er wordt al een kamer aangemaakt. Even geduld."; "room_creation_invite_another_user" = "Zoeken/uitnodigen met gebruikers-ID, naam of e-mailadres"; // Room recents -"room_recents_directory_section" = "GESPREKSCATALOGUS"; +"room_recents_directory_section" = "KAMERGIDS"; "room_recents_favourites_section" = "FAVORIETEN"; "room_recents_people_section" = "PERSONEN"; -"room_recents_conversations_section" = "GESPREKKEN"; -"room_recents_no_conversation" = "Geen gesprekken"; +"room_recents_conversations_section" = "KAMERS"; +"room_recents_no_conversation" = "Geen kamers"; "room_recents_low_priority_section" = "LAGE PRIORITEIT"; "room_recents_invites_section" = "UITNODIGINGEN"; "room_recents_start_chat_with" = "Gesprek beginnen"; -"room_recents_create_empty_room" = "Gesprek aanmaken"; -"room_recents_join_room" = "Gesprek toetreden"; -"room_recents_join_room_title" = "Neem aan een gesprek deel"; -"room_recents_join_room_prompt" = "Voer een gespreks(bij)naam in"; +"room_recents_create_empty_room" = "Kamer aanmaken"; +"room_recents_join_room" = "Kamer toetreden"; +"room_recents_join_room_title" = "Kamer toetreden"; +"room_recents_join_room_prompt" = "Voer een kamer-ID of kameralias in"; // People tab "people_invites_section" = "UITNODIGINGEN"; "people_conversation_section" = "GESPREKKEN"; "people_no_conversation" = "Geen gesprekken"; // Rooms tab -"room_directory_no_public_room" = "Geen publieke gesprekken beschikbaar"; +"room_directory_no_public_room" = "Geen publieke kamers beschikbaar"; // Search -"search_rooms" = "Gesprekken"; +"search_rooms" = "Kamers"; "search_messages" = "Berichten"; "search_people" = "Personen"; "search_files" = "Bestanden"; @@ -139,7 +139,7 @@ "search_no_result" = "Geen resultaten"; // Directory "directory_cell_title" = "Bladeren door de catalogus"; -"directory_cell_description" = "%tu gesprekken"; +"directory_cell_description" = "%tu kamers"; "directory_search_results_title" = "Bladeren door catalogusresultaten"; "directory_search_results" = "%tu resultaten gevonden voor %@"; "directory_search_results_more_than" = ">%tu resultaten gevonden voor %@"; @@ -156,14 +156,14 @@ "room_participants_add_participant" = "Deelnemer toevoegen"; "room_participants_one_participant" = "1 deelnemer"; "room_participants_multi_participants" = "%d deelnemers"; -"room_participants_leave_prompt_title" = "Gesprek verlaten"; -"room_participants_leave_prompt_msg" = "Weet u zeker dat u het gesprek wilt verlaten?"; +"room_participants_leave_prompt_title" = "Kamer verlaten"; +"room_participants_leave_prompt_msg" = "Weet u zeker dat u de kamer wilt verlaten?"; "room_participants_remove_prompt_title" = "Bevestiging"; "room_participants_remove_prompt_msg" = "Weet u zeker dat u %@ uit dit gesprek wilt verwijderen?"; "room_participants_remove_third_party_invite_msg" = "Verwijderen van uitnodigingen door derde partijen wordt, totdat de API bestaat, nog niet ondersteund"; "room_participants_invite_prompt_title" = "Bevestiging"; "room_participants_invite_prompt_msg" = "Weet u zeker dat u %@ in dit gesprek wilt uitnodigen?"; -"room_participants_filter_room_members" = "Filter gespreksleden"; +"room_participants_filter_room_members" = "Kamerleden filteren"; "room_participants_invite_another_user" = "Zoeken/uitnodigen met gebruikers-ID, naam of e-mailadres"; "room_participants_invite_malformed_id_title" = "Uitnodigingsfout"; "room_participants_invite_malformed_id" = "Ongeldige ID. Dit zou een e-mailadres of een Matrix-ID zoals ‘@gebruikersnaam:domein’ moeten zijn"; @@ -179,9 +179,9 @@ "room_participants_action_section_devices" = "Apparaten"; "room_participants_action_section_other" = "Overige"; "room_participants_action_invite" = "Uitnodigen"; -"room_participants_action_leave" = "Dit gesprek verlaten"; -"room_participants_action_remove" = "Verwijderen uit dit gesprek"; -"room_participants_action_ban" = "Verbannen uit dit gesprek"; +"room_participants_action_leave" = "Deze kamer verlaten"; +"room_participants_action_remove" = "Verwijderen uit deze kamer"; +"room_participants_action_ban" = "Verbannen uit deze kamer"; "room_participants_action_unban" = "Ontbannen"; "room_participants_action_ignore" = "Alle berichten van deze gebruiker verbergen"; "room_participants_action_unignore" = "Alle berichten van deze gebruiker tonen"; @@ -226,28 +226,28 @@ "room_event_action_cancel_upload" = "Uploaden annuleren"; "room_event_action_cancel_download" = "Downloaden annuleren"; "room_event_action_view_encryption" = "Versleutelingsinformatie"; -"room_warning_about_encryption" = "Eind-tot-eindversleuteling is in bèta en kan onbetrouwbaar zijn.\n\nHet is beter om het nog niet met gevoelige gegevens te vertrouwen.\n\nApparaten kunnen de geschiedenis van vóór ze het gesprek betraden nog niet ontsleutelen.\n\nVersleutelde berichten zullen niet zichtbaar zijn op cliënten die nog geen versleuteling ondersteunen."; +"room_warning_about_encryption" = "Eind-tot-eindversleuteling is in bèta en kan onbetrouwbaar zijn.\n\nHet is beter om het nog niet met gevoelige gegevens te vertrouwen.\n\nApparaten kunnen de geschiedenis van vóór ze de kamer betraden nog niet ontsleutelen.\n\nVersleutelde berichten zullen niet zichtbaar zijn op cliënten die nog geen versleuteling ondersteunen."; // Unknown devices -"unknown_devices_alert_title" = "Gesprek bevat onbekende sessies"; -"unknown_devices_alert" = "Dit gesprek bevat onbekende apparaten die niet geverifieerd zijn.\nDit betekent dat er geen garantie is dat de apparaten bij de gebruikers horen waarbij ze beweren te horen.\nWe raden u aan om bij elk apparaat door het verificatieproces heen te gaan voordat u verdergaat, maar u kunt het bericht ook zonder verificatie opnieuw versturen."; +"unknown_devices_alert_title" = "Kamer bevat onbekende sessies"; +"unknown_devices_alert" = "Deze kamer bevat onbekende apparaten die niet geverifieerd zijn.\nDit betekent dat er geen garantie is dat de apparaten bij de personen horen waarbij ze beweren te horen.\nWe raden u aan om bij elk apparaat door het verificatieproces heen te gaan voordat u verdergaat, maar u kunt het bericht ook zonder verificatie opnieuw versturen."; "unknown_devices_send_anyway" = "Alsnog versturen"; "unknown_devices_call_anyway" = "Alsnog bellen"; "unknown_devices_answer_anyway" = "Alsnog beantwoorden"; "unknown_devices_verify" = "Verifiëren…"; "unknown_devices_title" = "Onbekende apparaten"; // Room Title -"room_title_new_room" = "Nieuw gesprek"; +"room_title_new_room" = "Nieuwe kamer"; "room_title_multiple_active_members" = "%@/%@ actieve leden"; "room_title_one_active_member" = "%@/%@ actief lid"; "room_title_invite_members" = "Leden uitnodigen"; "room_title_members" = "%@ leden"; "room_title_one_member" = "1 lid"; // Room Preview -"room_preview_invitation_format" = "U bent door %@ uitgenodigd om dit gesprek toe te treden"; -"room_preview_subtitle" = "Dit is een voorvertoning van dit gesprek. Gespreksinteracties zijn uitgeschakeld."; +"room_preview_invitation_format" = "U bent door %@ uitgenodigd om deze kamer toe te treden"; +"room_preview_subtitle" = "Dit is een voorvertoning van deze kamer. Kamerinteracties zijn uitgeschakeld."; "room_preview_unlinked_email_warning" = "Deze uitnodiging is naar %@ verstuurd, maar dat is niet geassocieerd met deze account. U kunt zich met een andere account aanmelden, of dit e-mailadres aan deze account toevoegen."; "room_preview_try_join_an_unknown_room" = "U probeert toegang te verkrijgen tot %@. Zou u willen toetreden om aan het gesprek deel te nemen?"; -"room_preview_try_join_an_unknown_room_default" = "een gesprek"; +"room_preview_try_join_an_unknown_room_default" = "een kamer"; // Settings "settings_title" = "Instellingen"; "account_logout_all" = "Alle accounts afmelden"; @@ -255,7 +255,7 @@ "settings_mark_all_as_read" = "Alle berichten als gelezen markeren"; "settings_report_bug" = "Fout rapporteren"; "settings_clear_cache" = "Cache verwijderen"; -"settings_config_home_server" = "Thuisserver is %@"; +"settings_config_home_server" = "Server is %@"; "settings_config_identity_server" = "Identiteitsserver is %@"; "settings_config_user_id" = "Aangemeld als %@"; "settings_user_settings" = "GEBRUIKERSINSTELLINGEN"; @@ -269,7 +269,7 @@ "settings_cryptography" = "CRYPTOGRAFIE"; "settings_sign_out" = "Afmelden"; "settings_sign_out_confirmation" = "Weet u het zeker?"; -"settings_sign_out_e2e_warn" = "U zult uw sleutels voor eind-tot-eind-versleuteling kwijtraken. Dat betekent dat u op dit apparaat geen oude berichten in versleutelde gesprekken meer zult kunnen lezen."; +"settings_sign_out_e2e_warn" = "U zult uw sleutels voor eind-tot-eindversleuteling kwijtraken. Dat betekent dat u op dit apparaat geen oude berichten in versleutelde gesprekken meer zult kunnen lezen."; "settings_profile_picture" = "Profielfoto"; "settings_display_name" = "Weergavenaam"; "settings_first_name" = "Voornaam"; @@ -287,8 +287,8 @@ "settings_fail_to_update_profile" = "Bijwerken van profiel is mislukt"; "settings_enable_push_notif" = "Meldingen op dit apparaat"; "settings_global_settings_info" = "Globale meldingsinstellingen zijn beschikbaar op uw %@-webcliënt"; -"settings_pin_rooms_with_missed_notif" = "Gesprekken met gemiste meldingen vastprikken"; -"settings_pin_rooms_with_unread" = "Gesprekken met ongelezen berichten vastprikken"; +"settings_pin_rooms_with_missed_notif" = "Kamers met gemiste meldingen vastprikken"; +"settings_pin_rooms_with_unread" = "Kamers met ongelezen berichten vastprikken"; //"settings_enable_all_notif" = "Alle notificaties aanzetten"; //"settings_messages_my_display_name" = "Bericht dat mijn naam bevat"; //"settings_messages_my_user_name" = "Bericht dat mijn gebruikersnaam bevat"; @@ -322,71 +322,71 @@ "settings_crypto_export" = "Sleutels exporteren"; "settings_crypto_blacklist_unverified_devices" = "Alleen naar geverifieerde apparaten versleutelen"; // Room Details -"room_details_title" = "Gespreksdetails"; +"room_details_title" = "Kamerdetails"; "room_details_people" = "Leden"; "room_details_files" = "Bestanden"; "room_details_settings" = "Instellingen"; -"room_details_photo" = "Gespreksfoto"; -"room_details_room_name" = "Gespreksnaam"; +"room_details_photo" = "Kamerfoto"; +"room_details_room_name" = "Kamernaam"; "room_details_topic" = "Onderwerp"; "room_details_favourite_tag" = "Favoriet"; "room_details_low_priority_tag" = "Lage prioriteit"; "room_details_mute_notifs" = "Meldingen dempen"; -"room_details_access_section" = "Wie kan er tot dit gesprek toetreden?"; +"room_details_access_section" = "Wie kan er tot deze kamer toetreden?"; "room_details_access_section_invited_only" = "Alleen personen die zijn uitgenodigd"; -"room_details_access_section_anyone_apart_from_guest" = "Iedereen die de koppeling van het gesprek kent, behalve gasten"; -"room_details_access_section_anyone" = "Iedereen die de koppeling van het gesprek kent, inclusief gasten"; -"room_details_access_section_no_address_warning" = "Het gesprek moet een adres hebben om ernaar te verwijzen"; -"room_details_access_section_directory_toggle" = "Gesprek tonen in gesprekscatalogus"; +"room_details_access_section_anyone_apart_from_guest" = "Iedereen die het adres van deze kamer kent, behalve gasten"; +"room_details_access_section_anyone" = "Iedereen die het adres van deze kamer kent, inclusief gasten"; +"room_details_access_section_no_address_warning" = "De kamer moet een adres hebben om ernaar te verwijzen"; +"room_details_access_section_directory_toggle" = "Kamer tonen in de kamersgids"; "room_details_history_section" = "Wie kan er de geschiedenis lezen?"; "room_details_history_section_anyone" = "Iedereen"; "room_details_history_section_members_only" = "Alleen leden (vanaf het moment dat deze optie geselecteerd wordt)"; "room_details_history_section_members_only_since_invited" = "Alleen leden (vanaf het moment dat ze uitgenodigd zijn)"; "room_details_history_section_members_only_since_joined" = "Alleen leden (vanaf het moment dat ze toetreden)"; "room_details_history_section_prompt_title" = "Privacywaarschuwing"; -"room_details_history_section_prompt_msg" = "Veranderingen aan wie de geschiedenis kan lezen zullen alleen gelden voor toekomstige berichten in dit gesprek. De zichtbaarheid van de bestaande geschiedenis zal onveranderd blijven."; +"room_details_history_section_prompt_msg" = "Veranderingen aan wie de geschiedenis kan lezen zullen alleen gelden voor toekomstige berichten in deze kamer. De zichtbaarheid van de bestaande geschiedenis zal onveranderd blijven."; "room_details_addresses_section" = "Adressen"; -"room_details_no_local_addresses" = "Dit gesprek heeft geen lokale adressen"; +"room_details_no_local_addresses" = "Deze kamer heeft geen lokale adressen"; "room_details_new_address" = "Nieuw adres toevoegen"; "room_details_new_address_placeholder" = "Nieuw adres toevoegen (bv. #foo%@)"; "room_details_addresses_invalid_address_prompt_title" = "Ongeldig bijnaamformaat"; "room_details_addresses_invalid_address_prompt_msg" = "%@ is geen geldig formaat voor een bijnaam"; "room_details_addresses_disable_main_address_prompt_title" = "Hoofdadreswaarschuwing"; -"room_details_addresses_disable_main_address_prompt_msg" = "U heeft geen hoofdadres opgegeven. Het standaardhoofdadres voor dit gesprek zal willekeurig gekozen worden"; +"room_details_addresses_disable_main_address_prompt_msg" = "U heeft geen hoofdadres opgegeven. Het standaardhoofdadres voor deze kamer zal willekeurig gekozen worden"; "room_details_banned_users_section" = "Verbannen gebruikers"; "room_details_advanced_section" = "Geavanceerd"; -"room_details_advanced_room_id" = "Gespreks-ID:"; +"room_details_advanced_room_id" = "Kamer-ID:"; "room_details_advanced_enable_e2e_encryption" = "Versleuteling inschakelen (let op: dit kan niet meer worden uitgeschakeld!)"; -"room_details_advanced_e2e_encryption_enabled" = "Versleuteling is ingeschakeld in dit gesprek"; -"room_details_advanced_e2e_encryption_disabled" = "Versleuteling is niet ingeschakeld in dit gesprek."; +"room_details_advanced_e2e_encryption_enabled" = "Versleuteling is ingeschakeld in deze kamer"; +"room_details_advanced_e2e_encryption_disabled" = "Versleuteling is niet ingeschakeld in deze kamer."; "room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Alleen naar geverifieerde apparaten versleutelen"; "room_details_advanced_e2e_encryption_prompt_message" = "End-to-endbeveiliging is experimenteel en kan onbetrouwbaar zijn.\n\nHet is beter om het nog niet met gevoelige gegevens te vertrouwen.\n\nApparaten kunnen de geschiedenis van voordat ze de ruimte betraden nog niet ontsleutelen.\n\nZodra de versleuteling aan staat kan het (voorlopig) niet worden uitgezet.\n\nVersleutelde berichten zullen nog niet zichtbaar zijn op programma's die geen versleuteling ondersteunen."; -"room_details_fail_to_update_avatar" = "Bijwerken van gespreksfoto is mislukt"; -"room_details_fail_to_update_room_name" = "Bijwerken van gespreksnaam is mislukt"; +"room_details_fail_to_update_avatar" = "Bijwerken van kamerfoto is mislukt"; +"room_details_fail_to_update_room_name" = "Bijwerken van kamernaam is mislukt"; "room_details_fail_to_update_topic" = "Bijwerken van gespreksonderwerp is mislukt"; -"room_details_fail_to_update_room_guest_access" = "Bijwerken van gasttoegang tot gesprek is mislukt"; +"room_details_fail_to_update_room_guest_access" = "Bijwerken van gasttoegang voor kamer is mislukt"; "room_details_fail_to_update_room_join_rule" = "Bijwerken van toetredingsregel is mislukt"; -"room_details_fail_to_update_room_directory_visibility" = "Bijwerken van zichtbaarheid in de gesprekscatalogus is mislukt"; +"room_details_fail_to_update_room_directory_visibility" = "Bijwerken van zichtbaarheid in de kamersgids is mislukt"; "room_details_fail_to_update_history_visibility" = "Bijwerken van zichtbaarheid van geschiedenis is mislukt"; -"room_details_fail_to_add_room_aliases" = "Toevoegen van nieuwe gespreksadressen is mislukt"; -"room_details_fail_to_remove_room_aliases" = "Verwijderen van gespreksadressen is mislukt"; +"room_details_fail_to_add_room_aliases" = "Toevoegen van nieuwe kameradressen is mislukt"; +"room_details_fail_to_remove_room_aliases" = "Verwijderen van kameradressen is mislukt"; "room_details_fail_to_update_room_canonical_alias" = "Bijwerken van hoofdadres is mislukt"; -"room_details_fail_to_enable_encryption" = "Inschakelen van versleuteling in dit gesprek is mislukt"; +"room_details_fail_to_enable_encryption" = "Inschakelen van versleuteling in deze kamer is mislukt"; "room_details_save_changes_prompt" = "Wilt u de wijzigingen opslaan?"; "room_details_set_main_address" = "Instellen als hoofdadres"; "room_details_unset_main_address" = "Niet instellen als hoofdadres"; -"room_details_copy_room_id" = "Gespreks-ID kopiëren"; -"room_details_copy_room_address" = "Gespreksadres kopiëren"; -"room_details_copy_room_url" = "Gespreks-URL kopiëren"; +"room_details_copy_room_id" = "Kamer-ID kopiëren"; +"room_details_copy_room_address" = "Kameradres kopiëren"; +"room_details_copy_room_url" = "Kamer-URL kopiëren"; // Media picker "media_picker_library" = "Bibliotheek"; "media_picker_select" = "Selecteren"; // Directory "directory_title" = "Catalogus"; "directory_server_picker_title" = "Selecteer een catalogus"; -"directory_server_all_rooms" = "Alle gesprekken op server %@"; -"directory_server_all_native_rooms" = "Alle lokale Matrix-gesprekken"; -"directory_server_type_homeserver" = "Voer een thuisserver in om de publieke gesprekken ervan weer te geven"; +"directory_server_all_rooms" = "Alle kamers op server %@"; +"directory_server_all_native_rooms" = "Alle lokale Matrix-kamers"; +"directory_server_type_homeserver" = "Voer een server in om de publieke kamers ervan weer te geven"; "directory_server_placeholder" = "matrix.org"; // Others "or" = "of"; @@ -394,7 +394,7 @@ "today" = "Vandaag"; "yesterday" = "Gisteren"; "network_offline_prompt" = "Het ziet er naar uit dat de internetverbinding offline is."; -"public_room_section_title" = "Publieke gesprekken (op %@):"; +"public_room_section_title" = "Publieke kamers (op %@):"; "bug_report_prompt" = "De app is de vorige keer gecrasht. Wilt u een crashrapport indienen?"; "rage_shake_prompt" = "Het ziet er naar uit dat u de telefoon in frustratie schudt. Wilt u een foutmelding indienen?"; "camera_access_not_granted" = "%@ heeft geen toestemming om de camera te gebruiken, pas de privacy-instellingen aan"; @@ -409,7 +409,7 @@ "google_analytics_use_prompt" = "Wilt u helpen met het verbeteren van %@ door anonieme crashrapporten en gebruiksstatistieken te versturen?"; // Crypto "e2e_enabling_on_app_update" = "Element ondersteunt nu eind-tot-eind-versleuteling, maar u moet zich opnieuw aanmelden om het in te schakelen.\n\nU kunt dit nu of later doen vanuit de app-instellingen."; -"e2e_need_log_in_again" = "U moet zich opnieuw aanmelden om sleutels voor eind-tot-eind-versleuteling te genereren voor dit apparaat, en om de publieke sleutel naar uw thuisserver te sturen.\nDit is eenmalig; excuses voor het ongemak."; +"e2e_need_log_in_again" = "U moet zich opnieuw aanmelden om sleutels voor eind-tot-eind-versleuteling te genereren voor dit apparaat, en om de publieke sleutel naar uw server te sturen.\nDit is eenmalig; excuses voor het ongemak."; // Bug report "bug_report_title" = "Foutmelding"; "bug_report_description" = "Beschrijf de foutmelding. Wat heeft u gedaan? Wat verwachtte u dat er zou gebeuren? Wat is er echt gebeurd?"; @@ -439,12 +439,12 @@ "auth_identity_server_placeholder" = "URL (bv. https://vector.im)"; "room_ongoing_conference_call_with_close" = "Er is een vergadergesprek gaande. Neem deel met %@ of %@. %@ het."; "room_ongoing_conference_call_close" = "Sluiten"; -"room_conference_call_no_power" = "U heeft toestemming nodig om vergadergesprekken in dit groepsgesprek te beheren"; +"room_conference_call_no_power" = "U heeft toestemming nodig om vergaderingen in deze kamer te beheren"; "settings_labs_create_conference_with_jitsi" = "Maak vergadergesprekken met jitsi"; "call_already_displayed" = "Er is al een oproep aan de gang."; "call_jitsi_error" = "Deelnemen aan het vergadergesprek is mislukt."; // Widget -"widget_no_power_to_manage" = "U heeft toestemming nodig om widgets in dit gesprek te beheren"; +"widget_no_power_to_manage" = "U heeft toestemming nodig om widgets in deze kamer te beheren"; "widget_creation_failure" = "Aanmaken van widget is mislukt"; "send_to" = "Stuur naar %@"; "sending" = "Wordt verstuurd"; @@ -464,7 +464,7 @@ "settings_ui_theme_picker_message" = "‘Automatisch’ gebruikt de instelling ‘Kleurweergave omkeren’ van uw apparaat"; "settings_enable_rageshake" = "Schud de telefoon om een fout te rapporteren"; "room_details_direct_chat" = "Tweegesprek"; -"room_details_fail_to_update_room_direct" = "Bijwerken van de tweegespreksvlag in dit gesprek is mislukt"; +"room_details_fail_to_update_room_direct" = "Bijwerken van de directe chat-vlag in deze kamer is mislukt"; "event_formatter_widget_added" = "%@ widget toegevoegd door %@"; "event_formatter_widget_removed" = "%@ widget verwijderd door %@"; "event_formatter_jitsi_widget_added" = "VoIP-vergadergesprek toegevoegd door %@"; @@ -476,16 +476,16 @@ "widget_integration_need_to_be_able_to_invite" = "U moet gebruikers kunnen uitnodigen om dat te kunnen doen."; "widget_integration_unable_to_create" = "Kan widget niet aanmaken."; "widget_integration_failed_to_send_request" = "Versturen van verzoek is mislukt."; -"widget_integration_room_not_recognised" = "Dit gesprek wordt niet herkend."; +"widget_integration_room_not_recognised" = "Deze kamer wordt niet herkend."; "widget_integration_positive_power_level" = "Het machtsniveau moet een positief geheel getal zijn."; -"widget_integration_must_be_in_room" = "U zit niet in dit gesprek."; -"widget_integration_no_permission_in_room" = "U heeft geen toestemming om dat in dit gesprek te doen."; -"widget_integration_missing_room_id" = "room_id ontbreekt in het verzoek."; +"widget_integration_must_be_in_room" = "U zit niet in deze kamer."; +"widget_integration_no_permission_in_room" = "U heeft geen toestemming om dat in deze kamer te doen."; +"widget_integration_missing_room_id" = "kamer_id ontbreekt in het verzoek."; "widget_integration_missing_user_id" = "user_id ontbreekt in het verzoek."; -"widget_integration_room_not_visible" = "Gesprek %@ is niet zichtbaar."; +"widget_integration_room_not_visible" = "Kamer %@ is niet zichtbaar."; // Share extension "share_extension_auth_prompt" = "Meld u aan in de hoofdapp om inhoud te delen"; -"share_extension_failed_to_encrypt" = "Versturen is mislukt. Controleer in de hoofdapp de versleutelingsinstellingen van dit gesprek"; +"share_extension_failed_to_encrypt" = "Versturen is mislukt. Controleer in de hoofdapp de versleutelingsinstellingen van deze kamer"; // Room key request dialog "e2e_room_key_request_title" = "Versleutelingssleutelverzoek"; "e2e_room_key_request_message" = "Uw ongeverifieerde apparaat ‘%@’ vraagt naar versleutelingssleutels."; @@ -496,7 +496,7 @@ // Groups tab "group_invite_section" = "UITNODIGINGEN"; "group_section" = "GEMEENSCHAPPEN"; -"room_do_not_have_permission_to_post" = "U heeft geen toestemming om in dit gesprek te posten"; +"room_do_not_have_permission_to_post" = "U heeft geen toestemming om in deze kamer te plaatsen"; "settings_flair" = "Badge weergeven waar toegestaan"; "room_details_flair_section" = "Badge voor gemeenschappen weergeven"; "room_details_new_flair_placeholder" = "Nieuwe gemeenschaps-ID toevoegen (bv. +foo%@)"; @@ -507,12 +507,12 @@ "group_details_title" = "Gemeenschapsdetails"; "group_details_home" = "Thuis"; "group_details_people" = "Personen"; -"group_details_rooms" = "Gesprekken"; +"group_details_rooms" = "Kamers"; // Group Home "group_home_one_member_format" = "1 lid"; "group_home_multi_members_format" = "%tu leden"; -"group_home_one_room_format" = "1 gesprek"; -"group_home_multi_rooms_format" = "%tu gesprekken"; +"group_home_one_room_format" = "1 kamer"; +"group_home_multi_rooms_format" = "%tu kamers"; "group_invitation_format" = "%@ heeft u uitgenodigd om tot deze gemeenschap toe te treden"; // Group participants "group_participants_add_participant" = "Deelnemer toevoegen"; @@ -528,12 +528,12 @@ "group_participants_invite_malformed_id" = "Misvormde ID. Dit moet een Matrix-ID zijn, zoals ‘@gebruikersnaam:domein’"; "group_participants_invited_section" = "UITGENODIGD"; // Group rooms -"group_rooms_filter_rooms" = "Gemeenschapsgesprekken filteren"; +"group_rooms_filter_rooms" = "Gemeenschapskamers filteren"; "e2e_room_key_request_message_new_device" = "U heeft een nieuw apparaat ‘%@’ toegevoegd, dat vraagt naar versleutelingssleutels."; "room_event_action_kick_prompt_reason" = "Reden voor het verwijderen van deze gebruiker"; "room_event_action_ban_prompt_reason" = "Reden voor het verbannen van deze gebruiker"; // GDPR -"gdpr_consent_not_given_alert_message" = "Om de %@-thuisserver te blijven gebruiken moet u de algemene voorwaarden lezen en er mee akkoord gaan."; +"gdpr_consent_not_given_alert_message" = "Om de %@-server te blijven gebruiken moet u de algemene voorwaarden lezen en er mee akkoord gaan."; "gdpr_consent_not_given_alert_review_now_action" = "Nu lezen"; "room_action_send_photo_or_video" = "Foto of video versturen"; "room_action_send_sticker" = "Sticker versturen"; @@ -548,7 +548,7 @@ "widget_sticker_picker_no_stickerpacks_alert" = "U heeft momenteel geen stickerpakketten ingeschakeld."; "widget_sticker_picker_no_stickerpacks_alert_add_now" = "Wilt u er nu een paar toevoegen?"; "deactivate_account_title" = "Account deactiveren"; -"deactivate_account_informations_part1" = "Dit zal uw account voorgoed onbruikbaar maken. U zult zich niet meer kunnen aanmelden, en niemand anders zal zich met dezelfde gebruikers-ID kunnen registreren. Dit zal er voor zorgen dat uw account alle gesprekken verlaat waar deze momenteel lid van is, en het verwijdert uw accountgegevens van de identiteitsserver. "; +"deactivate_account_informations_part1" = "Dit zal uw account voorgoed onbruikbaar maken. U zult zich niet meer kunnen aanmelden, en niemand anders zal zich met dezelfde persoon-ID kunnen registreren. Dit zal er voor zorgen dat uw account alle kamers verlaat waar deze momenteel lid van is, en het verwijdert uw gegevens van de identiteitsserver. "; "deactivate_account_informations_part2_emphasize" = "Deze actie is onomkeerbaar."; "deactivate_account_informations_part3" = "\n\nHet deactiveren van uw account "; "deactivate_account_informations_part4_emphasize" = "zal er standaard niet voor zorgen dat de berichten die u heeft verzonden worden vergeten. "; @@ -564,21 +564,21 @@ "room_message_reply_to_short_placeholder" = "Stuur een antwoord…"; // String for App Store "store_short_description" = "Veilig en gedecentraliseerd chatten en bellen"; -"store_full_description" = "Element is een nieuw type messenger en samenwerkings app die:\n\n1. U de controle geeft om uw privacy te behouden\n2. U laat communiceren met iedereen in het Matrix-netwerk, en zelfs daarbuiten door integratie met apps zoals Slack\n3. Beschermt u tegen reclame, datamining, achterdeurtjes en ommuurde netwerken\n4. Beveiligt u door eind-tot-eind versleuteling, met kruislings ondertekenen om anderen te verifiëren\n\nElement is compleet anders dan andere messengers en samenwerkings-apps, omdat het gedecentraliseerd en open source is.\n\nMet Element kunt u zelf hosten - of een host kiezen - zodat u privacy, eigendom en controle heeft over uw gegevens en gesprekken. Het geeft u toegang tot een open netwerk; u zit dus niet vast aan het praten met alleen andere Element-gebruikers. En het is zeer veilig.\n\nElement is hiertoe in staat omdat het werkt op basis van Matrix - de standaard voor open, gedecentraliseerde communicatie. \n\nElement geeft u de controle door u te laten kiezen wie uw gesprekken host. Vanuit de Element app kunt u kiezen om op verschillende manieren te hosten:\n\n1. Neem een gratis account op de publieke server matrix.org\n2. Host het zelf, uw account door draait op uw eigen server\n3. Laat ons het hosten, meld u aan voor een account op een aangepaste server bij het Element Matrix Services hosting platform\n\nWaarom kiest u voor Element?\n\nEIGENAAR VAN UW GEGEVENS: U bepaalt waar uw gegevens en berichten worden bewaard. U bent de eigenaar en heeft de controle, niet een of andere MEGACORP die uw gegevens mijnt of toegang geeft aan derden.\n\nOPEN MESSAGING EN SAMENWERKING: U kunt met iedereen in het Matrix-netwerk chatten, of ze nu Element of een andere Matrix-app gebruiken, en zelfs als ze een ander messaging-systeem gebruiken zoals Slack, IRC of XMPP.\n\nSUPER-VEILIG: Echte eind-tot-eind versleuteling (alleen degenen in de conversatie kunnen berichten ontsleutelen), en kruislings ondertekenen om de apparaten van gespreksdeelnemers te verifiëren.\n\nCOMPLETE COMMUNICATIE: Berichten, spraak- en videogesprekken, bestandsdeling, schermdeling en een heleboel integraties, bots en widgets. Bouw gesprekken, gemeenschappen, blijf in contact en krijg het gedaan.\n\nOVERAL WAAR U BENT: Blijf in contact waar u ook bent met volledig gesynchroniseerde berichtgeschiedenis op al uw apparaten en op het web op https://element.io/app."; +"store_full_description" = "Element is een nieuw type messenger en samenwerkings app die:\n\n1. U de controle geeft om uw privacy te behouden\n2. U laat communiceren met iedereen in het Matrix-netwerk, en zelfs daarbuiten door integratie met apps zoals Slack\n3. Beschermt u tegen reclame, datamining, achterdeurtjes en ommuurde netwerken\n4. Beveiligt u door eind-tot-eind versleuteling, met kruislings ondertekenen om anderen te verifiëren\n\nElement is compleet anders dan andere messengers en samenwerkings-apps, omdat het gedecentraliseerd en open source is.\n\nMet Element kunt u zelf hosten - of een host kiezen - zodat u privacy, eigendom en controle heeft over uw gegevens en gesprekken. Het geeft u toegang tot een open netwerk; u zit dus niet vast aan het praten met alleen andere Element-gebruikers. En het is zeer veilig.\n\nElement is hiertoe in staat omdat het werkt op basis van Matrix - de standaard voor open, gedecentraliseerde communicatie. \n\nElement geeft u de controle door u te laten kiezen wie uw gesprekken host. Vanuit de Element app kunt u kiezen om op verschillende manieren te hosten:\n\n1. Neem een gratis account op de publieke server matrix.org\n2. Host het zelf, uw account door draait op uw eigen server\n3. Laat ons het hosten, meld u aan voor een account op een aangepaste server bij het Element Matrix Services hosting platform\n\nWaarom kiest u voor Element?\n\nEIGENAAR VAN UW GEGEVENS: U bepaalt waar uw gegevens en berichten worden bewaard. U bent de eigenaar en heeft de controle, niet een of andere MEGACORP die uw gegevens mijnt of toegang geeft aan derden.\n\nOPEN MESSAGING EN SAMENWERKING: U kunt met iedereen in het Matrix-netwerk chatten, of ze nu Element of een andere Matrix-app gebruiken, en zelfs als ze een ander messaging-systeem gebruiken zoals Slack, IRC of XMPP.\n\nSUPER-VEILIG: Echte eind-tot-eind versleuteling (alleen degenen in de conversatie kunnen berichten ontsleutelen), en kruislings ondertekenen om de apparaten van gespreksdeelnemers te verifiëren.\n\nCOMPLETE COMMUNICATIE: Berichten, spraak- en videogesprekken, bestandsdeling, schermdeling en een heleboel integraties, bots en widgets. Bouw kamers, spaces, blijf in contact en krijg het gedaan.\n\nOVERAL WAAR U BENT: Blijf in contact waar u ook bent met volledig gesynchroniseerde berichtgeschiedenis op al uw apparaten en op het web op https://element.io/app."; "auth_login_single_sign_on" = "Aanmelden met enkele aanmelding"; -"auth_accept_policies" = "Gelieve het beleid van deze thuisserver te lezen en aanvaarden:"; -"auth_autodiscover_invalid_response" = "Ongeldig thuisserverontdekkingsantwoord"; +"auth_accept_policies" = "Gelieve het beleid van deze server te lezen en aanvaarden:"; +"auth_autodiscover_invalid_response" = "Ongeldig server-ontdekkings-antwoord"; "room_recents_server_notice_section" = "SYSTEEMMELDINGEN"; "room_message_unable_open_link_error_message" = "Kan de koppeling niet openen."; -"room_replacement_information" = "Dit gesprek is vervangen en is niet langer actief."; +"room_replacement_information" = "Deze kamer is vervangen en is niet langer actief."; "room_replacement_link" = "Het gesprek gaat hier verder."; -"room_predecessor_information" = "Dit gesprek is een voortzetting van een ander gesprek."; +"room_predecessor_information" = "Deze kamer is een voortzetting van een eerdere kamer."; "room_predecessor_link" = "Tik hier om oudere berichten te zien."; "room_resource_limit_exceeded_message_contact_1" = " Gelieve "; "room_resource_limit_exceeded_message_contact_2_link" = "contact op te nemen met uw dienstbeheerder"; "room_resource_limit_exceeded_message_contact_3" = " om deze dienst te blijven gebruiken."; -"room_resource_usage_limit_reached_message_1_default" = "Deze thuisserver heeft één van zijn bronlimieten overschreden, dus "; -"room_resource_usage_limit_reached_message_1_monthly_active_user" = "Deze thuisserver heeft zijn limiet voor maandelijks actieve gebruikers overschreden, dus "; +"room_resource_usage_limit_reached_message_1_default" = "Deze server heeft één van zijn bronlimieten overschreden, dus "; +"room_resource_usage_limit_reached_message_1_monthly_active_user" = "Deze server heeft zijn limiet voor maandelijks actieve gebruikers overschreden, dus "; "room_resource_usage_limit_reached_message_2" = "sommige gebruikers zullen zich niet kunnen aanmelden."; "room_resource_usage_limit_reached_message_contact_3" = " om deze limiet te verhogen."; "settings_key_backup" = "SLEUTELBACK-UP"; @@ -605,7 +605,7 @@ "settings_key_backup_button_delete" = "Back-up verwijderen"; "settings_key_backup_delete_confirmation_prompt_title" = "Back-up verwijderen"; "settings_key_backup_delete_confirmation_prompt_msg" = "Weet u het zeker? Als uw sleutels niet correct geback-upt zijn, zult u uw versleutelde berichten verliezen."; -"homeserver_connection_lost" = "Kon geen verbinding maken met de thuisserver."; +"homeserver_connection_lost" = "Kon geen verbinding maken met de server."; "room_does_not_exist" = "%@ bestaat niet"; // Key backup wrong version "e2e_key_backup_wrong_version_title" = "Nieuwe sleutelback-up"; @@ -617,7 +617,7 @@ "key_backup_setup_skip_alert_message" = "U verliest mogelijk uw versleutelde berichten als u zich afmeldt of uw apparaat verliest."; "key_backup_setup_skip_alert_skip_action" = "Overslaan"; "key_backup_setup_intro_title" = "Verlies nooit uw versleutelde berichten"; -"key_backup_setup_intro_info" = "Berichten in versleutelde gesprekken worden versleuteld met eind-tot-eind-beveiliging. Enkel de ontvanger(s) en u hebben de sleutels om deze berichten te lezen.\n\nMaak een veilige back-up van uw sleutels om deze niet te verliezen."; +"key_backup_setup_intro_info" = "Berichten in versleutelde kamers worden versleuteld met eind-tot-eind-versleuteling. Enkel de ontvanger(s) en u hebben de sleutels om deze berichten te lezen.\n\nMaak een veilige back-up van uw sleutels om deze niet te verliezen."; "key_backup_setup_intro_setup_action_without_existing_backup" = "Begin sleutelback-up te gebruiken"; "key_backup_setup_intro_manual_export_info" = "(Geavanceerd)"; "key_backup_setup_intro_manual_export_action" = "Sleutels handmatig exporteren"; @@ -787,7 +787,7 @@ "close" = "Sluiten"; "auth_softlogout_signed_out" = "U bent afgemeld"; "auth_softlogout_sign_in" = "Aanmelden"; -"auth_softlogout_reason" = "De beheerder van uw thuisserver (%1$@) heeft u van uw account %2$@ afgemeld (%3$@)."; +"auth_softlogout_reason" = "De beheerder van uw server (%1$@) heeft u van uw account %2$@ afgemeld (%3$@)."; "auth_softlogout_recover_encryption_keys" = "Meld u aan om de versleutelingssleutels te herstellen die uitsluitend op dit apparaat worden opgeslagen. U heeft ze nodig om uw versleutelde berichten op al uw apparaten te kunnen lezen."; "auth_softlogout_clear_data" = "Persoonlijke gegevens wissen"; "auth_softlogout_clear_data_message_1" = "Let op: uw persoonlijke gegevens (inclusief versleutelingssleutels) worden nog altijd op dit apparaat opgeslagen."; @@ -834,7 +834,7 @@ "service_terms_modal_description_for_identity_server" = "Wees vindbaar voor anderen"; "service_terms_modal_description_for_integration_manager" = "Gebruik bots, bruggen, widgets en stickerpakketten"; // Errors -"error_user_already_logged_in" = "Het lijkt alsof u probeert te verbinden met een andere thuisserver. Wilt u zich afmelden?"; +"error_user_already_logged_in" = "Het lijkt alsof u probeert te verbinden met een andere server. Wilt u zich afmelden?"; "room_participants_remove_third_party_invite_prompt_msg" = "Weet u zeker dat u deze uitnodiging wilt intrekken?"; "room_accessiblity_scroll_to_bottom" = "Scrollen naar onderen"; "room_accessibility_search" = "Zoeken"; @@ -887,7 +887,7 @@ "room_intro_cell_information_dm_sentence2" = "Alleen u twee zijn in dit gesprek, niemand anders kan deelnemen."; "room_intro_cell_information_dm_sentence1_part3" = ". "; "room_intro_cell_information_dm_sentence1_part1" = "Dit is het begin van uw directe gesprek met "; -"room_intro_cell_information_room_without_topic_sentence2_part2" = " om personen te laten weten waar dit gesprek over gaat."; +"room_intro_cell_information_room_without_topic_sentence2_part2" = " om personen te laten weten waar deze kamer over gaat."; "room_intro_cell_information_room_without_topic_sentence2_part1" = "Voeg een onderwerp toe"; "room_intro_cell_information_room_with_topic_sentence2" = "Onderwerp: %@"; "room_intro_cell_information_room_sentence1_part3" = ". "; @@ -896,7 +896,7 @@ // Mark: - Room creation introduction cell "room_intro_cell_add_participants_action" = "Personen toevoegen"; -"room_avatar_view_accessibility_hint" = "Gespreksfoto wijzigen"; +"room_avatar_view_accessibility_hint" = "Kamerfoto wijzigen"; // Mark: - Room avatar view @@ -910,8 +910,8 @@ // MARK: - Favourites -"favourites_empty_view_title" = "Favoriete gesprekken en personen"; -"home_empty_view_information" = "De alles-in-één veilige chat-app voor teams, vrienden en organisaties. Druk op de + knop hieronder om personen en gesprekken toe te voegen."; +"favourites_empty_view_title" = "Favoriete kamers en personen"; +"home_empty_view_information" = "De alles-in-één veilige chat-app voor teams, vrienden en organisaties. Druk op de + knop hieronder om personen en kamers toe te voegen."; // MARK: - Home @@ -934,30 +934,30 @@ "room_info_list_one_member" = "1 persoon"; "room_info_list_several_members" = "%@ personen"; -"create_room_placeholder_address" = "#testroom:matrix.org"; -"create_room_section_header_address" = "Adres"; -"create_room_show_in_directory" = "Gesprek weergeven in de catalogus"; -"create_room_section_footer_type" = "Mensen kunnen alleen met een uitnodiging deelnemen aan een privégesprek."; -"create_room_type_public" = "Openbaar gesprek"; -"create_room_type_private" = "Privégesprek"; -"create_room_section_header_type" = "Type gesprek"; +"create_room_placeholder_address" = "#testkamer:matrix.org"; +"create_room_section_header_address" = "Kameradres"; +"create_room_show_in_directory" = "Kamer weergeven in de gids"; +"create_room_section_footer_type" = "Personen kunnen alleen met een uitnodiging deelnemen aan een privékamer."; +"create_room_type_public" = "Publieke Kamer"; +"create_room_type_private" = "Privékamer"; +"create_room_section_header_type" = "Type kamer"; "create_room_section_footer_encryption" = "Versleuteling kan achteraf niet worden uitgeschakeld."; "create_room_enable_encryption" = "Versleuteling inschakelen"; -"create_room_section_header_encryption" = "Gespreksversleuteling"; +"create_room_section_header_encryption" = "Kamerversleuteling"; "create_room_placeholder_topic" = "Onderwerp"; -"create_room_section_header_topic" = "Onderwerp (optioneel)"; +"create_room_section_header_topic" = "Kameronderwerp (optioneel)"; "create_room_placeholder_name" = "Naam"; -"create_room_section_header_name" = "Naam"; +"create_room_section_header_name" = "Kamernaam"; // MARK: - Create Room -"create_room_title" = "Nieuw Gesprek"; +"create_room_title" = "Nieuwe Kamer"; "searchable_directory_search_placeholder" = "Naam of ID"; "searchable_directory_x_network" = "%@-netwerk"; // MARK: - Searchable Directory View Controller -"searchable_directory_create_new_room" = "Maak een nieuw gesprek"; +"searchable_directory_create_new_room" = "Maak een nieuwe kamer"; "biometrics_cant_unlocked_alert_message_retry" = "Opnieuw proberen"; "biometrics_cant_unlocked_alert_message_login" = "Log opnieuw in"; "biometrics_cant_unlocked_alert_message_x" = "Gebruik %@ om te ontgrendelen of log opnieuw in en schakel %@ opnieuw in"; @@ -1079,7 +1079,7 @@ "user_verification_sessions_list_session_untrusted" = "Niet vertrouwd"; "user_verification_sessions_list_session_trusted" = "Vertrouwd"; "user_verification_sessions_list_table_title" = "Sessies"; -"user_verification_sessions_list_information" = "Berichten met deze gebruiker zijn eind-tot-eind versleuteld en kunnen niet door derde partijen gelezen worden."; +"user_verification_sessions_list_information" = "Berichten met deze persoon in deze kamer zijn eind-tot-eind versleuteld en kunnen niet door derde partijen gelezen worden."; "user_verification_sessions_list_user_trust_level_unknown_title" = "Onbekend"; "user_verification_sessions_list_user_trust_level_warning_title" = "Waarschuwing"; @@ -1251,7 +1251,7 @@ "service_terms_modal_description_for_identity_server_2" = "Wees vindbaar via telefoonnummer of e-mailadres"; "service_terms_modal_description_for_identity_server_1" = "Vind anderen via telefoonnummer of e-mailadres"; "service_terms_modal_decline_button" = "Weigeren"; -"room_widget_permission_room_id_permission" = "Gespreks-ID"; +"room_widget_permission_room_id_permission" = "Kamer-ID"; "room_widget_permission_widget_id_permission" = "Widget-ID"; "room_widget_permission_theme_permission" = "Uw thema"; "room_widget_permission_user_id_permission" = "Uw gebruikers-ID"; @@ -1273,7 +1273,7 @@ "call_actions_unhold" = "Hervatten"; "call_no_stun_server_error_use_fallback_button" = "Probeer %@ te gebruiken"; "call_no_stun_server_error_message_2" = "U kunt ook de publieke server op %@ gebruiken, maar dit zal minder betrouwbaar zijn, en zal uw IP-adres met die server delen. U kunt dit ook beheren in de Instellingen"; -"call_no_stun_server_error_message_1" = "Vraag uw thuisserverbeheerder %@ een TURN-server te configureren teneinde oproepen betrouwbaar te doen werken."; +"call_no_stun_server_error_message_1" = "Vraag uw serverbeheerder %@ een TURN-server te configureren teneinde oproepen betrouwbaar te doen werken."; "call_no_stun_server_error_title" = "Oproep mislukt door verkeerd geconfigureerde server"; "event_formatter_jitsi_widget_removed_by_you" = "U heeft een VoIP-vergadering verwijderd"; "event_formatter_jitsi_widget_added_by_you" = "U heeft een VoIP-vergadering toegevoegd"; @@ -1282,16 +1282,16 @@ // Events formatter with you "event_formatter_widget_added_by_you" = "U heeft deze widget toegevoegd: %@"; "event_formatter_call_back" = "Terugbellen"; -"event_formatter_call_you_declined" = "U heeft de oproep afgewezen"; +"event_formatter_call_you_declined" = "Oproep geweigerd"; "event_formatter_call_you_currently_in" = "Actieve oproep"; -"event_formatter_call_has_ended" = "Beëindigd %@"; +"event_formatter_call_has_ended" = "Oproep beëindigd %@"; "event_formatter_call_video" = "Video-oproep"; "event_formatter_call_voice" = "Audio-oproep"; "room_details_advanced_e2e_encryption_disabled_for_dm" = "Versleuteling is hier niet ingeschakeld."; "room_details_advanced_e2e_encryption_enabled_for_dm" = "Versleuteling is hier ingeschakeld"; "room_details_advanced_room_id_for_dm" = "ID:"; "room_details_no_local_addresses_for_dm" = "Geen lokaaladres bekend"; -"room_details_access_section_directory_toggle_for_dm" = "Weergeven in publieke groepsgesprekkencatalogus"; +"room_details_access_section_directory_toggle_for_dm" = "Weergeven in publieke kamersgids"; "room_details_access_section_anyone_for_dm" = "Iedereen die de koppeling kent, inclusief gasten"; "room_details_access_section_anyone_apart_from_guest_for_dm" = "Iedereen die de koppeling kent, behalve gasten"; "room_details_access_section_for_dm" = "Wie heeft toegang?"; @@ -1321,7 +1321,7 @@ "identity_server_settings_title" = "Identiteitsserver"; // AuthenticatedSessionViewControllerFactory -"authenticated_session_flow_not_supported" = "Deze app ondersteunt de verificatiemethode op uw homeserver niet."; +"authenticated_session_flow_not_supported" = "Deze app ondersteunt de verificatiemethode op uw server niet."; "manage_session_sign_out" = "Deze sessie afmelden"; "manage_session_not_trusted" = "Niet vertrouwd"; "manage_session_trusted" = "Door u vertrouwd"; @@ -1359,7 +1359,7 @@ // Security settings "security_settings_title" = "Beveiliging"; -"settings_show_NSFW_public_rooms" = "NSFW openbare gesprekken weergeven"; +"settings_show_NSFW_public_rooms" = "NSFW publieke kamers weergeven"; "settings_identity_server_no_is_description" = "U gebruikt momenteel geen identiteitsserver. Voeg er hierboven één toe om bekenden te kunnen vinden en voor hen vindbaar te zijn."; "settings_identity_server_no_is" = "Geen identiteitsserver geconfigureerd"; "settings_identity_server_description" = "Met de hierboven ingestelde identiteitsserver kan u uw contacten vinden en bent u vindbaar voor uw contacten."; @@ -1367,14 +1367,14 @@ "settings_discovery_three_pid_details_cancel_email_validation_action" = "E-mailbevestiging afbreken"; "settings_discovery_three_pid_details_revoke_action" = "Intrekken"; "settings_discovery_three_pid_details_share_action" = "Delen"; -"settings_discovery_three_pid_details_information_phone_number" = "Beheer de voorkeuren voor dit telefoonnummer, dat andere gebruikers kunnen gebruiken om u te vinden en u uit te nodigen tot gesprekken. Telefoonnummers toevoegen of verwijderen in Accounts."; +"settings_discovery_three_pid_details_information_phone_number" = "Beheer de voorkeuren voor dit telefoonnummer, dat andere personen kunnen gebruiken om u te vinden en u uit te nodigen tot gesprekken. Telefoonnummers toevoegen of verwijderen in Accounts."; "settings_discovery_three_pid_details_title_phone_number" = "Beheer telefoonnummer"; -"settings_discovery_three_pid_details_information_email" = "Beheer de voorkeuren voor dit e-mailadres, dat andere gebruikers kunnen gebruiken om u te vinden en u uit te nodigen tot gesprekken. E-mailadressen toevoegen of verwijderen in Accounts."; +"settings_discovery_three_pid_details_information_email" = "Beheer de voorkeuren voor dit e-mailadres, dat andere personen kunnen gebruiken om u te vinden en u uit te nodigen tot gesprekken. E-mailadressen toevoegen of verwijderen in Accounts."; "settings_discovery_three_pid_details_title_email" = "E-mail beheren"; "settings_discovery_error_message" = "Er is een fout opgetreden. Probeer het opnieuw."; "settings_discovery_three_pids_management_information_part3" = "."; "settings_discovery_three_pids_management_information_part2" = "Gebruikersinstellingen"; -"settings_discovery_three_pids_management_information_part1" = "Beheer e-mailadressen en telefoonnummers die andere gebruikers kunnen gebruiken om u te vinden en u uit te nodigen voor een gesprekken. E-mailadressen of telefoonnummers toevoegen of verwijderen van deze lijst kan in "; +"settings_discovery_three_pids_management_information_part1" = "Beheer e-mailadressen en telefoonnummers die andere personen kunnen gebruiken om u te vinden en u uit te nodigen voor kamers. E-mailadressen of telefoonnummers toevoegen of verwijderen van deze lijst kan in "; "settings_discovery_terms_not_signed" = "Aanvaard de gebruikersvoorwaarden van de identiteitsserver (%@) om vindbaar te zijn op e-mailadres of telefoonnummer."; "settings_discovery_no_identity_server" = "U gebruikt momenteel geen identiteitsserver. Om door de u bekende contacten vindbaar te zijn, voeg er een toe."; "settings_devices_description" = "De publieke naam van een sessie is zichtbaar voor de personen waarmee u communiceert"; @@ -1382,9 +1382,9 @@ "settings_add_3pid_password_message" = "Geef uw wachtwoord om verder te gaan"; "settings_add_3pid_password_title_msidsn" = "Telefoonnummer toevoegen"; "settings_add_3pid_password_title_email" = "E-mailadres toevoegen"; -"settings_integrations_allow_description" = "Gebruik een integratiebeheerder om bots, bruggen, widgets en stickerpakketten te beheren.\n\nIntegratiebeheerders ontvangen configuratiedata en kunnen widgets aanpassen, gespreksuitnodigingen versturen en bestuursniveaus instellen namens u."; +"settings_integrations_allow_description" = "Gebruik een integratiebeheerder om bots, bruggen, widgets en stickerpakketten te beheren.\n\nIntegratiebeheerders ontvangen configuratiedata en kunnen widgets aanpassen, kameruitnodigingen versturen en bestuursniveaus instellen namens u."; "settings_integrations_allow_button" = "Beheer integraties"; -"settings_calls_stun_server_fallback_description" = "Sta de terugvalserver voor oproepbijstand %@ toe wanneer uw homeserver er geen aanbiedt (uw IP-adres wordt gedeeld gedurende een oproep)."; +"settings_calls_stun_server_fallback_description" = "Sta de terugvalserver voor oproepbijstand %@ toe wanneer uw server er geen aanbiedt (uw IP-adres wordt gedeeld gedurende een oproep)."; "settings_calls_stun_server_fallback_button" = "Terugvalserver voor oproepen toestaan"; "settings_security" = "BEVEILIGING"; "settings_three_pids_management_information_part3" = "."; @@ -1399,7 +1399,7 @@ "room_place_voice_call" = "Audio-oproep"; "room_event_action_delete_confirmation_message" = "Weet u zeker dat u alle niet verzonden berichten wilt verwijderen?"; "room_event_action_delete_confirmation_title" = "Niet verzonden berichten verwijderen"; -"room_unsent_messages_cancel_message" = "Weet u zeker dat u alle niet verzonden berichten in dit gesprek wilt verwijderen?"; +"room_unsent_messages_cancel_message" = "Weet u zeker dat u alle niet verzonden berichten in deze kamer wilt verwijderen?"; "room_unsent_messages_cancel_title" = "Niet verzonden berichten verwijderen"; "room_member_power_level_short_custom" = "Aangepast"; "room_member_power_level_short_moderator" = "Mod"; @@ -1408,9 +1408,9 @@ "room_member_power_level_moderator_in" = "Moderator in %@"; "room_member_power_level_admin_in" = "Beheerder in %@"; "room_participants_security_information_room_encrypted_for_dm" = "Berichten zijn hier eind-tot-eind versleuteld.\n\nUw berichten zijn met een digitale sleutel beveiligd, alleen u en de ontvanger hebben de unieke sleutels om deze berichten te ontgrendelen."; -"room_participants_security_information_room_encrypted" = "Berichten in dit gesprek zijn eind-tot-eind versleuteld.\n\nUw berichten zijn met een digitale sleutel beveiligd, alleen u en de ontvanger hebben de unieke sleutels om deze berichten te ontgrendelen."; +"room_participants_security_information_room_encrypted" = "Berichten in deze kamer zijn eind-tot-eind versleuteld.\n\nUw berichten zijn met een sleutel beveiligd, alleen u en de ontvanger hebben de unieke sleutels om deze berichten te ontgrendelen."; "room_participants_security_information_room_not_encrypted_for_dm" = "Berichten zijn hier niet eind-tot-eind versleuteld."; -"room_participants_security_information_room_not_encrypted" = "Berichten in dit gesprek zijn niet eind-tot-eind versleuteld."; +"room_participants_security_information_room_not_encrypted" = "Berichten in deze kamer zijn niet eind-tot-eind versleuteld."; "room_participants_security_loading" = "Laden…"; "room_participants_action_security_status_loading" = "Laden…"; "room_participants_action_security_status_warning" = "Waarschuwing"; @@ -1422,8 +1422,8 @@ "room_participants_leave_prompt_msg_for_dm" = "Weet u zeker dat u het gesprek wilt verlaten?"; "room_participants_leave_prompt_title_for_dm" = "Verlaten"; "contacts_address_book_no_identity_server" = "Geen identiteitsserver geconfigureerd"; -"rooms_empty_view_information" = "Groepsgesprekken zijn geschikt voor alle gesprekken, privé of publiek. Klik op de + om de bestaande groepen te verkennen of maak een nieuwe."; -"rooms_empty_view_title" = "Gesprekken"; +"rooms_empty_view_information" = "Kamers zijn geschikt voor alle groepsgesprekken, privé of publiek. Klik op de + om de bestaande kamers te verkennen of maak een nieuwe aan."; +"rooms_empty_view_title" = "Kamers"; "people_empty_view_information" = "Veilig communiceren met iedereen. Druk op + om personen toe te voegen."; "people_empty_view_title" = "Personen"; "social_login_button_title_sign_up" = "Registreren met %@"; @@ -1449,7 +1449,7 @@ "joined" = "Toegetreden"; "store_promotional_text" = "Privacy-beschermende chat- en samenwerkingsapp, op een open netwerk. Gedecentraliseerd, zodat u de controle hebt. Geen datamining, geen achterdeurtjes en geen toegang voor derden."; "room_details_integrations" = "Integraties"; -"room_details_search" = "Zoek in gesprek"; +"room_details_search" = "Kamer doorzoeken"; "room_multiple_typing_notification" = "%@ en anderen"; "room_accessibility_video_call" = "Video-oproep"; "room_message_replying_to" = "Antwoord aan %@"; @@ -1473,8 +1473,8 @@ // Chat "room_slide_to_end_group_call" = "Schuif om voor iedereen de oproep te beëindigen"; -"space_beta_announce_information" = "Spaces zijn de nieuwe manier om gesprekken en personen te groeperen. Dit is nog niet beschikbaar op iOS, maar u kunt ze nu gebruiken op Web en Desktop."; -"space_feature_unavailable_information" = "Spaces zijn de nieuwe manier om gesprekken en personen te groeperen. \n\nZe zijn binnenkort beschikbaar. U kan aan spaces deelnemen via andere platformen en die gesprekken worden dan hier beschikbaar."; +"space_beta_announce_information" = "Spaces zijn de nieuwe manier om kamers en personen te groeperen. Dit is nog niet beschikbaar op iOS, maar u kunt ze nu al gebruiken op Web en Desktop."; +"space_feature_unavailable_information" = "Spaces zijn de nieuwe manier om kamers en personen te groeperen. \n\nHet is binnenkort beschikbaar. U kan aan spaces deelnemen via andere platformen en die kamer worden dan hier beschikbaar."; "space_beta_announce_subtitle" = "De nieuwe versie van gemeenschappen"; "space_beta_announce_title" = "Spaces komen binnenkort"; "space_beta_announce_badge" = "BETA"; @@ -1508,10 +1508,10 @@ "security_settings_secure_backup_info_checking" = "Controleren…"; "settings_ui_theme_picker_message_match_system_theme" = "'Automatisch' gebruikt uw apparaat thema instelling"; "settings_ui_theme_picker_message_invert_colours" = "‘Automatisch’ gebruikt de instelling ‘Kleurweergave omkeren’ van uw apparaat"; -"room_recents_unknown_room_error_message" = "Dit gesprek is niet gevonden. Controleer of het bestaat"; +"room_recents_unknown_room_error_message" = "Deze kamer is niet gevonden. Controleer of het bestaat"; "room_creation_dm_error" = "Uw direct gesprek kon niet aangemaakt worden. Controleer de gebruikers die u wilt uitnodigen en probeer het opnieuw."; "key_verification_verify_qr_code_scan_code_other_device_action" = "Scan met dit apparaat"; -"room_notifs_settings_encrypted_room_notice" = "Let op dat vermeldingen & trefwoorden-meldingen niet beschikbaar zijn in versleutelde gesprekken op mobiel."; +"room_notifs_settings_encrypted_room_notice" = "Let op dat vermeldingen & trefwoorden-meldingen niet beschikbaar zijn in versleutelde kamers op mobiel."; "room_notifs_settings_account_settings" = "Accountinstellingen"; "room_notifs_settings_manage_notifications" = "U kunt uw meldingen beheren in %@"; "room_notifs_settings_cancel_action" = "Annuleer"; @@ -1533,3 +1533,9 @@ "settings_notifications_disabled_alert_message" = "Om in te schakelen, ga naar uw apparaatinstellingen."; "settings_notifications_disabled_alert_title" = "Meldingen uitgeschakeld"; "settings_device_notifications" = "Apparaatmeldingen"; +"event_formatter_call_missed_video" = "Video-oproep gemist"; +"event_formatter_call_missed_voice" = "Audio-oproep gemist"; +"event_formatter_call_active_video" = "Actieve video-oproep"; +"event_formatter_call_active_voice" = "Actieve audio-oproep"; +"event_formatter_call_incoming_video" = "Inkomende video-oproep"; +"event_formatter_call_incoming_voice" = "Inkomende audio-oproep"; From bd551ad9d59c68338cd45973e946345d621f47d0 Mon Sep 17 00:00:00 2001 From: sr093906 Date: Wed, 4 Aug 2021 09:16:54 +0000 Subject: [PATCH 55/87] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/zh_Hans/ --- Riot/Assets/zh_Hans.lproj/Vector.strings | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index 550257ace..a45d40e25 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -1364,9 +1364,9 @@ "event_formatter_call_back" = "回拨"; "event_formatter_call_connection_failed" = "连接失败"; "event_formatter_call_you_missed" = "你错过此通话"; -"event_formatter_call_you_declined" = "你拒绝了此通话"; +"event_formatter_call_you_declined" = "拒绝了通话"; "event_formatter_call_you_currently_in" = "当前通话"; -"event_formatter_call_has_ended" = "结束 %@"; +"event_formatter_call_has_ended" = "通话结束 %@"; "event_formatter_call_ringing" = "响铃中……"; "event_formatter_call_connecting" = "连接中……"; "event_formatter_call_video" = "视频通话"; @@ -1448,3 +1448,9 @@ "settings_notifications_disabled_alert_message" = "要启用通知,请转到您的设备设置。"; "settings_notifications_disabled_alert_title" = "已禁用通知"; "settings_device_notifications" = "设备通知"; +"event_formatter_call_missed_video" = "未接视频通话"; +"event_formatter_call_missed_voice" = "未接语音通话"; +"event_formatter_call_active_video" = "活跃视频通话"; +"event_formatter_call_active_voice" = "活跃语音通话"; +"event_formatter_call_incoming_voice" = "语音来电"; +"event_formatter_call_incoming_video" = "视频来电"; From 29551a49ad621338fd5be0da9cfbab6466ff5815 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Fri, 6 Aug 2021 09:21:35 +0000 Subject: [PATCH 56/87] Translated using Weblate (Russian) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/ru/ --- Riot/Assets/ru.lproj/Vector.strings | 184 ++++++++++++++++++++-------- 1 file changed, 134 insertions(+), 50 deletions(-) diff --git a/Riot/Assets/ru.lproj/Vector.strings b/Riot/Assets/ru.lproj/Vector.strings index 0091c576a..b3eec5815 100644 --- a/Riot/Assets/ru.lproj/Vector.strings +++ b/Riot/Assets/ru.lproj/Vector.strings @@ -162,7 +162,7 @@ "room_participants_action_start_voice_call" = "Начать голосовой вызов"; "room_participants_action_start_video_call" = "Начать видеовызов"; // Chat -"room_jump_to_first_unread" = "Перейти к первому непрочитанному сообщению"; +"room_jump_to_first_unread" = "Перейти к непрочитанному"; "room_creation_appearance" = "Внешний вид"; "directory_cell_description" = "%tu комнат"; "directory_search_results_title" = "Просмотр результатов поиска"; @@ -585,49 +585,49 @@ "key_backup_setup_intro_title" = "Никогда не теряйте зашифрованных сообщений"; "key_backup_setup_intro_info" = "Сообщения в зашифрованных комнатах защищены сквозным шифрованием. Только вы и получатель(и) имеют ключи для чтения этих сообщений.\n\nСохраните ключи надежно, чтобы не потерять их."; "key_backup_setup_intro_setup_action" = "Настроить"; -"key_backup_setup_passphrase_info" = "Мы будем хранить зашифрованную копию ваших ключей на нашем сервере. Для безопасности, защитите резервную копию парольной фразой.\n\nДля обеспечения максимальной безопасности он должен отличаться от пароля учетной записи."; +"key_backup_setup_passphrase_info" = "Мы будем хранить зашифрованную копию ваших ключей на нашем сервере. Для безопасности, защитите резервную копию секретной фразой.\n\nДля обеспечения максимальной безопасности она должна отличаться от пароля учетной записи."; "key_backup_setup_passphrase_passphrase_title" = "Ввод"; -"key_backup_setup_passphrase_passphrase_placeholder" = "Введите парольную фразу"; +"key_backup_setup_passphrase_passphrase_placeholder" = "Введите секретную фразу"; "key_backup_setup_passphrase_passphrase_valid" = "Отлично!"; "key_backup_setup_passphrase_passphrase_invalid" = "Попробуйте добавить слово"; "key_backup_setup_passphrase_confirm_passphrase_title" = "Подтвердить"; -"key_backup_setup_passphrase_confirm_passphrase_placeholder" = "Повторите парольную фразу"; +"key_backup_setup_passphrase_confirm_passphrase_placeholder" = "Повторите секретную фразу"; "key_backup_setup_passphrase_confirm_passphrase_valid" = "Отлично!"; -"key_backup_setup_passphrase_confirm_passphrase_invalid" = "Парольные фразы не совпадает"; -"key_backup_setup_passphrase_set_passphrase_action" = "Установить парольную фразу"; +"key_backup_setup_passphrase_confirm_passphrase_invalid" = "Секретная фраза не совпадает"; +"key_backup_setup_passphrase_set_passphrase_action" = "Установить секретную фразу"; "key_backup_setup_recovery_key_recovery_key_title" = "Ключ для восстановления"; "key_backup_setup_recovery_key_make_copy_action" = "Сделать копию"; "key_backup_setup_recovery_key_made_copy_action" = "Я сделал копию"; "key_backup_recover_title" = "Безопасные Сообщения"; "key_backup_recover_empty_backup_title" = "Пустая резервная копия"; "key_backup_recover_empty_backup_message" = "Нет ключа для восстановления"; -"key_backup_recover_from_passphrase_info" = "Используйте парольную фразу восстановления для разблокировки истории безопасных сообщений"; +"key_backup_recover_from_passphrase_info" = "Используйте секретную фразу восстановления для разблокировки истории безопасных сообщений"; "key_backup_recover_from_passphrase_passphrase_title" = "Ввод"; -"key_backup_recover_from_passphrase_passphrase_placeholder" = "Введите парольную фразу"; +"key_backup_recover_from_passphrase_passphrase_placeholder" = "Введите секретную фразу"; "key_backup_recover_from_passphrase_recover_action" = "Разблокировать историю"; -"key_backup_recover_from_passphrase_lost_passphrase_action_part1" = "Не знаете вашу парольную фразу для восстановления? Вы можете "; -"key_backup_recover_from_passphrase_lost_passphrase_action_part2" = "используйте ключ восстановления"; +"key_backup_recover_from_passphrase_lost_passphrase_action_part1" = "Не знаете вашу секретную фразу для восстановления? Вы можете "; +"key_backup_recover_from_passphrase_lost_passphrase_action_part2" = "использовать ключ безопасности"; "key_backup_recover_from_passphrase_lost_passphrase_action_part3" = "."; -"key_backup_recover_from_recovery_key_info" = "Используйте ключ восстановления для разблокировки истории безопасных сообщений"; +"key_backup_recover_from_recovery_key_info" = "Используйте ключ безопасности для разблокировки истории безопасных сообщений"; "key_backup_recover_from_recovery_key_recovery_key_title" = "Ввод"; -"key_backup_recover_from_recovery_key_recovery_key_placeholder" = "Введите ключ восстановления"; +"key_backup_recover_from_recovery_key_recovery_key_placeholder" = "Введите ключ безопасности"; "key_backup_recover_from_recovery_key_recover_action" = "Разблокировать историю"; "key_backup_recover_success_info" = "Резервная копия восстановлена!"; "key_backup_recover_done_action" = "Готово"; -"key_backup_recover_from_recovery_key_lost_recovery_key_action" = "Потеряли ключ восстановления? В настройках вы можете создать новый."; +"key_backup_recover_from_recovery_key_lost_recovery_key_action" = "Потеряли ключ безопасности? В настройках вы можете создать новый."; "key_backup_setup_banner_title_part1" = "Настройка Безопасного Восстановления Сообщений"; "key_backup_recover_banner_title_part1" = "Запуск Безопасного Восстановления Сообщений"; "key_backup_recover_banner_title_part2" = " для чтения истории зашифрованных сообщений на этом устройстве"; "key_backup_setup_banner_title_part2" = " чтобы никогда не потерять зашифрованные сообщения"; "key_backup_setup_recovery_key_info" = "Сделайте копию ключа восстановления и надёжно сохраните его.\n\nЕго можно будет использовать для восстановления истории зашифрованных сообщений, на случай если вы забудете парольную фразу восстановления."; "key_backup_setup_success_title" = "Успех!"; -"key_backup_setup_success_from_passphrase_save_recovery_key_action" = "Сохранить ключ восстановления"; +"key_backup_setup_success_from_passphrase_save_recovery_key_action" = "Сохранить ключ безопасности"; "key_backup_setup_success_from_passphrase_done_action" = "Готово"; -"key_backup_setup_success_from_recovery_key_recovery_key_title" = "Ключ восстановления"; +"key_backup_setup_success_from_recovery_key_recovery_key_title" = "Ключ безопасности"; "key_backup_setup_success_from_recovery_key_make_copy_action" = "Сделать копию"; "key_backup_setup_success_from_recovery_key_made_copy_action" = "Я сделал копию"; -"key_backup_recover_invalid_passphrase_title" = "Неверная парольная фраза для восстановления"; -"key_backup_recover_invalid_recovery_key_title" = "Несоответствующий ключ восстановления"; +"key_backup_recover_invalid_passphrase_title" = "Неверная секретная фраза для восстановления"; +"key_backup_recover_invalid_recovery_key_title" = "Несоответствующий ключ безопасности"; "key_backup_setup_banner_title" = "Не теряйте зашифрованные сообщения"; "key_backup_setup_banner_subtitle" = "Начать использовать ключ восстановления"; "key_backup_recover_banner_title" = "Не теряйте зашифрованные сообщения"; @@ -642,12 +642,12 @@ "key_backup_setup_intro_setup_action_without_existing_backup" = "Начать использовать ключ восстановления"; "key_backup_setup_intro_setup_action_with_existing_backup" = "Использовать ключ восстановления"; "settings_key_backup_info" = "Зашифрованные сообщения защищены сквозным шифрованием. Только вы и получатель(и) имеют ключи для чтения этих сообщений."; -"settings_key_backup_info_signout_warning" = "Подключите этот сеанс к резервному копированию ключей перед выходом из системы, чтобы избежать потери ключей, которые могут быть только на этом устройстве."; -"key_backup_setup_passphrase_title" = "Защитите резервную копию парольной фразой"; -"key_backup_setup_passphrase_setup_recovery_key_info" = "Или защитите резервную копию с помощью ключа восстановления, сохранив его в безопасном месте."; -"key_backup_setup_passphrase_setup_recovery_key_action" = "(Расширенный) Настройка с ключом восстановления"; +"settings_key_backup_info_signout_warning" = "Сделайте резервную копию ключей перед выходом, чтобы не потерять их."; +"key_backup_setup_passphrase_title" = "Защитите резервную копию секретной фразой"; +"key_backup_setup_passphrase_setup_recovery_key_info" = "Или защитите свою резервную копию с помощью ключа безопасности, сохранив ее в безопасном месте."; +"key_backup_setup_passphrase_setup_recovery_key_action" = "(Расширенный) Настройка с ключом безопасности"; // Success from passphrase -"key_backup_setup_success_from_passphrase_info" = "Выполняется резервная копия ключей.\n\nКлюч восстановления — это страховка — вы можете использовать его для восстановления доступа к вашим зашифрованным сообщениям, если забудете пароль.\n\nХраните ключ восстановления в очень надежном месте, например, в менеджере паролей (или сейфе)."; +"key_backup_setup_success_from_passphrase_info" = "Выполняется резервная копия ключей.\n\nКлюч безопасности — это страховка — вы можете использовать его для восстановления доступа к вашим зашифрованным сообщениям, если забудете пароль.\n\nХраните ключ безопасности в очень надежном месте, например, в менеджере паролей (или сейфе)."; // Success from recovery key "key_backup_setup_success_from_recovery_key_info" = "Выполняется резервная копия ключей.\n\nСохраните его в безопасном месте."; "sign_out_key_backup_in_progress_alert_discard_key_backup_action" = "Мне не нужны мои зашифрованные сообщения"; @@ -656,15 +656,15 @@ "sign_out_non_existing_key_backup_sign_out_confirmation_alert_title" = "Зашифрованные сообщения будут утеряны"; "sign_out_non_existing_key_backup_alert_discard_key_backup_action" = "Мне не нужны мои зашифрованные сообщения"; "sign_out_non_existing_key_backup_alert_title" = "Вы потеряете доступ к зашифрованным сообщениям если выйдете сейчас"; -"key_backup_recover_invalid_passphrase" = "Невозможно расшифровать резервную копию с помощью этой парольной фразы: убедитесь, что вы ввели верную парольную фразу для восстановления."; -"key_backup_recover_invalid_recovery_key" = "Невозможно расшифровать резервную копию с помощью этого ключа: убедитесь, что вы ввели верный ключ восстановления."; +"key_backup_recover_invalid_passphrase" = "Невозможно расшифровать резервную копию с помощью этой секретной фразы: убедитесь, что вы ввели верную секретную фразу для восстановления."; +"key_backup_recover_invalid_recovery_key" = "Невозможно расшифровать резервную копию с помощью этого ключа: убедитесь, что вы ввели верный ключ безопасности."; "e2e_key_backup_wrong_version_button_settings" = "Настойки"; "key_backup_setup_intro_manual_export_info" = "(Расширенный)"; "e2e_key_backup_wrong_version_button_wasme" = "Это был я"; "key_backup_setup_intro_manual_export_action" = "Ручной экспорт ключей"; // Key backup wrong version "e2e_key_backup_wrong_version_title" = "Новая резервная копия ключей"; -"e2e_key_backup_wrong_version" = "Обнаружена новая резервная копия ключа защищенного сообщения.\n\nЕсли это не вы, установите новый пароль в настройках."; +"e2e_key_backup_wrong_version" = "Обнаружена новая резервная копия ключа защищенного сообщения.\n\nЕсли это не вы, установите новую секретную фразу в настройках."; // String for App Store "store_short_description" = "Безопасный децентрализованный чат/VoIP"; "store_full_description" = "Element - это новый тип мессенджера и приложения для совместной работы, которое:\n\n1. Ставит вас под контроль, чтобы сохранить вашу частную жизнь\n2. Позволяет вам общаться с кем угодно в cети Matrix и даже за ее пределами, интегрируясь с такими приложениями, как Slack\n3. Защищает вас от рекламы, сбора данных, бэкдоров и огороженных стеной садов\n4. Обеспечивает безопасность с помощью сквозного шифрования с кросс-подписью для проверки других пользователей\n\nElement полностью отличается от других приложений для обмена сообщениями и совместной работы, поскольку он децентрализован и имеет открытый исходный код.\n\nElement позволяет вам самостоятельно разместить или выбрать хост так, чтобы у вас была конфиденциальность, право собственности и контроль над вашими данными и разговорами. Это дает вам доступ к открытой сети; так чтобы вы не были ограничены, разговаривая только с другими пользователями Element. И это очень безопасно.\n\nElement способен делать все это, потому что он работает на Matrix - стандарте открытой, децентрализованной коммуникации.\n\nElement дает вам возможность контролировать, позволяя вам выбирать, кто будет вести ваши разговоры. В приложении Element вы можете выбрать размещение различными способами:\n\n1. Получите бесплатный аккаунт на сайте matrix.org - это публичный сервер\n2. Самостоятельно разместите свою учетную запись, запустив сервер на собственном оборудовании\n3. Подпишитесь на учетную запись на пользовательском сервере, просто подписавшись на хостинг-платформу Element Matrix Services\n\nПочему нужно использовать Element?\n\nВЛАДЕЙТЕ ВАШИМИ ДАННЫМИ: вы сами решаете, где хранить ваши данные и сообщения. Вы владеете ими и контролируете их, а не какая-то мегакорпорация, которая добывает ваши данные или предоставляет к ним доступ третьим лицам.\n\nОТКРЫТОЕ ОБЩЕНИЕ И СОВМЕСТНАЯ РАБОТА: вы можете общаться с кем угодно в сети Matrix, независимо от того, используют ли сам Element или другое приложение Matrix, и даже если они используют другую систему обмена сообщениями, такую как Slack, IRC или XMPP.\n\nАБСОЛЮТНАЯ БЕЗОПАСНОСТЬ: реальное сквозное шифрование (только те, кто находится в разговоре, могут расшифровывать сообщения) и кросс-подпись для проверки устройств участников разговора.\n\nСОВЕРШЕННАЯ КОММУНИКАЦИЯ: обмен сообщениями, голосовые и видеозвонки, общий доступ к файлам, общий доступ к экрану и целая куча интеграций, ботов и виджетов. Создавайте комнаты, сообщества, оставайтесь на связи и делайте все возможное.\n\nГДЕ БЫ ВЫ НЕ БЫЛИ: оставайтесь на связи, где бы вы ни находились, с полностью синхронизированной историей сообщений на всех ваших устройствах и в Интернете по адресу https://element.io/app."; @@ -929,18 +929,18 @@ "security_settings_crypto_sessions_loading" = "Загрузка сеансов…"; "security_settings_crypto_sessions_description_2" = "Если вы не узнали логин, измените пароль и сбросьте Безопасное резервное копирование."; "security_settings_secure_backup" = "БЕЗОПАСНОЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ"; -"security_settings_secure_backup_description" = "Защитите себя от потери доступа к зашифрованным сообщениям и данным, создав резервную копию ключей шифрования на своём сервере."; +"security_settings_secure_backup_description" = "Сделайте резервную копию ключей шифрования с данными вашей учетной записи на случай, если вы потеряете доступ к своим сеансам. Ваши ключи будут защищены уникальным электронным ключом."; "security_settings_secure_backup_setup" = "Настроить"; "security_settings_secure_backup_synchronise" = "Синхронизировать"; -"security_settings_secure_backup_delete" = "Удалить"; +"security_settings_secure_backup_delete" = "Удалить резервную копию"; "security_settings_backup" = "РЕЗЕРВНОЕ КОПИРОВАНИЕ СООБЩЕНИЯ"; "security_settings_crosssigning" = "КРОСС-ПОДПИСЬ"; "security_settings_crosssigning_info_not_bootstrapped" = "Кросс-подпись еще не настроена."; "security_settings_crosssigning_info_exists" = "У вашей учётной записи есть кросс-подпись, но она еще не пользуется доверием в этом сеансе. Настройте безопасность этого сеанса."; "security_settings_crosssigning_info_trusted" = "Кросс-подпись включена. Вы можете доверять другим пользователям и другим своим сеансам на основе кросс-подписи, но вы не можете перекрестно подписывать из этого сеанса, потому что он не имеет закрытых ключей кросс-подписи. Завершите настройку безопасности этого сеанса."; -"security_settings_crosssigning_info_ok" = "Кросс-подпись включена."; -"security_settings_crosssigning_bootstrap" = "Инициализация кросс-подписи"; -"security_settings_crosssigning_reset" = "Сбросить кросс-подпись"; +"security_settings_crosssigning_info_ok" = "Кросс-подпись готова к использованию."; +"security_settings_crosssigning_bootstrap" = "Настроить"; +"security_settings_crosssigning_reset" = "Сброс"; "security_settings_crosssigning_complete_security" = "Завершите настройку безопасности"; "security_settings_cryptography" = "КРИПТОГРАФИЯ"; "security_settings_export_keys_manually" = "Экспорт ключей вручную"; @@ -1036,8 +1036,8 @@ "device_verification_self_verify_wait_new_sign_in_title" = "Подтвердите вход"; "device_verification_self_verify_wait_information" = "Подтвердите этот сеанс на одном из других ваших сеансов, предоставив ему доступ к зашифрованным сообщениям.\n\nИспользуйте последнюю версию Element на других ваших устройствах:"; "device_verification_self_verify_wait_additional_information" = "Это работает с Element и другими клиентами Matrix с поддержкой кросс-подписи."; -"device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Используйте ключ восстановления"; -"device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Используйте пароль восстановления или ключ"; +"device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Используйте ключ безопасности"; +"device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Используйте секретную фразу или ключ безопасности"; "device_verification_self_verify_wait_recover_secrets_additional_information" = "Если вы не можете получить доступ к существующему сеансу"; "key_verification_verify_sas_title_emoji" = "Сравните смайлы"; "key_verification_verify_sas_title_number" = "Сравните числа"; @@ -1115,27 +1115,27 @@ "user_verification_session_details_verify_action_current_user" = "Интерактивная проверка"; "user_verification_session_details_verify_action_current_user_manually" = "Ручная проверка с помощью текста"; "user_verification_session_details_verify_action_other_user" = "Подтверждение вручную"; -"secrets_recovery_with_passphrase_title" = "Парольная фраза для восстановления"; -"secrets_recovery_with_passphrase_information_default" = "Получите доступ к своей защищённой истории сообщений и вашей личности с кросс-подписью для проверки других сеансов, введя кодовую фразу для восстановления."; -"secrets_recovery_with_passphrase_information_verify_device" = "Используйте кодовую фразу для восстановления, чтобы проверить это устройство."; +"secrets_recovery_with_passphrase_title" = "Секретная фраза"; +"secrets_recovery_with_passphrase_information_default" = "Получите доступ к своей защищённой истории сообщений и вашей личности с кросс-подписью для проверки других сеансов, введя секретную фразу."; +"secrets_recovery_with_passphrase_information_verify_device" = "Используйте секретную фразу, чтобы проверить это устройство."; "secrets_recovery_with_passphrase_passphrase_title" = "Ввод"; -"secrets_recovery_with_passphrase_passphrase_placeholder" = "Введите пароль восстановления"; -"secrets_recovery_with_passphrase_recover_action" = "Использовать парольную фразу"; -"secrets_recovery_with_passphrase_lost_passphrase_action_part1" = "Не знаете вашу парольную фразу для восстановления? Вы можете "; -"secrets_recovery_with_passphrase_lost_passphrase_action_part2" = "используйте ключ восстановления"; +"secrets_recovery_with_passphrase_passphrase_placeholder" = "Введите секретную фразу"; +"secrets_recovery_with_passphrase_recover_action" = "Использовать секретную фразу"; +"secrets_recovery_with_passphrase_lost_passphrase_action_part1" = "Не знаете вашу секретную фразу? Вы можете "; +"secrets_recovery_with_passphrase_lost_passphrase_action_part2" = "использовать ключ безопасности"; "secrets_recovery_with_passphrase_lost_passphrase_action_part3" = "."; "secrets_recovery_with_passphrase_invalid_passphrase_title" = "Невозможно получить доступ к секретному хранилищу"; -"secrets_recovery_with_passphrase_invalid_passphrase_message" = "Убедитесь, что вы ввели правильный пароль для восстановления."; -"secrets_recovery_with_key_title" = "Ключ для восстановления"; -"secrets_recovery_with_key_information_default" = "Получите доступ к своей защищённой истории сообщений и вашей личности с кросс-подписью для проверки других сеансов, введя ключ восстановления."; -"secrets_recovery_with_key_information_verify_device" = "Используйте ключ восстановления, чтобы проверить это устройство."; +"secrets_recovery_with_passphrase_invalid_passphrase_message" = "Убедитесь, что вы ввели правильную секретную фразу."; +"secrets_recovery_with_key_title" = "Ключ безопасности"; +"secrets_recovery_with_key_information_default" = "Получите доступ к своей защищённой истории сообщений и вашей личности с кросс-подписью для проверки других сеансов, введя ключ безопасности."; +"secrets_recovery_with_key_information_verify_device" = "Используйте ключ безопасности, чтобы проверить это устройство."; "secrets_recovery_with_key_recovery_key_title" = "Ввод"; -"secrets_recovery_with_key_recovery_key_placeholder" = "Введите ключ восстановления"; +"secrets_recovery_with_key_recovery_key_placeholder" = "Введите ключ безопасности"; "secrets_recovery_with_key_recover_action" = "Использовать ключ"; "secrets_recovery_with_key_invalid_recovery_key_title" = "Невозможно получить доступ к секретному хранилищу"; -"secrets_recovery_with_key_invalid_recovery_key_message" = "Убедитесь, что вы ввели правильный ключ восстановления."; +"secrets_recovery_with_key_invalid_recovery_key_message" = "Убедитесь, что вы ввели правильный ключ безопасности."; "secrets_setup_recovery_key_title" = "Сохраните ваш ключ безопасности"; -"secrets_setup_recovery_key_information" = "Храните ключ восстановления в надежном месте. Его можно использовать для разблокировки ваших зашифрованных сообщений и данных."; +"secrets_setup_recovery_key_information" = "Храните ключ безопасности в надежном месте. Его можно использовать для разблокировки ваших зашифрованных сообщений и данных."; "secrets_setup_recovery_key_loading" = "Загрузка…"; "secrets_setup_recovery_key_export_action" = "Сохранить"; "secrets_setup_recovery_key_done_action" = "Готово"; @@ -1147,7 +1147,7 @@ "secrets_setup_recovery_passphrase_validate_action" = "Готово"; "secrets_setup_recovery_passphrase_confirm_information" = "Для подтверждения введите вашу секретную фразу ещё раз."; "secrets_setup_recovery_passphrase_confirm_passphrase_title" = "Подтвердить"; -"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Подтвердить парольную фразу"; +"secrets_setup_recovery_passphrase_confirm_passphrase_placeholder" = "Подтвердить секретную фразу"; "cross_signing_setup_banner_title" = "Настройка шифрования"; "cross_signing_setup_banner_subtitle" = "Упростите проверку других ваших устройств"; "major_update_title" = "Riot теперь Element"; @@ -1311,9 +1311,9 @@ "callbar_return" = "Вернуться"; "call_actions_unhold" = "Возобновить"; "event_formatter_call_back" = "Перезвонить"; -"event_formatter_call_you_declined" = "Вы отклонили этот вызов"; +"event_formatter_call_you_declined" = "Вызов отклонён"; "event_formatter_call_you_currently_in" = "Вы в этом вызове"; -"event_formatter_call_has_ended" = "Этот вызов закончился"; +"event_formatter_call_has_ended" = "Вызов закончен %@"; "event_formatter_call_video" = "Видео вызов"; "event_formatter_call_voice" = "Голосовой вызов"; "settings_show_NSFW_public_rooms" = "Показать публичные комнаты с чувствительным контентом"; @@ -1329,10 +1329,94 @@ "callbar_active_and_single_paused" = "1 активный вызов (%@) · 1 приостановленный вызов"; // Call Bar -"callbar_only_single_active" = "Активный вызов (%@)"; +"callbar_only_single_active" = "Нажмите для возврата к вызову (%@)"; "room_details_integrations" = "Интеграции"; "room_details_search" = "Искать комнату"; "room_multiple_typing_notification" = "%@ и другие"; "room_accessibility_video_call" = "Видео вызов"; "room_message_replying_to" = "В ответ %@"; "room_message_editing" = "Редактирование"; +"voice_message_stop_locked_mode_recording" = "Нажмите на запись, чтобы остановить или прослушать ее"; +"voice_message_remaining_recording_time" = "%@s осталось"; + +// Mark: - Voice Messages + +"voice_message_release_to_send" = "Удерживайте для записи, отпустите для отправки"; +"side_menu_app_version" = "Версия %@"; +"side_menu_action_feedback" = "Отзыв"; +"side_menu_action_help" = "Помощь"; +"side_menu_action_settings" = "Настойки"; +"side_menu_action_invite_friends" = "Пригласить друзей"; + +// Mark: - Side menu + +"side_menu_reveal_action_accessibility_label" = "Левая панель"; +"user_avatar_view_accessibility_hint" = "Изменить аватар пользователя"; + +// Mark: - User avatar view + +"user_avatar_view_accessibility_label" = "аватар"; +"space_beta_announce_information" = "Пространства - это новый способ группировки комнат и людей. Их пока нет на iOS, но вы можете использовать их уже сейчас в веб-версии и настольных компьютерах."; +"space_beta_announce_subtitle" = "Новая версия сообществ"; +"space_beta_announce_title" = "Пространства скоро появятся"; +"space_beta_announce_badge" = "БЕТА"; +"space_feature_unavailable_information" = "Пространства - это новый способ группировки комнат и людей.\n\nОни появятся здесь в ближайшее время. Пока что, если вы присоединитесь к одному из них на другой платформе, вы сможете получить доступ к любым комнатам, к которым присоединились здесь."; +"space_feature_unavailable_subtitle" = "Пространств ещё нет на iOS, но вы уже можете использовать их в веб-версии и настольных компьютерах"; + +// Mark: - Spaces + +"space_feature_unavailable_title" = "Пространств ещё нет"; +"secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Введите свой ключ безопасности, чтобы продолжить."; +"secrets_recovery_with_key_information_unlock_secure_backup_with_phrase" = "Введите секретную фразу, чтобы продолжить."; +"key_verification_verify_qr_code_scan_code_other_device_action" = "Сканирование с помощью этого устройства"; + +// Success from secure backup +"key_backup_setup_success_from_secure_backup_info" = "Ваши ключи резервируются."; +"event_formatter_group_call_incoming" = "%@ в %@"; +"event_formatter_group_call_leave" = "Покинуть"; +"event_formatter_group_call_join" = "Присоединиться"; +"event_formatter_group_call" = "Групповой вызов"; +"event_formatter_call_end_call" = "Завершить вызов"; +"event_formatter_call_retry" = "Повторить"; +"event_formatter_call_answer" = "Ответить"; +"event_formatter_call_decline" = "Отклонить"; +"event_formatter_call_connection_failed" = "Ошибка соединения"; +"event_formatter_call_missed_video" = "Пропущенный видеовызов"; +"event_formatter_call_missed_voice" = "Пропущенный голосовой вызов"; +"event_formatter_call_active_video" = "Активный видеовызов"; +"event_formatter_call_active_voice" = "Активный голосовой вызов"; +"event_formatter_call_incoming_video" = "Входящий видеовызов"; +"event_formatter_call_incoming_voice" = "Входящий голосовой вызов"; +"event_formatter_call_ringing" = "Звонок…"; +"event_formatter_call_connecting" = "Соединение…"; +"room_notifs_settings_encrypted_room_notice" = "Обратите внимание, что уведомления об упоминаниях и ключевых словах недоступны в зашифрованных комнатах на мобильных устройствах."; +"room_notifs_settings_account_settings" = "Настройки аккаунта"; +"room_notifs_settings_manage_notifications" = "Вы можете управлять уведомлениями в %@"; +"room_notifs_settings_cancel_action" = "Отмена"; +"room_notifs_settings_done_action" = "Готово"; +"room_notifs_settings_none" = "Ничего"; +"room_notifs_settings_mentions_and_keywords" = "Только упоминаниях и ключевых словах"; +"room_notifs_settings_all_messages" = "Всех сообщениях"; + +// Room Notification Settings +"room_notifs_settings_notify_me_for" = "Уведомлять меня о"; +"room_details_notifs" = "Уведомления"; +"security_settings_secure_backup_restore" = "Восстановить из резервной копии"; +"security_settings_secure_backup_reset" = "Сброс"; +"security_settings_secure_backup_info_valid" = "В этом сеансе выполняется резервное копирование ваших ключей."; +"security_settings_secure_backup_info_checking" = "Проверка…"; +"settings_labs_voice_messages" = "Голосовые сообщения"; +"settings_labs_enable_ringing_for_group_calls" = "Звонок для групповых вызовов"; +"settings_ui_theme_picker_message_match_system_theme" = "\"Автоматически\" соответствует системной теме вашего устройства"; +"settings_ui_theme_picker_message_invert_colours" = "\"Автоматически\" использует настройки \"Инвертировать цвета\" вашего устройства"; +"settings_notifications_disabled_alert_message" = "Чтобы включить уведомления, перейдите в настройки устройства."; +"settings_notifications_disabled_alert_title" = "Уведомления отключены"; +"settings_device_notifications" = "Уведомления устройства"; +"room_no_privileges_to_create_group_call" = "Чтобы начать разговор, необходимо быть администратором или модератором."; +"room_join_group_call" = "Присоединиться"; + +// Chat +"room_slide_to_end_group_call" = "Проведите, чтобы завершить звонок для всех"; +"room_recents_unknown_room_error_message" = "Не удалось найти эту комнату. Убедитесь, что она существует"; +"room_creation_dm_error" = "Мы не смогли создать ваш диалог. Пожалуйста, проверьте пользователей, которых вы хотите пригласить, и повторите попытку."; +"callbar_only_single_active_group" = "Нажмите для присоединения к групповому вызову (%@)"; From 5e09eed4e326cca4c27411df2f0a138646addcd1 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Wed, 4 Aug 2021 18:37:38 +0000 Subject: [PATCH 57/87] Translated using Weblate (Hungarian) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/hu/ --- Riot/Assets/hu.lproj/Vector.strings | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/hu.lproj/Vector.strings b/Riot/Assets/hu.lproj/Vector.strings index 0fed891a2..61013d8cf 100644 --- a/Riot/Assets/hu.lproj/Vector.strings +++ b/Riot/Assets/hu.lproj/Vector.strings @@ -1329,9 +1329,9 @@ "dialpad_title" = "Tárcsázó számlap"; "call_actions_unhold" = "Folytatás"; "event_formatter_call_back" = "Visszahívás"; -"event_formatter_call_you_declined" = "Elutasította ezt a hívást"; +"event_formatter_call_you_declined" = "Hívás elutasítva"; "event_formatter_call_you_currently_in" = "Aktív hívás"; -"event_formatter_call_has_ended" = "Befejeződött: %@"; +"event_formatter_call_has_ended" = "Hívás vége: %@"; "event_formatter_call_video" = "Videóhívás"; "event_formatter_call_voice" = "Hang hívás"; "room_open_dialpad" = "Tárcsázó számlap"; @@ -1433,3 +1433,9 @@ "settings_notifications_disabled_alert_message" = "Az értesítések engedélyezéséhez lépj be az eszköz beállításokba."; "settings_notifications_disabled_alert_title" = "Értesítések tiltva"; "settings_device_notifications" = "Eszköz értesítések"; +"event_formatter_call_missed_video" = "Nem fogadott videóhívás"; +"event_formatter_call_missed_voice" = "Nem fogadott hanghívás"; +"event_formatter_call_active_video" = "Videó hívás folyamatban"; +"event_formatter_call_active_voice" = "Hanghívás folyamatban"; +"event_formatter_call_incoming_video" = "Bejövő videó hívás"; +"event_formatter_call_incoming_voice" = "Bejövő hanghívás"; From df5c74f1ab0d7b4efefc73385c6b14d071cc5b56 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Wed, 4 Aug 2021 09:46:58 +0000 Subject: [PATCH 58/87] Translated using Weblate (Albanian) Currently translated at 99.6% (1247 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/sq/ --- Riot/Assets/sq.lproj/Vector.strings | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index 7a6eb2f8c..efc2d4e7d 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -1306,9 +1306,9 @@ "bug_report_background_mode" = "Vazhdo në prapaskenë"; "call_actions_unhold" = "Rimerre"; "event_formatter_call_back" = "Ktheji thirrjen"; -"event_formatter_call_you_declined" = "Hodhët poshtë këtë thirrje"; +"event_formatter_call_you_declined" = "Thirrja u hodh poshtë"; "event_formatter_call_you_currently_in" = "Thirrje aktive"; -"event_formatter_call_has_ended" = "Përfundoi %@"; +"event_formatter_call_has_ended" = "Thirrja përfundoi %@"; "event_formatter_call_video" = "Thirrje video"; "event_formatter_call_voice" = "Thirrje audio"; "security_settings_crosssigning_reset" = "Rikthe te parazgjedhjet"; @@ -1412,3 +1412,19 @@ // Room Notification Settings "room_notifs_settings_notify_me_for" = "Njoftomëni për"; "room_details_notifs" = "Njoftime"; +"voice_message_stop_locked_mode_recording" = "Për ta ndalur ose regjistruar, prekni mbi regjistrimin tuaj"; +"voice_message_remaining_recording_time" = "Edhe %@s"; + +// Mark: - Voice Messages + +"voice_message_release_to_send" = "Mbajeni, që të regjistrojë, lëshojeni që të dërgohet"; +"event_formatter_call_missed_video" = "Thirrje video e humbur"; +"event_formatter_call_missed_voice" = "Thirrje zanore e humbur"; +"event_formatter_call_active_video" = "Thirrje video aktive"; +"event_formatter_call_active_voice" = "Thirrje zanore aktive"; +"event_formatter_call_incoming_video" = "Thirrje video ardhëse"; +"event_formatter_call_incoming_voice" = "Thirrje zanore ardhëse"; +"settings_labs_voice_messages" = "Mesazhe zanore"; +"settings_notifications_disabled_alert_message" = "Që të aktivizoni njoftimet, kaloni te rregullimet e pajisjes tuaj."; +"settings_notifications_disabled_alert_title" = "Njoftime të çaktivizuara"; +"settings_device_notifications" = "Njoftime pajisjesh"; From c135e2bf69c397cd72e63d84730888c1e47cf2e5 Mon Sep 17 00:00:00 2001 From: lvre <7uu3qrbvm@relay.firefox.com> Date: Wed, 4 Aug 2021 18:22:47 +0000 Subject: [PATCH 59/87] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/pt_BR/ --- Riot/Assets/pt_BR.lproj/Vector.strings | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Riot/Assets/pt_BR.lproj/Vector.strings b/Riot/Assets/pt_BR.lproj/Vector.strings index f41cc3285..4f31faec1 100644 --- a/Riot/Assets/pt_BR.lproj/Vector.strings +++ b/Riot/Assets/pt_BR.lproj/Vector.strings @@ -318,7 +318,7 @@ "settings_show_decrypted_content" = "Mostrar conteúdo decriptado"; "settings_global_settings_info" = "Configurações de notificação globais estão disponíveis em seu cliente web %@"; "settings_enable_callkit" = "Chamamento integrado"; -"settings_callkit_info" = "Receba chamadas chegando em sua tela de bloqueio. Veja suas chamadas Element no histórico de chamadas do sistema. Se iCloud está habilitado, este histórico de chamadas vai ser compartilhado com Apple."; +"settings_callkit_info" = "Receba chamadas entrantes em sua tela de bloqueio. Veja suas chamadas Element no histórico de chamadas do sistema. Se iCloud está habilitado, este histórico de chamadas vai ser compartilhado com Apple."; "settings_ui_language" = "Língua"; "settings_ui_theme" = "Tema"; "settings_ui_theme_auto" = "Auto"; @@ -485,14 +485,14 @@ "camera_access_not_granted" = "%@ não tem permissão para usar Câmera, por favor mude configurações de privacidade"; "large_badge_value_k_format" = "%.1fK"; // Call -"call_incoming_voice_prompt" = "Chamada de voz recebendo de %@"; -"call_incoming_video_prompt" = "Chamada de vídeo recebendo de %@"; -"call_incoming_voice" = "Chamada recebendo…"; -"call_incoming_video" = "Chamada de vídeo recebendo…"; +"call_incoming_voice_prompt" = "Chamada de voz entrante de %@"; +"call_incoming_video_prompt" = "Chamada de vídeo entrante de %@"; +"call_incoming_voice" = "Chamada entrante…"; +"call_incoming_video" = "Chamada de vídeo entrante…"; "call_already_displayed" = "Já existe uma chamada em progresso."; "call_jitsi_error" = "Falha para se juntar a chamada de conferência."; // No VoIP support -"no_voip_title" = "Chamada recebendo"; +"no_voip_title" = "Chamada entrante"; "no_voip" = "%@ está chamando você mas %@ não suporta chamadas ainda.\nVocê pode ignorar esta notificação e atender a chamada de um outro dispositivo ou você pode rejeitá-la."; // Crash report "google_analytics_use_prompt" = "Você gostaria de ajudar a melhorar %@ ao reportar automaticamente reportes de crash e dados de uso anônimos?"; @@ -729,7 +729,7 @@ "service_terms_modal_description_for_integration_manager" = "Usar Bots, bridges, widgets e pacotes de stickers"; "device_verification_cancelled" = "A outra parte cancelou a verificação."; // Mark: Incoming -"device_verification_incoming_title" = "Requisição de Verificação Recebendo"; +"device_verification_incoming_title" = "Requisição de Verificação Entrante"; "device_verification_start_wait_partner" = "Esperando por parceira(o) aceitar…"; "device_verification_self_verify_start_waiting" = "Esperando…"; "device_verification_verify_wait_partner" = "Esperando por parceira(o) confirmar…"; @@ -1272,7 +1272,7 @@ "call_transfer_contacts_all" = "Todos"; "call_transfer_contacts_recent" = "Recentes"; "call_transfer_users" = "Usuárias(os)"; -"event_formatter_call_has_ended" = "Terminou %@"; +"event_formatter_call_has_ended" = "Chamada terminou %@"; "room_intro_cell_information_multiple_dm_sentence2" = "Somente vocês estão nesta conversa, a menos que algum(a) de você convide alguém para se juntar."; "room_intro_cell_information_dm_sentence2" = "Somente vocês dois/duas estão nesta conversa, ninguém mais pode juntar-se."; "room_intro_cell_information_dm_sentence1_part3" = ". "; @@ -1297,7 +1297,7 @@ "dialpad_title" = "Pad de disco"; "call_actions_unhold" = "Retomar"; "event_formatter_call_back" = "Ligar de volta"; -"event_formatter_call_you_declined" = "Você declinou esta chamada"; +"event_formatter_call_you_declined" = "Chamada declinada"; "event_formatter_call_you_currently_in" = "Chamada ativa"; "event_formatter_call_video" = "Chamada de vídeo"; "event_formatter_call_voice" = "Chamada de voz"; @@ -1401,3 +1401,9 @@ "settings_notifications_disabled_alert_title" = "Notificações desabilitadas"; "settings_notifications_disabled_alert_message" = "Para habilitar notificações, vá para suas configurações de dispositivo."; "settings_device_notifications" = "Notificações de dispositivo"; +"event_formatter_call_incoming_video" = "Chamada de vídeo entrante"; +"event_formatter_call_incoming_voice" = "Chamada de voz entrante"; +"event_formatter_call_missed_video" = "Chamada de vídeo perdida"; +"event_formatter_call_missed_voice" = "Chamada de voz perdida"; +"event_formatter_call_active_video" = "Chamada de vídeo ativa"; +"event_formatter_call_active_voice" = "Chamada de voz ativa"; From 82780ab7e33c7a1ab8fa8e8252d81781bdeba761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Fri, 6 Aug 2021 06:27:11 +0000 Subject: [PATCH 60/87] Translated using Weblate (Estonian) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/et/ --- Riot/Assets/et.lproj/Vector.strings | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 7deb01246..8764cf951 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -1266,7 +1266,7 @@ "dialpad_title" = "Numbriklahvistik"; "call_actions_unhold" = "Jätka"; "event_formatter_call_back" = "Helista tagasi"; -"event_formatter_call_you_declined" = "Sina keeldusid sellest kõnest"; +"event_formatter_call_you_declined" = "Osapool keeldus kõnest"; "event_formatter_call_you_currently_in" = "Kõne on käsil"; "event_formatter_call_has_ended" = "%@ kõne on lõppenud"; "event_formatter_call_video" = "Videokõne"; @@ -1367,3 +1367,12 @@ "voice_message_release_to_send" = "Salvestamiseks vajuta nuppu, saatmiseks lase nupp lahti"; "settings_labs_voice_messages" = "Häälsõnumid"; +"event_formatter_call_missed_video" = "Vastamata videokõne"; +"event_formatter_call_missed_voice" = "Vastamata kõne"; +"event_formatter_call_active_video" = "Pooleliolev videokõne"; +"event_formatter_call_active_voice" = "Pooleliolev kõne"; +"event_formatter_call_incoming_video" = "Saabuv videokõne"; +"event_formatter_call_incoming_voice" = "Saabuv häälkõne"; +"settings_notifications_disabled_alert_message" = "Teavituste kasutamiseks ava seadistuste vaade."; +"settings_notifications_disabled_alert_title" = "Teavitused on välja lülitatud"; +"settings_device_notifications" = "Teavitused seadmes"; From daf916f97350a7e130e6d2abc7b0f052677fab9b Mon Sep 17 00:00:00 2001 From: SBiOSoftWhare Date: Mon, 9 Aug 2021 10:29:55 +0200 Subject: [PATCH 61/87] Update INSTALL.md Co-authored-by: manuroe --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 5248af653..7d1b7e6cc 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -125,7 +125,7 @@ Each target has its own YAML file in the folder Targets folder. ### Generate the project in one line without effort -If you want to generate the project easily and quickly there is a local script called `setup_project.sh` that creates the `xcodeproj` and `xcworkspace` with all source files and dependencies with commands described before. It select automatically the right dependencies based on your local Git branch or your Podfile local modifications. All you have to do is to go in the project root folder and run the script: +If you want to generate the project easily and quickly, there is a local script called `setup_project.sh` that creates the `xcodeproj` and `xcworkspace` with all source files and dependencies with commands described before. It automatically selects the right dependencies based on your local Git branch or your Podfile local modifications. All you have to do is to go in the project root folder and run the script: ``` $ ./setup_project.sh From cc4092c08affa6c03298e33ca5ddb72df31704aa Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 10:19:00 +0100 Subject: [PATCH 62/87] Add explanation. --- Riot/Utils/EventFormatter.m | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Riot/Utils/EventFormatter.m b/Riot/Utils/EventFormatter.m index 0b16bba3a..b5135a47c 100644 --- a/Riot/Utils/EventFormatter.m +++ b/Riot/Utils/EventFormatter.m @@ -422,6 +422,12 @@ static NSString *const kEventFormatterTimeFormat = @"HH:mm"; if ([self functionalMembersEventFromStateEvents:stateEvents]) { MXLogDebug(@"[EventFormatter] The functional members event has been updated.") + + // The stateEvents parameter contains state events that may change the room summary. If service members are found, + // it's likely that something changed. As they aren't stored, the only reliable check would be to compute the + // room name which we'll do twice more in updateRoomSummary:withServerRoomSummary:roomState: anyway. + // + // So return YES and let that happen there. return YES; } } From b27203d1f9e240fbaaa0267aac70a7e9c55ada4d Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 15:57:14 +0200 Subject: [PATCH 63/87] CHANGES.md: Use towncrier to manage the change log vector-im/element-ios#4393 More info in [CONTRIBUTING](CONTRIBUTING.md#changelog) --- .github/PULL_REQUEST_TEMPLATE.md | 4 +-- CONTRIBUTING.md | 2 +- changelog.d/.gitignore | 1 + changelog.d/4393.build | 1 + changelog.d/_template.md.jinja | 52 ++++++++++++++++++++++++++++++++ towncrier.toml | 45 +++++++++++++++++++++++++++ 6 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 changelog.d/.gitignore create mode 100644 changelog.d/4393.build create mode 100644 changelog.d/_template.md.jinja create mode 100644 towncrier.toml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0140524ea..a36311fbc 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,6 +3,6 @@ * [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md) * [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators * [ ] Pull request is based on the develop branch -* [ ] Pull request updates [CHANGES.rst](https://github.com/vector-im/riot-ios/blob/develop/CHANGES.rst) +* [ ] Pull request contains a changelog file in ./changelog.d. See * [ ] Pull request includes screenshots or videos of UI changes -* [ ] Pull request includes a [sign off](https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md#sign-off) +* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cc28bc49d..17281c521 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing code to Matrix -Please read Synapse [contributing guide](https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md). +Please read the matrix-ios-sdk [contributing guide](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md). # Contributing code to Element iOS diff --git a/changelog.d/.gitignore b/changelog.d/.gitignore new file mode 100644 index 000000000..f935021a8 --- /dev/null +++ b/changelog.d/.gitignore @@ -0,0 +1 @@ +!.gitignore diff --git a/changelog.d/4393.build b/changelog.d/4393.build new file mode 100644 index 000000000..d24a7e191 --- /dev/null +++ b/changelog.d/4393.build @@ -0,0 +1 @@ +CHANGES.md: Use towncrier to manage the change log. More info in [CONTRIBUTING](CONTRIBUTING.md#changelog). \ No newline at end of file diff --git a/changelog.d/_template.md.jinja b/changelog.d/_template.md.jinja new file mode 100644 index 000000000..2a7b9d6fe --- /dev/null +++ b/changelog.d/_template.md.jinja @@ -0,0 +1,52 @@ +{# iOS Repositories #} +{%- set gh_sdk = "https://github.com/matrix-org/matrix-ios-sdk" -%} +{%- set gh_kit = "https://github.com/matrix-org/matrix-ios-kit" -%} +{%- set gh_element = "https://github.com/vector-im/element-ios" -%} + +## {{ versiondata.name }} {{ versiondata.version }} ({{ versiondata.date }}) +{% for section, _ in sections.items() %} + +{% if sections[section] %} +{% for category, val in definitions.items() if category in sections[section]%} +{{ definitions[category]['name'] }} + +{% if definitions[category]['showcontent'] %} +{% for text, values in sections[section][category].items() %} +{# Build all types of links we can have from our different repositories #} +{%- set links = [] -%} +{%- for value in values %} + {%- if value.startswith("sdk-") %} + {%- set gh_issue = value.replace("sdk-", "") -%} + {{- links.append( "[#%s](%s/issues/%s)" | format(gh_issue, gh_sdk, gh_issue) ) | default("", True) -}} + {%- elif value.startswith("kit-") %} + {%- set gh_issue = value.replace("kit-", "") -%} + {{- links.append( "[#%s](%s/issues/%s)" | format(gh_issue, gh_kit, gh_issue) ) | default("", True) -}} + {%- elif value.startswith("#") %} + {%- set gh_issue = value.replace("#", "") -%} + {{- links.append( "[#%s](%s/issues/%s)" | format(gh_issue, gh_element, gh_issue) ) | default("", True) -}} + {%- elif value.startswith("pr-") %} + {%- set pr = value.replace("pr-", "#") -%} + {{- links.append(pr) | default("", True) -}} + {% else %} + {{- links.append(value) | default("", True) -}} + {% endif -%} +{% endfor -%} +- {{ text }} ({{ links | join(', ') }}) +{% endfor %} +{% else %} +- {{ sections[section][category]['']|join(', ') }} + +{% endif %} +{% if sections[section][category]|length == 0 %} +No significant changes. + +{% else %} +{% endif %} + +{% endfor %} +{% else %} +No significant changes. + + +{% endif %} +{% endfor %} \ No newline at end of file diff --git a/towncrier.toml b/towncrier.toml new file mode 100644 index 000000000..2587d18b2 --- /dev/null +++ b/towncrier.toml @@ -0,0 +1,45 @@ +[tool.towncrier] +name = "Changes in" +filename = "CHANGES.md" +directory = "changelog.d" +template = "changelog.d/_template.md.jinja" + +[[tool.towncrier.type]] + directory = "feature" + name = "✨ Features" + showcontent = true + +[[tool.towncrier.type]] + directory = "change" + name = "🙌 Improvements" + showcontent = true + +[[tool.towncrier.type]] + directory = "bugfix" + name = "🐛 Bugfixes" + showcontent = true + +[[tool.towncrier.type]] + directory = "api" + name = "⚠️ API Changes" + showcontent = true + +[[tool.towncrier.type]] + directory = "i18n" + name = "🗣 Translations" + showcontent = true + +[[tool.towncrier.type]] + directory = "build" + name = "🧱 Build" + showcontent = true + +[[tool.towncrier.type]] + directory = "doc" + name = "📄 Documentation" + showcontent = true + +[[tool.towncrier.type]] + directory = "misc" + name = "Others" + showcontent = true From a0fc4a98f5c3a51c04483cbb16e68d207a48fcb9 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 16:08:59 +0200 Subject: [PATCH 64/87] Convert CHANGES to MarkDown --- CHANGES.rst => CHANGES.md | 1276 ++++++++----------------------------- changelog.d/4393.doc | 1 + 2 files changed, 252 insertions(+), 1025 deletions(-) rename CHANGES.rst => CHANGES.md (85%) create mode 100644 changelog.d/4393.doc diff --git a/CHANGES.rst b/CHANGES.md similarity index 85% rename from CHANGES.rst rename to CHANGES.md index 2f2bf111c..448431daf 100644 --- a/CHANGES.rst +++ b/CHANGES.md @@ -1,10 +1,7 @@ Changes to be released in next version -================================================= - -✨ Features - * 🙌 Improvements + * Settings: The notifications toggle no longer detects the system's "Deliver Quietly" configuration as disabled (#2368). * Settings: Adds a link to open the Settings app to quickly configure app notifications. * VoIP: Text & icon changes on call tiles (#4642). @@ -15,56 +12,31 @@ Changes to be released in next version * Room: Remove the green border from direct message room avatars (#4520). * VoIP: Additional changes on call tiles (#4642). -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * 🧱 Build + * Add a script to initialize quickly and easily the project. Others + * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md -Changes in 1.4.9 (2021-08-03) -================================================= - -✨ Features - * +## Changes in 1.4.9 (2021-08-03) 🙌 Improvements + * Voice Messages: Increased recording state microphone icon size * Voice Messages: Using "Voice message - MM.dd.yyyy HH.mm.ss" as the format for recorded audio files 🐛 Bugfix + * Voice Messages: Fixed race conditions when sending voice messages (#4641) -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - -Improvements: - - -Changes in 1.4.8 (2021-07-29) -================================================= - -✨ Features - * +## Changes in 1.4.8 (2021-07-29) 🙌 Improvements + * Room: Added support for Voice Messages (#4090, #4091, #4092, #4094, #4095, #4096) * Rooms Tab: Remove the directory section (#4521). * Notifications: Show decrypted content is enabled by default (#4519). @@ -76,6 +48,7 @@ Changes in 1.4.8 (2021-07-29) * Slide to lock should be more generous (#4602). 🐛 Bugfix + * Room: Fixed mentioning users from room info member details (#4583) * Settings: Disabled autocorrection when entering an identity server (#4593). * Room Notification Settings: Fix Crash when opening the new Room Notification Settings Screen (Not yet released) (#4599). @@ -83,60 +56,34 @@ Changes in 1.4.8 (2021-07-29) * Room: Fixed crash when opening a read-only room (#4620). * Voice Messages: Tapping on waveform in composer glitches UI (#4603). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - Others + * Separated CI jobs into individual actions * Update Gemfile.lock Improvements: * Upgrade MatrixKit version ([v0.15.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.6)). -Changes in 1.4.7 (2021-07-22) -================================================= +## Changes in 1.4.7 (2021-07-22) -✨ Features - * - -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - Others + * Updated issue templates. Improvements: * Upgrade MatrixKit version ([v0.15.5](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.5)). -Changes in 1.4.6 (2021-07-16) -================================================= - -✨ Features - * +## Changes in 1.4.6 (2021-07-16) 🙌 Improvements + * Room Notification Settings: Ability to change between "All Messages", "Mentions and Keywords" and "None". Not yet exposed in Element UI. (#4458). * Add support for sending slow motion videos (#4483). 🐛 Bugfix + * VoIP: Do not present ended calls. * More fixes to Main.storyboard layout on iPhone 12 Pro Max (#4527) * Fix crash on Apple Silicon Macs. @@ -148,109 +95,59 @@ Changes in 1.4.6 (2021-07-16) * Share Extension: Fix layout when searching (#4258). * Timeline: Fix incorrect crop of media thumbnails (#4552). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - Others + * Silenced some documentation, deprecations and SwiftLint warnings. Improvements: * Upgrade MatrixKit version ([v0.15.4](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.4)). -Changes in 1.4.5 (2021-07-07) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.4.5 (2021-07-07) 🐛 Bugfix + * Notifications: Fix an issue where the app is unresponsive after getting some notifications (#4534). -⚠️ API Changes - * - -🗣 Translations - * - -🧱 Build - * - -Others - * - -Changes in 1.4.4 (2021-06-30) -================================================= - -✨ Features - * +## Changes in 1.4.4 (2021-06-30) 🙌 Improvements + * DesignKit: Add Fonts (#4356). * VoIP: Implement audio output router menu in call screen. 🐛 Bugfix + * SSO: Handle login callback URL with HTML entities (#4129). * Share extension: Fix theme in dark mode (#4486). * Theme: Fix authentication activity indicator colour when using a dark theme (#4485). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.15.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.3)). -Changes in 1.4.3 (2021-06-24) -================================================= - -✨ Features - * +## Changes in 1.4.3 (2021-06-24) 🙌 Improvements + * Room lists: Hide invited rooms if auto-accept option enabled. 🐛 Bugfix + * Fixed retain cycle between the RoomTitleView and RoomViewController -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.15.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.2)). -Changes in 1.4.2 (2021-06-21) -================================================= +## Changes in 1.4.2 (2021-06-21) ✨ Features + * Add left panel (#4398). 🙌 Improvements + * MXRoomSummary: Adapt room summary changes on MatrixSDK (#4360). * EncryptionKeyManager: Create keys for room last message data type. * Integrated FLEX for debug builds. @@ -263,6 +160,7 @@ Changes in 1.4.2 (2021-06-21) * Room lists: Avoid app freezes by building them on a separated thread (#3777). 🐛 Bugfix + * StartChatViewController: Add more helpful message when trying to start DM with a user that does not exist (#224). * RoomDirectCallStatusBubbleCell: Fix crash when entering a DM after a call is hung-up/rejected while being answered (#4403). * ContactsDataSource: iPad Crashes when you select a contact in search and then collapse a section or clear the query text (#4414). @@ -273,53 +171,29 @@ Changes in 1.4.2 (2021-06-21) * NSE: Recreate background sync service if credentials changed (#3695). * HomeViewController: Don't clip the home view when searching for rooms on iPhone 12 Pro Max (#4450). -⚠️ API Changes - * - -🗣 Translations - * 🧱 Build + * GH Actions: Make sure we use the latest version of MatrixKit. Others + * Improvements: * Upgrade MatrixKit version ([v0.15.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.1)). - Changes in 1.4.1 (2021-06-08) -================================================= - -✨ Features - * - -🙌 Improvements - * + ## Changes in 1.4.1 (2021-06-08) 🐛 Bugfix + * SettingsViewController: Fix crash when changing the app language (#4377). * UserSessionsService: Fix room lists lost after a reset cache (#4395). -⚠️ API Changes - * - -🗣 Translations - * - -🧱 Build - * - -Others - * - -Changes in 1.4.0 (2021-06-03) -================================================= - -✨ Features - * +## Changes in 1.4.0 (2021-06-03) 🙌 Improvements + * Crypto: Do not decrypt synchronously. It asynchronously happens upstream now (#4306). * Navigation: Start decoupling view controllers managed by MasterTabBarController (#3596 and #3618). * Jitsi: Include optional server name field on JitsiJWTPayloadContextMatrix. @@ -327,115 +201,52 @@ Changes in 1.4.0 (2021-06-03) * Logging: Adopted MXLog throughout the application (vector-im/element-ios/issues/4351). 🐛 Bugfix + * buildRelease.sh: Make bundler operations in the cloned repository folder. * VoIP: Fix call bar layout issue for landscape. -⚠️ API Changes - * - 🗣 Translations + * Fix missing translation files for Icelandic. * Enable Esperanto, Portuguese (Brazil), Kabyle, Norwegian Bokmål (nb), Swedish, Japanese and Welsh. -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.15.0](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.0)). -Changes in 1.3.9 (2021-05-18) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.3.9 (2021-05-18) 🐛 Bugfix + * RecentsDataSource: Present the secure backup banner only if key backup is disabled. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - -Improvements: - - -Changes in 1.3.8 (2021-05-17) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.3.8 (2021-05-17) 🐛 Bugfix + * RecentsDataSource: Do not display secure backup banner when keys upload is in process. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - -Improvements: - - -Changes in 1.3.7 (2021-05-12) -================================================= - -✨ Features - * +## Changes in 1.3.7 (2021-05-12) 🙌 Improvements + * NSE: Add logs for notification delay. * Templates: Update bridge presenter template to auto-implement iOS 13 pull-down gesture. 🐛 Bugfix + * NSE: Fixes to avoid PushKit crashes (#4269). * Handle pull-down gesture for reactions history view (#4293). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.12](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.12)). -Changes in 1.3.6 (2021-05-07) -================================================= - -✨ Features - * +## Changes in 1.3.6 (2021-05-07) 🙌 Improvements + * Jitsi: Use Jitsi server from homeserver's Well Known, if present, to create conferences (#3158). * RoomMemberDetailsVC: Enable / disable "Hide all messages from this user" from settings (#4281). * RoomVC: Show / Hide More and Report Content contextual menu from settings (#4285). @@ -450,34 +261,25 @@ Changes in 1.3.6 (2021-05-07) * Advertise that spaces are not available when tapping on a space link or a space invite (#4279). 🐛 Bugfix + * RoomVC: Avoid navigation to integration management using integration popup with settings set to integration disabled (#4261). * RiotSettings: Logging out resets RiotSettings (#4259). * RoomVC: Crash in `setScrollToBottomHidden` method (#4270). * Notifications: Make them work in debug mode (#4274). * VoIP: Fix call bar layout issue (#4300). -⚠️ API Changes - * - -🗣 Translations - * 🧱 Build - * GH Actions: Make jobs use the right version of MatrixKit and MatrixSDK. -Others - * + * GH Actions: Make jobs use the right version of MatrixKit and MatrixSDK. Improvements: * Upgrade MatrixKit version ([v0.14.11](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.11)). -Changes in 1.3.5 (2021-04-22) -================================================= - -✨ Features - * +## Changes in 1.3.5 (2021-04-22) 🙌 Improvements + * Add `gitter.im` to list of default room directories * MasterTabBarController: Show/Hide Home Screen tabs (#4234). * RoomVC: Enable / Disable VoIP feature in Rooms (#4236). @@ -488,143 +290,59 @@ Changes in 1.3.5 (2021-04-22) * RoomVC: Show / Hide integrations and actions (#4245). 🐛 Bugfix + * PublicRoomsDirectoryDataSource: Fix search when NSFW filter is off. * RoomVC: Fix navigation issue when a room left. * RoomVC: Fix a crash when scroll to bottom tapped on a left room. -⚠️ API Changes - * - -🗣 Translations - * 🧱 Build - * GH Actions: Start using them for CI to check simulator build and tests. -Others - * + * GH Actions: Start using them for CI to check simulator build and tests. Improvements: * Upgrade MatrixKit version ([v0.14.10](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.10)). -Changes in 1.3.4 (2021-04-19) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.3.4 (2021-04-19) 🐛 Bugfix + * RoomVC: Crash in refreshTypingNotification (#4230). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * +## Changes in 1.3.3 (2021-04-16) -Others - * - -Improvements: - - -Changes in 1.3.3 (2021-04-16) -================================================= - -✨ Features - * - -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.9](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.9)). -Changes in 1.3.2 (2021-04-16) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.3.2 (2021-04-16) 🐛 Bugfix + * Self-verification: Fix compatibility with Element-Web (#4217). * Notifications: Fix sender display name that can miss (#4222). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.9](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.9)). -Changes in 1.3.1 (2021-04-14) -================================================= +## Changes in 1.3.1 (2021-04-14) -✨ Features - * - -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.8](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.8)). -Changes in 1.3.0 (2021-04-09) -================================================= +## Changes in 1.3.0 (2021-04-09) ✨ Features + * Composer Update - Typing and sending a message (#4085) * Switching composer between text mode & action mode (#4087) * Explore typing notifications inspired by web (#4134) 🙌 Improvements + * Make the application settings more configurable (#4171) * Possibility to lock some room creation parameters from settings (#4181) * Enable / disable external friends invite (#4173) @@ -634,6 +352,7 @@ Changes in 1.3.0 (2021-04-09) * Consider displaying names in typing notifications (#4175) 🐛 Bugfix + * If you start typing while the new attachment sending mode is on, the send button appears (#4155) * The final frames of the appearance animation of the new composer buttons are missing (#4160) * Crash in [RoomViewController setupActions] (#4162) @@ -642,284 +361,127 @@ Changes in 1.3.0 (2021-04-09) * Vertical layout of typing notifs can go wonky (#4159) * Crash in [RoomViewController refreshTypingNotification] (#4161) -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.7](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.7)). -Changes in 1.2.8 (2021-03-26) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.2.8 (2021-03-26) 🐛 Bugfix + * Xcodegen: Unit tests are broken (#4152). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - -Improvements: - - -Changes in 1.2.7 (2021-03-24) -================================================= - -✨ Features - * +## Changes in 1.2.7 (2021-03-24) 🙌 Improvements + * Pods: Update FlowCommoniOS, GBDeviceInfo, KeychainAccess, MatomoTracker, SwiftJWT, SwiftLint (#4120). * Room lists: Remove shields on room avatars (#4115). 🐛 Bugfix + * RoomVC: Fix timeline blink on sending. * RoomVC: Fix not visible last bubble issue. * Room directory: Fix crash (#4137). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.6)). -Changes in 1.2.6 (2021-03-11) -================================================= +## Changes in 1.2.6 (2021-03-11) ✨ Features + * Improve the status of send messages (sending, sent, received, failed) (#4014) * Retrying & deleting failed messages (#4013) * Composer Update - Typing and sending a message (#4085) -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.5](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.5)). -Changes in 1.2.5 (2021-03-03) -================================================= - -✨ Features - * +## Changes in 1.2.5 (2021-03-03) 🙌 Improvements + * Settings: Add option to show NSFW public rooms (off by default). 🐛 Bugfix + * Emoji store: Include short name when searching emojis (#4063). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.4](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.4)). -Changes in 1.2.4 (2021-03-01) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.2.4 (2021-03-01) 🐛 Bugfix + * Social login: Fix a crash when selecting a social login provider. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * +## Changes in 1.2.3 (2021-02-26) -Others - * - -Improvements: - - -Changes in 1.2.3 (2021-02-26) -================================================= - -✨ Features - * - -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.3)). -Changes in 1.2.2 (2021-02-24) -================================================= +## Changes in 1.2.2 (2021-02-24) ✨ Features + * Enable encryption for accounts, contacts and keys in the crypto database (#3867). 🙌 Improvements + * Home: Show room directory on join room action (#3775). * RoomVC: Add quick actions in timeline on room creation (#3776). -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * 🧱 Build + * XcodeGen: .xcodeproj files are now built from readable yml file: [New Build instructions](README.md#build-instructions) (#3812). * Podfile: Use MatrixKit for all targets and remove MatrixKit/AppExtension. * Fastlane: Use the "New Build System" to build releases. * Fastlane: Re-enable parallelised builds. -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.2)). -Changes in 1.2.1 (2021-02-12) -================================================= - -✨ Features - * +## Changes in 1.2.1 (2021-02-12) 🙌 Improvements + * User-Interactive Authentication: Add UIA support for device deletion and add user 3PID action (#4016). 🐛 Bugfix + * NSE: Wait for VoIP push request if any before calling contentHandler (#4018). * VoIP: Show dial pad option only if PSTN is supported (#4029). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.1)). -Changes in 1.2.0 (2021-02-11) -================================================= - -✨ Features - * +## Changes in 1.2.0 (2021-02-11) 🙌 Improvements + * Cross-signing: Setup cross-signing without authentication parameters when a grace period is enabled after login (#4006). * VoIP: Implement DTMF on call screen (#3929). * VoIP: Implement call transfer screen (#3962). * VoIP: Implement call tiles on timeline (#3955). -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.14.0](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.14.0)). -Changes in 1.1.7 (2021-02-03) -================================================= - -✨ Features - * +## Changes in 1.1.7 (2021-02-03) 🙌 Improvements + * Social login: Handle new identity provider brand field in order to customize buttons (#3980). * Widgets: Support $matrix_room_id and $matrix_widget_id parameters (#3987). * matrix.to: Support room preview when the permalink has parameters (like "via="). @@ -927,207 +489,112 @@ Changes in 1.1.7 (2021-02-03) * Handle User-Interactive Authentication fallback (#3995). 🐛 Bugfix + * Push: Fix PushKit crashes due to undecryptable call invites (#3986). * matrix.to: Cannot open links with query parameters (#3990). * matrix.to: Cannot open/preview a new room given by alias (#3991). * matrix.to: The app does not open a permalink from matrix.to (#3993). * Logs: Add a size limitation so that we can upload them in bug reports (#3903). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.9](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.9)). -Changes in 1.1.6 (2021-01-27) -================================================= - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.1.6 (2021-01-27) 🐛 Bugfix + * Navigation: Unable to open a room from a room list (#3863). * AuthVC: Fix social login layout issue. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.8](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.8)). -Changes in 1.1.5 (2021-01-18) -================================================= +## Changes in 1.1.5 (2021-01-18) -✨ Features - * - -🙌 Improvements - * - -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.7](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.7)). -Changes in 1.1.4 (2021-01-15) -================================================= +## Changes in 1.1.4 (2021-01-15) ✨ Features + * Change Pin inside the app (#3881) * AuthVC: Add social login (#3846). * Invite friends: Add the ability to invite friends outside of Element in a few places (#3840). 🙌 Improvements + * Bug report: Add "Continue in background" button (#3816). * Show user id in the room invite preview screen (#3839) * AuthVC: SSO authentication now use redirect URL instead of fallback page (#3846). 🐛 Bugfix + * Crash report cannot be submitted (on small phones) (#3819) * Prevent navigation controller from pushing same view controller (#3924) * AuthVC: Fix recaptcha view cropping (#3940). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.6)). -Changes in 1.1.3 (2020-12-18) -================================================= - -✨ Features - * +## Changes in 1.1.3 (2020-12-18) 🙌 Improvements + * AuthVC: Update SSO button wording. * Log NSE memory footprint for debugging purposes. 🐛 Bugfix + * Refresh account details on NSE runs (#3719). -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.3)). * Upgrade MatrixKit version ([v0.13.4](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.4)). -Changes in 1.1.2 (2020-12-02) -================================================= +## Changes in 1.1.2 (2020-12-02) ✨ Features + * Added blur background support for iPhone and iPad (#3842) 🙌 Improvements + * Room History: Remove the report option for outgoing messages. * Empty views: Add empty screen when there is nothing to display on home, people, favourites and rooms screen (#3836). * BuildSettings.messageDetailsAllowShare now hide /show action button in document preview (#3864). 🐛 Bugfix + * Restore the modular widget events in the rooms histories. ⚠️ API Changes + * Slight API changes for SlidingModalPresenter to avoid race conditions while sharing a presenter. (#3842) -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.2)). -Changes in 1.1.1 (2020-11-24) -================================================= - -✨ Features - * +## Changes in 1.1.1 (2020-11-24) 🙌 Improvements + * Home: Add empty screen when there is nothing to display (#3823). -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.1)). -Changes in 1.1.0 (2020-11-17) -================================================= - -✨ Features - * +## Changes in 1.1.0 (2020-11-17) 🙌 Improvements + * Upgrade to Xcode 12 (#3712). * Xcode 12: Make Xcode 12 and fastlane(xcodebuild) happy while some pods are not updated. * Update Gemfile.lock. @@ -1138,33 +605,24 @@ Changes in 1.1.0 (2020-11-17) * Room invites: Allow to accept a room invite without preview. 🐛 Bugfix + * Fix analytics in order to track performance improvements. * Fix long placeholder cropping in room input toolbar. Prevent long placeholder to be displayed on small devices (#3790). ⚠️ API Changes + * Xcode 12 is now mandatory to build the project. * CocoaPods 1.10.0 is mandatory. * Remove MXDecryptionFailureDelegate in flavor of agnostic MXAnalyticsDelegate. -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.13.0](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.13.0)). -Changes in 1.0.18 (2020-10-27) -================================================= - -✨ Features - * +## Changes in 1.0.18 (2020-10-27) 🙌 Improvements + * Secure backup: Add possibility to not expose recovery key when creating a secure backup. * BuildSettings: Centralise RoomInputToolbar compression mode setting. * Update GBDeviceInfo to 6.4.0 (#3570). @@ -1176,86 +634,39 @@ Changes in 1.0.18 (2020-10-27) * NSE: Utilize MXBackgroundService on pushes, to make messages available when the app is foregrounded (#3579). 🐛 Bugfix + * Fix typos in UI -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.26](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.26)). -Changes in 1.0.17 (2020-10-14) -================================================= - -✨ Features - * +## Changes in 1.0.17 (2020-10-14) 🙌 Improvements + * Device verification: Do not check for existing key backup after SSSS & Cross-Signing reset. * Cross-signing: Detect when cross-signing keys have been changed. * Make copying & pasting media configurable. -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.25](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.25)). -Changes in 1.0.16 (2020-10-13) -================================================= - -✨ Features - * +## Changes in 1.0.16 (2020-10-13) 🙌 Improvements + * Self-verification: Update complete security screen wording (#3743). -🐛 Bugfix - * - -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.24](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.24)). -Changes in 1.0.15 (2020-10-09) -================================================= - -✨ Features - * +## Changes in 1.0.15 (2020-10-09) 🙌 Improvements + * Room: Make topic links tappable (#3713). * Room: Add more to long room topics (#3715). * Security screens: Update automatically shields when the trust changes. @@ -1263,34 +674,22 @@ Changes in 1.0.15 (2020-10-09) * Pasteboard: Use MXKPasteboardManager.pasteboard on copy operations (#3732). 🐛 Bugfix + * Push: Check crypto has keys to decrypt an event before decryption attempt, avoid sync loops on failure. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.23](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.23)). -Changes in 1.0.14 (2020-10-02) -================================================= - -✨ Features - * +## Changes in 1.0.14 (2020-10-02) 🙌 Improvements + * i18n: Add Estonian (et). * MXSession: Make vc_canSetupSecureBackup reusable. 🐛 Bugfix + * Settings: New phone number is invisible in dark theme (#3218). * Handle call actions on other devices on VoIP pushes (#3677). * Fix "Unable to open the link" error when using non-Safari browsers (#3673). @@ -1299,28 +698,14 @@ Changes in 1.0.14 (2020-10-02) * PIN: Fix layout on small screens. * PIN: Fix code bypass on fast switching. -⚠️ API Changes - * - -🗣 Translations - * -🧱 Build - * - -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.22](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.22)). -Changes in 1.0.13 (2020-09-30) -================================================= - -✨ Features - * +## Changes in 1.0.13 (2020-09-30) 🙌 Improvements + * Room: Differentiate wordings for DMs. * Room: New Room Settings screen. * PIN code: Implement not allowed PINs feature. There is no restriction by default. @@ -1332,6 +717,7 @@ Changes in 1.0.13 (2020-09-30) * Architecture: Create AppDelegate.handleAppState() as central point to handle application state. 🐛 Bugfix + * Timeline: Hide encrypted history (pre-invite) (#3660). * PIN Code: Do not show verification dialog at the top of PIN code. * Complete Security: Let the authentication flow display it if this flow is not complete yet. @@ -1340,107 +726,62 @@ Changes in 1.0.13 (2020-09-30) * Various theme fixes. * Room: Fix message not shown after push issue (#3672). -⚠️ API Changes - * - -🗣 Translations - * - -🧱 Build - * - -Others - * - -Changes in 1.0.12 (2020-09-16) - -✨ Features - * - -🙌 Improvements - * +## Changes in 1.0.12 (2020-09-16) 🐛 Bugfix - * -⚠️ API Changes - * - -🗣 Translations - * - -🧱 Build - * - -Others * Improvements: * Upgrade MatrixKit version ([v0.12.21](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.21)). * Upgrade MatrixKit version ([v0.12.20](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.20)). -Changes in 1.0.11 (2020-09-15) -================================================= - -✨ Features - * +## Changes in 1.0.11 (2020-09-15) 🙌 Improvements + * Room: Collapse state messages on room creation (#3629). * AuthVC: Make force PIN working for registration as well. * AppDelegate: Do not show incoming key verification requests while authenticating. 🐛 Bugfix + * AuthVC: Fix PIN setup that broke cross-signing bootstrap. * Loading animation: Fix the bug where, after authentication, the animation disappeared too early and made auth screen flashed. -⚠️ API Changes - * - -🗣 Translations - * - -🧱 Build - * - Others + * buildRelease.sh: Pass a `git_tag` parameter to fastlane because fastlane `git_branch` method can fail. -Improvements: - - -Changes in 1.0.10 (2020-09-08) -================================================= +## Changes in 1.0.10 (2020-09-08) ✨ Features + * 🙌 Improvements + * AppDelegate: Convert to Swift (#3594). * Contextualize floating button actions per tab (#3627). 🐛 Bugfix + * Show pin code screen on every foreground (#3620). * Close keyboard on pin code screen (#3622). * Fix content leakage on pin code protection (#3624). ⚠️ API Changes - * - -🗣 Translations + * 🧱 Build + * buildRelease.sh: Make sure it works for both branches and tags -Others - * - Improvements: * Upgrade MatrixKit version ([v0.12.18](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.18)). -Changes in 1.0.9 (2020-09-03) -================================================= +## Changes in 1.0.9 (2020-09-03) Features: * @@ -1467,8 +808,7 @@ Build: Test: * -Changes in 1.0.8 (2020-09-03) -================================================= +## Changes in 1.0.8 (2020-09-03) Features: * @@ -1496,8 +836,7 @@ Build: Test: * -Changes in 1.0.7 (2020-08-28) -================================================= +## Changes in 1.0.7 (2020-08-28) Features: * @@ -1526,8 +865,7 @@ Build: Test: * -Changes in 1.0.6 (2020-08-26) -================================================= +## Changes in 1.0.6 (2020-08-26) Features: * @@ -1562,8 +900,7 @@ Build: Test: * -Changes in 1.0.5 (2020-08-13) -================================================= +## Changes in 1.0.5 (2020-08-13) Features: * @@ -1592,8 +929,7 @@ Build: Test: * -Changes in 1.0.4 (2020-08-07) -================================================= +## Changes in 1.0.4 (2020-08-07) Features: * @@ -1620,8 +956,7 @@ Build: Test: * -Changes in 1.0.3 (2020-08-05) -=============================================== +## Changes in 1.0.3 (2020-08-05) Improvements: * Upgrade MatrixKit version ([v0.12.10](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.10)). @@ -1641,15 +976,13 @@ Bug fix: * AuthenticationViewController: Fix custom homeserver textfield scroll issue (#3467). * Rebranding: Update provisioning universal link domain (#3483). -Changes in 1.0.2 (2020-07-28) -=============================================== +## Changes in 1.0.2 (2020-07-28) Bug fix: * Registration: Do not display the skip button if email is mandatory (#3417). * NotificationService: Do not cache showDecryptedContentInNotifications setting (#3444). -Changes in 1.0.1 (2020-07-17) -=============================================== +## Changes in 1.0.1 (2020-07-17) Bug fix: * SettingsViewController: Fix crash when scrolling to Discovery (#3401). @@ -1659,8 +992,7 @@ Bug fix: * RecentsViewController: Fix crash on dequeue some cells (#3433). * NotificationService: Fix losing sound when not showing decrypted content in notifications (#3423). -Changes in 1.0.0 (2020-07-13) -=============================================== +## Changes in 1.0.0 (2020-07-13) Improvements: * Rename Riot to Element @@ -1703,8 +1035,7 @@ Bug fix: * RecentsViewController: Fix crash on dequeue some cells (#3433). * NotificationService: Fix losing sound when not showing decrypted content in notifications (#3423). -Changes in 0.11.6 (2020-06-30) -=============================================== +## Changes in 0.11.6 (2020-06-30) Improvements: * Upgrade MatrixKit version ([v0.12.7](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.7)). @@ -1724,25 +1055,22 @@ Bug fix: * CallVC: Declined calls now properly reset call view controller, thanks to @Legi429 (#2877). * PreviewRoomTitleView: Fix inviter display name (#2520). -Changes in 0.11.5 (2020-05-18) -=============================================== +## Changes in 0.11.5 (2020-05-18) Improvements: * Upgrade MatrixKit version ([v0.12.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.6)). Bug fix: - * AuthenticationViewController: Adapt UIWebView changes in MatrixKit (PR #3242). + * AuthenticationViewController: Adapt UIWebView ## Changes in MatrixKit (PR #3242). * Share extension & Siri intent: Do not fail when sending to locally unverified devices (#3252). * CountryPickerVC: Search field is invisible in dark theme (#3219). -Changes in 0.11.4 (2020-05-08) -=============================================== +## Changes in 0.11.4 (2020-05-08) Bug fix: * App asks to verify all devices on every startup for no valid reason (#3221). -Changes in 0.11.3 (2020-05-07) -=============================================== +## Changes in 0.11.3 (2020-05-07) Improvements: * Upgrade MatrixKit version ([v0.12.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.3)). @@ -1754,8 +1082,7 @@ Bug fix: * KeyVerificationSelfVerifyStartViewController has no navigation (#3195). * Self-verification: QR code scanning screen refers to other-person scanning (#3189). -Changes in 0.11.2 (2020-05-01) -=============================================== +## Changes in 0.11.2 (2020-05-01) Improvements: * Upgrade MatrixKit version ([v0.12.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.2)). @@ -1770,8 +1097,7 @@ Improvements: Bug fix: * AuthenticationViewController: Remove fallback to matrix.org when authentication failed (PR #3165). -Changes in 0.11.1 (2020-04-24) -=============================================== +## Changes in 0.11.1 (2020-04-24) Improvements: * Upgrade MatrixKit version ([v0.12.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.1)). @@ -1784,8 +1110,7 @@ Bug fix: * Settings: Security, present complete security when my device is not trusted (#3127). * Settings: Security: Do not ask to complete security if there is no cross-signing (#3147). -Changes in 0.11.0 (2020-04-17) -=============================================== +## Changes in 0.11.0 (2020-04-17) Improvements: * Upgrade MatrixKit version ([v0.12.0](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.0)). @@ -1811,8 +1136,7 @@ Bug fix: Bug fix: * Considered safe area insets for some screens (PR #3084). -Changes in 0.10.5 (2020-04-01) -=============================================== +## Changes in 0.10.5 (2020-04-01) Bug fix: * Fix error when joining some public rooms, thanks to @chrismoos (PR #2888). @@ -1820,8 +1144,7 @@ Bug fix: * Push notifications: Avoid any automatic deactivation (vector-im/riot-ios#3017). * Fix links breaking user out of SSO flow, thanks to @schultetwin (#3039). -Changes in 0.10.4 (2019-12-11) -=============================================== +## Changes in 0.10.4 (2019-12-11) Improvements: * ON/OFF Cross-signing development in a Lab setting (#2855). @@ -1829,8 +1152,7 @@ Improvements: Bug fix: * Device Verification: Stay in infinite waiting (#2878). -Changes in 0.10.3 (2019-12-05) -=============================================== +## Changes in 0.10.3 (2019-12-05) Improvements: * Upgrade MatrixKit version ([v0.11.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.11.3)). @@ -1851,14 +1173,12 @@ Bug fix: * RoomVC: Tapping on location links gives 'unable to open link' (#2803). * RoomVC: Reply to links fail with 'unable to open link' (#2804). -Changes in 0.10.2 (2019-11-15) -=============================================== +## Changes in 0.10.2 (2019-11-15) Bug fix: * Integrations: Fix terms consent display when they are required. -Changes in 0.10.1 (2019-11-06) -=============================================== +## Changes in 0.10.1 (2019-11-06) Improvements: * Upgrade MatrixKit version ([v0.11.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.11.2)). @@ -1873,8 +1193,7 @@ Bug fix: * Device Verification: Selecting 'start verification' from a keyshare request wedges you in an entirely blank verification screen (#2504). * Tab bar icons are not centered vertically on iOS 13 (#2802). -Changes in 0.10.0 (2019-10-11) -=============================================== +## Changes in 0.10.0 (2019-10-11) Improvements: * Upgrade MatrixKit version ([v0.11.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.11.1)). @@ -1906,8 +1225,7 @@ Improvements: Bug fix: * Theme: Make button theming work (#2734). -Changes in 0.9.5 (2019-09-20) -=============================================== +## Changes in 0.9.5 (2019-09-20) Bug fix: * VoiceOver: RoomVC: Fix some missing accessibility labels for buttons (#2722). @@ -1915,21 +1233,18 @@ Bug fix: * VoiceOver: RoomVC: Do not lose the focus on the timeline when paginating (with 3 fingers) (#2720). * VoiceOver: RoomVC: No VoiceOver on media (#2726). -Changes in 0.9.4 (2019-09-13) -=============================================== +## Changes in 0.9.4 (2019-09-13) Improvements: * Authentication: Improve the webview used for SSO (#2715). -Changes in 0.9.3 (2019-09-10) -=============================================== +## Changes in 0.9.3 (2019-09-10) Improvements: * Support Riot configuration link to customise HS and IS (#2703). * Authentication: Create a way to filter and prioritise flows (with handleSupportedFlowsInAuthenticationSession). -Changes in 0.9.2 (2019-08-08) -=============================================== +## Changes in 0.9.2 (2019-08-08) Improvements: * Upgrade MatrixKit version ([v0.10.2](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.10.2)). @@ -1946,14 +1261,12 @@ Bug fix: * Fix crash for search bar customisation in iOS13 (#2626). * Build: Fix build based on git tag. -Changes in 0.9.1 (2019-07-17) -=============================================== +## Changes in 0.9.1 (2019-07-17) Bug fix: * Edits history: Original event is missing (#2585). -Changes in 0.9.0 (2019-07-16) -=============================================== +## Changes in 0.9.0 (2019-07-16) Improvements: * Upgrade MatrixKit version ([v0.10.1](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.10.1)). @@ -1987,15 +1300,13 @@ Bug fix: * Reactions: It lets you react to join/leave events (#2476). * Adjust size of the insert button in the People tab, thanks to @dcordero (PR #2473). -Changes in 0.8.6 (2019-05-06) -=============================================== +## Changes in 0.8.6 (2019-05-06) Bug fix: * Device Verification: Fix bell emoji name. * Device Verification: Fix buttons colors in dark theme. -Changes in 0.8.5 (2019-05-03) -=============================================== +## Changes in 0.8.5 (2019-05-03) Improvements: * Upgrade MatrixKit version ([v0.9.9](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.9.9)). @@ -2018,8 +1329,7 @@ Bug fix: * Avoid crashes with tableview reload animation in settings and room settings (PR #2364). * Media picker: Fix some retain cycles (PR #2382). -Changes in 0.8.4 (2019-03-21) -=============================================== +## Changes in 0.8.4 (2019-03-21) Improvements: * Upgrade MatrixKit version ([v0.9.8](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.9.8)). @@ -2028,8 +1338,7 @@ Improvements: Bug fix: * Unable to open a file attachment of a room message (#2338). -Changes in 0.8.3 (2019-03-13) -=============================================== +## Changes in 0.8.3 (2019-03-13) Improvements: * Upgrade MatrixKit version ([v0.9.7](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.9.7)). @@ -2039,8 +1348,7 @@ Bug fix: * Widgets: Pass scalar_token only when required. -Changes in 0.8.2 (2019-03-11) -=============================================== +## Changes in 0.8.2 (2019-03-11) Improvements: * Upgrade MatrixKit version ([v0.9.6](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.9.6)). @@ -2065,8 +1373,7 @@ Bug fix: * 3D touching a link can lock the app (#1818). * Do not display key backup UI if the user has no e2e rooms (#2304). -Changes in 0.8.1 (2019-02-19) -=============================================== +## Changes in 0.8.1 (2019-02-19) Improvements: * Key backup: avoid to refresh the home room list on every backup state change (#2265). @@ -2076,8 +1383,7 @@ Bug fix: * Fix navigation bar background after accepting an invite (PR #2261) * Tabs at the top of Room Details are hard to see in dark theme (#2260). -Changes in 0.8.0 (2019-02-15) -=============================================== +## Changes in 0.8.0 (2019-02-15) Improvements: * Upgrade MatrixKit version (v0.9.5 - https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.9.5). @@ -2111,21 +1417,18 @@ Bug fix: * Reskin: Jump to first unread message doesn't show up in 0.7.12 TF (#2218). * Reskin: Sometimes the roomVC navigation bar is tranparent (#2252). -Changes in 0.7.11 (2019-01-08) -=============================================== +## Changes in 0.7.11 (2019-01-08) Improvements: * Upgrade MatrixKit version (v0.9.3). * Fix almost all the warnings caused by -Wstrict-prototypes, thanks to @fridtjof (PR #2155). -Changes in 0.7.10 (2019-01-04) -=============================================== +## Changes in 0.7.10 (2019-01-04) Bug fix: * Share extension: Fix screenshot sharing (#2022). Improve image sharing performance to avoid out of memory crash. -Changes in 0.7.9 (2019-01-04) -=============================================== +## Changes in 0.7.9 (2019-01-04) Improvements: * Upgrade MatrixKit version (v0.9.2). @@ -2133,8 +1436,7 @@ Improvements: Bug fix: * Registration: email or phone number is no more skippable (#2140). -Changes in 0.7.8 (2018-12-12) -=============================================== +## Changes in 0.7.8 (2018-12-12) Improvements: * Upgrade MatrixKit version (v0.9.1). @@ -2146,8 +1448,7 @@ Improvements: Bug fix: * Registration: reCAPTCHA does not work anymore on iOS 10 (#2119). -Changes in 0.7.7 (2018-10-31) -=============================================== +## Changes in 0.7.7 (2018-10-31) Improvements: * Upgrade MatrixKit version (v0.8.6). @@ -2155,21 +1456,18 @@ Improvements: Bug fix: * Notifications: old notifications can reappear (#1985). -Changes in 0.7.6 (2018-10-05) -=============================================== +## Changes in 0.7.6 (2018-10-05) Bug fix: * Wrong version number. -Changes in 0.7.5 (2018-10-05) -=============================================== +## Changes in 0.7.5 (2018-10-05) Improvements: * Upgrade MatrixKit version (v0.8.5). * Server Quota Notices: Implement the blue banner (#1937). -Changes in 0.7.4 (2018-09-26) -=============================================== +## Changes in 0.7.4 (2018-09-26) Improvements: * Upgrade MatrixKit version (v0.8.4). @@ -2183,8 +1481,7 @@ Bug fix: * Fix missing read receipts when lazy-loading room members. * Weird text color when selecting a message (#2046). -Changes in 0.7.3 (2018-08-27) -=============================================== +## Changes in 0.7.3 (2018-08-27) Improvements: * Upgrade MatrixKit version (v0.8.3). @@ -2193,8 +1490,7 @@ Bug fix: * Fix input toolbar reset in RoomViewController on MXSession state change (#2006 and #2008). * Fix user interaction disabled in master view of UISplitViewContoller when selecting a room (#2005). -Changes in 0.7.2 (2018-08-24) -=============================================== +## Changes in 0.7.2 (2018-08-24) Improvements: * Upgrade MatrixKit version (v0.8.2). @@ -2205,8 +1501,7 @@ Bug fix: * Recents: Avoid to open a room twice (it crashed on room creation on quick HSes). * Riot-bot: Do not try to create a room with it if the user homeserver is not federated. -Changes in 0.7.1 (2018-08-17) -=============================================== +## Changes in 0.7.1 (2018-08-17) Improvements: * Upgrade MatrixKit version (v0.8.1). @@ -2216,8 +1511,7 @@ Bug fix: * Direct rooms can be lost on an initial /sync (vector-im/riot-ios/issues/1983). * Fix possible race conditions in direct rooms management. -Changes in 0.7.0 (2018-08-10) -=============================================== +## Changes in 0.7.0 (2018-08-10) Improvements: * Upgrade MatrixKit version (v0.8.0). @@ -2238,22 +1532,19 @@ Improvements: Bug fix: * Multiple rooms can be opened (#1967). -Changes in 0.6.20 (2018-07-13) -=============================================== +## Changes in 0.6.20 (2018-07-13) Improvements: * Update contact permission text in order to be clearer about the reasons for access to the address book. -Changes in 0.6.19 (2018-07-05) -=============================================== +## Changes in 0.6.19 (2018-07-05) Improvements: Bug fix: * RoomVC: Fix duplicated read receipts (regression due to read receipts performance improvement). -Changes in 0.6.18 (2018-07-03) -=============================================== +## Changes in 0.6.18 (2018-07-03) Improvements: * RoomVC: Add a re-request keys button on message unable to decrypt (#1879). @@ -2268,8 +1559,7 @@ Bug fix: * Lag in typing (#1820). * E2E messages not decrypted in notifs after logging back in (#1914). -Changes in 0.6.17 (2018-06-01) -=============================================== +## Changes in 0.6.17 (2018-06-01) Improvements: * Upgrade MatrixKit version (v0.7.14). @@ -2285,8 +1575,7 @@ Bug fix: Translations: * Enable Icelandic. -Changes in 0.6.16 (2018-05-23) -=============================================== +## Changes in 0.6.16 (2018-05-23) Improvements: * Upgrade MatrixKit version (v0.7.12). @@ -2301,8 +1590,7 @@ Bug fix: * Timestamps say 'Yesterday' when it is today (#1274), thanks to @pixlwave (PR #1865). * RoomVC: messages with link blink forever #1869 -Changes in 0.6.15 (2018-04-23) -=============================================== +## Changes in 0.6.15 (2018-04-23) Improvements: * Upgrade MatrixKit version (v0.7.11). @@ -2310,8 +1598,7 @@ Improvements: Bug fix: * Regression: Sending a photo from the photo library causes a crash. -Changes in 0.6.14 (2018-04-20) -=============================================== +## Changes in 0.6.14 (2018-04-20) Improvements: * Upgrade MatrixKit version (v0.7.10). @@ -2326,8 +1613,7 @@ Bug fixes: * All rooms showing the same avatar (#1673). * App fails to logout on unknown token (#1839). -Changes in 0.6.13 (2018-03-30) -=============================================== +## Changes in 0.6.13 (2018-03-30) Improvements: * Upgrade MatrixKit version (v0.7.9). @@ -2336,8 +1622,7 @@ Improvements: Bug fixes: * Room summary is not updated after redaction of the room display name (vector-im/riot-ios#1822). -Changes in 0.6.12 (2018-03-12) -=============================================== +## Changes in 0.6.12 (2018-03-12) Improvements: * Upgrade MatrixKit version (v0.7.8). @@ -2357,8 +1642,7 @@ Bug Fix: * Crypto: e2e devices list not shown (#1782). * Direct Chat: a room was marked as direct by mistake when I joined it. -Changes in 0.6.11 (2018-02-27) -=============================================== +## Changes in 0.6.11 (2018-02-27) Improvements: * Upgrade MatrixKit version (v0.7.7). @@ -2366,8 +1650,7 @@ Improvements: Bug Fix: * My communities screen is empty despite me being in several groups (#1792). -Changes in 0.6.10 (2018-02-14) -=============================================== +## Changes in 0.6.10 (2018-02-14) Improvements: * Upgrade MatrixKit version (v0.7.6). @@ -2377,8 +1660,7 @@ Bug Fix: * App crashes on cold start if no account is defined. * flair labels are a bit confusing (#1772). -Changes in 0.6.9 (2018-02-10) -=============================================== +## Changes in 0.6.9 (2018-02-10) Improvements: * Upgrade MatrixKit version (v0.7.5). @@ -2403,8 +1685,7 @@ Bug Fix: Translations: * Catalan, added thanks to @sim6 and @salvadorpla (PR #1767). -Changes in 0.6.8 (2018-01-03) -=============================================== +## Changes in 0.6.8 (2018-01-03) Improvements: * AppDelegate: Enable log to file earlier. @@ -2413,8 +1694,7 @@ Bug Fix: * AppDelegate: Disable again loop on [application isProtectedDataAvailable] because it sometimes makes an OS watchdog kill the app. * Missing Push Notifications (#1696): Show a notification even if the app fails to sync with its hs. -Changes in 0.6.7 (2017-12-27) -=============================================== +## Changes in 0.6.7 (2017-12-27) Improvements: * Upgrade MatrixKit version (v0.7.4). @@ -2426,27 +1706,23 @@ Bug Fix: * Should fix missing push notifications (#1696). * Should fix the application crash on "Failed to grow buffer" when loading local phonebook contacts (https://github.com/matrix-org/riot-ios-rageshakes/issues/779). -Changes in 0.6.6 (2017-12-21) -=============================================== +## Changes in 0.6.6 (2017-12-21) Bug Fix: * Widget: Integrate widget data into widget URL (https://github.com/vector-im/riot-meta/issues/125). * VoIP: increase call invite lifetime from 30 to 60s (https://github.com/vector-im/riot-meta/issues/129). -Changes in 0.6.5 (2017-12-19) -=============================================== +## Changes in 0.6.5 (2017-12-19) Bug Fix: * Push Notifications: Missing push notifications (#1696). -Changes in 0.6.4 (2017-12-05) -=============================================== +## Changes in 0.6.4 (2017-12-05) Bug Fix: * Crypto: The share key dialog can appear with a 'null' device (#1683). -Changes in 0.6.3 (2017-11-30) -=============================================== +## Changes in 0.6.3 (2017-11-30) Improvements: * Upgrade MatrixKit version (v0.7.3). @@ -2469,8 +1745,7 @@ Translations: * Japanese, updated thanks to @yuurii and @libraryxhime. * Russian, updated thanks to @Walter. -Changes in 0.6.2 (2017-11-13) -=============================================== +## Changes in 0.6.2 (2017-11-13) Improvements: * Upgrade MatrixKit version (v0.7.2). @@ -2479,8 +1754,7 @@ Bug Fix: * Share extension silently fails on big pics - eg panoramas (#1627). * Share extension improvements: display the search input by default,... (#1611). -Changes in 0.6.1 (2017-10-27) -=============================================== +## Changes in 0.6.1 (2017-10-27) Improvements: * Upgrade MatrixKit version (v0.7.1). @@ -2491,8 +1765,7 @@ Bug Fix: * CallKit - When I reject or answer a call on one device, it should stop ringing on all other iOS devices (#1618). * The Call View Controller is displayed whereas the call has been cancelled. -Changes in 0.6.0 (2017-10-23) -=============================================== +## Changes in 0.6.0 (2017-10-23) Improvements: * Upgrade MatrixKit version (v0.7.0). @@ -2516,8 +1789,7 @@ Bug Fix: * Member Info page avatars are systematically cropped (iOS 11) (#1590, PR #1604). * Room Preview: the room name and avatar are missing for somepublic rooms (#1603, PR #1605). -Changes in 0.5.6 (2017-10-05) -=============================================== +## Changes in 0.5.6 (2017-10-05) Improvements: * Settings: Pin rooms with missed notifs and unread msg by default (PR #1556). @@ -2525,8 +1797,7 @@ Improvements: Bug Fix: * Fix RAM peak usage when doing an initial sync with large rooms (PR #1553). -Changes in 0.5.5 (2017-10-04) -=============================================== +## Changes in 0.5.5 (2017-10-04) Improvements: * Rageshake: Add a setting to enable (disable) it (PR #1552). @@ -2534,8 +1805,7 @@ Improvements: Bug Fix: * Some rooms have gone nameless after upgrade (PR #1551). -Changes in 0.5.4 (2017-10-03) -=============================================== +## Changes in 0.5.4 (2017-10-03) Improvements: * Upgrade MatrixKit version (v0.6.3). @@ -2570,8 +1840,7 @@ Translations: * Enable Basque, thanks to @osoitz. * Enable Simplified Chinese, thanks to @tonghuix (Note: the push notifications are not translated yet). -Changes in 0.5.3 (2017-08-25) -=============================================== +## Changes in 0.5.3 (2017-08-25) Improvements: * Upgrade MatrixKit version (v0.6.2). @@ -2587,22 +1856,19 @@ Bug Fixes: Translations: * Enable Russian. -Changes in 0.5.2 (2017-08-01) -=============================================== +## Changes in 0.5.2 (2017-08-01) Improvements: * Upgrade MatrixKit version (v0.6.1). * Emojis: Boost size of messages containing only emojis (not only one). * Bug Report: Make the crash dump appear in GH issues created for crashes -Changes in 0.5.1 (2017-08-01) -=============================================== +## Changes in 0.5.1 (2017-08-01) Improvements: * Fix a build issue that appeared after merging to master. -Changes in 0.5.0 (2017-08-01) -=============================================== +## Changes in 0.5.0 (2017-08-01) Improvements: * Upgrade MatrixKit version (v0.6.0). @@ -2634,15 +1900,13 @@ Bug fixes: * Fix the wrong preview layout on iPad described in PR #1372. * Room settings: ticks are badly refreshed (#681). -Changes in 0.4.3 (2017-07-05) -=============================================== +## Changes in 0.4.3 (2017-07-05) Improvement: * Update the application title with "Riot.im". -Changes in 0.4.2 (2017-06-30) -=============================================== +## Changes in 0.4.2 (2017-06-30) Improvements: * Upgrade MatrixKit version (v0.5.2). @@ -2659,8 +1923,7 @@ Bug fixes: * Bug report: Remove the old requirement for an existing email account. * Crash report: Do not loose what the user typed when debackgrounding the app. -Changes in 0.4.1 (2017-06-23) -=============================================== +## Changes in 0.4.1 (2017-06-23) Improvements: * Upgrade MatrixKit version (v0.5.1). @@ -2680,8 +1943,7 @@ Bug fixes: * tapping on an unread room on home page takes you to the wrong room (#1304). * Read marker: when being kicked, the "Jump to first unread message" shouldn't be displayed (#1338). -Changes in 0.4.0 (2017-06-16) -=============================================== +## Changes in 0.4.0 (2017-06-16) Improvements: * Upgrade MatrixKit version (v0.5.0). @@ -2703,8 +1965,7 @@ Bug fixes: * Fix crash in [MXKContactManager localContactsSplitByContactMethod] (https://github.com/matrix-org/riot-ios-rageshakes#36). * Fix App crashes on [AvatarGenerator imageFromText:withBackgroundColor:] (#657). -Changes in 0.3.13 (2017-03-23) -=============================================== +## Changes in 0.3.13 (2017-03-23) Improvements: * Upgrade MatrixKit version (v0.4.11). @@ -2713,8 +1974,7 @@ Bug fixes: * Chat screen: image thumbnails management is broken (#1121). * Image viewer repeatedly loses overlay menu (#1109). -Changes in 0.3.12 (2017-03-21) -=============================================== +## Changes in 0.3.12 (2017-03-21) Improvements: * Upgrade MatrixKit version (v0.4.10). @@ -2724,8 +1984,7 @@ Bug fixes: * Chat screen - The missed discussions badge is missing in the navigation bar. -Changes in 0.3.11 (2017-03-16) -=============================================== +## Changes in 0.3.11 (2017-03-16) Improvements: * Upgrade MatrixKit version (v0.4.9). @@ -2736,8 +1995,7 @@ Bug fixes: * MSIDSN registration. * [Tablet / split mode] The room member details page is not popped after signing out (#1062). -Changes in 0.3.10 (2017-03-10) -=============================================== +## Changes in 0.3.10 (2017-03-10) Improvements: * Upgrade MatrixKit version (v0.4.8). @@ -2765,8 +2023,7 @@ Bug fixes: * Resend msgs now? needs cancel button if you want to discard them (#306). * Crypto: After importing keys, the newly decrypted msg have a forbidden icon (#1028). -Changes in 0.3.9 (2017-02-08) -=============================================== +## Changes in 0.3.9 (2017-02-08) Improvements: * Upgrade MatrixKit version (v0.4.7). @@ -2791,8 +2048,7 @@ Bug fixes: * App crash: [MXKRoomInputToolbarView contentEditingInputsForAssets:withResult:onComplete:] (#1015). * App crash: [__NSCFString replaceCharactersInRange:withString:]: nil argument (#990). -Changes in 0.3.8 (2017-01-24) -=============================================== +## Changes in 0.3.8 (2017-01-24) Improvements: * Upgrade MatrixKit version (v0.4.6). @@ -2807,8 +2063,7 @@ Bug fixes: * Room details members: wrong unknown wording (#941). * App may crash when user rotates the device while he joins a room. -Changes in 0.3.7 (2017-01-19) -=============================================== +## Changes in 0.3.7 (2017-01-19) Improvements: * Upgrade MatrixKit version (v0.4.5). @@ -2833,14 +2088,12 @@ Bug fixes: * Crash on Create a room button (#935). * Local contacts are missing when the user logs in again (PR #942). -Changes in 0.3.6 (2016-12-23) -=============================================== +## Changes in 0.3.6 (2016-12-23) Improvements: * Add descriptions for access permissions to Camera, Microphone, Photo Gallery and Contacts. -Changes in 0.3.5 (2016-12-19) -=============================================== +## Changes in 0.3.5 (2016-12-19) Improvements: * Upgrade MatrixKit version (v0.4.4). @@ -2864,8 +2117,7 @@ Bug fixes: * Messages: App crashes during drag and drop. * Possible fix of app crash on exception: "UITableView dataSource is not set". -Changes in 0.3.4 (2016-11-23) -=============================================== +## Changes in 0.3.4 (2016-11-23) Improvements: * Upgrade MatrixKit version (v0.4.3). @@ -2877,8 +2129,7 @@ Bug fixes: * Crypto: Do not allow to redact the event that enabled encryption in a room. * Crypto: Made attachments work better cross platform. -Changes in 0.3.3 (2016-11-22) -=============================================== +## Changes in 0.3.3 (2016-11-22) Improvements: * Upgrade MatrixKit version (v0.4.2). @@ -2887,8 +2138,7 @@ Improvements: Bug fixes: * Crypto: Do not allow to redact the event that enabled encryption in a room. -Changes in 0.3.2 (2016-11-18) -=============================================== +## Changes in 0.3.2 (2016-11-18) Improvements: * Upgrade MatrixKit version (v0.4.1). @@ -2898,15 +2148,13 @@ Bug fixes: * Wrong thumbnail shown whilst uploading e2e image (https://github.com/vector-im/vector-ios#795). * [Register flow] Register with a mail address fails (https://github.com/vector-im/vector-ios#799). -Changes in 0.3.1 (2016-11-17) -=============================================== +## Changes in 0.3.1 (2016-11-17) Bug fixes: * Fix padlock icons on text messages. * Fix a random crash when uploading an e2e attachment. -Changes in 0.3.0 (2016-11-17) -=============================================== +## Changes in 0.3.0 (2016-11-17) Improvements: * Upgrade MatrixKit version (v0.4.0). @@ -2923,8 +2171,7 @@ Bug fixes: * Search messages tab: background picture covering up the tabs when device is turned horizontaly #654. * Changing notif setting from swipe menu should change the room apparence in the list #525 -Changes in 0.2.3 (2016-09-30) -=============================================== +## Changes in 0.2.3 (2016-09-30) Improvements: * Upgrade MatrixKit version (v0.3.19). @@ -2936,8 +2183,7 @@ Bug fixes: * Room message search: the message date & time are not displayed #361. * Room message search: the search pattern is not highlighted in results #660. -Changes in 0.2.2 (2016-09-27) -=============================================== +## Changes in 0.2.2 (2016-09-27) Improvements: * Upgrade MatrixKit version (v0.3.18). @@ -2953,15 +2199,13 @@ Bug fixes: * Crash due to a race condition in read receipts management #645. * App may crash when the user logs out while a request is pending. -Changes in 0.2.1 (2016-09-15) -=============================================== +## Changes in 0.2.1 (2016-09-15) Bug fixes: * Use Apple version for T&C. * Revert the default IS. -Changes in 0.2.0 (2016-09-15) -=============================================== +## Changes in 0.2.0 (2016-09-15) Improvements: * Update name & icons @@ -2978,8 +2222,7 @@ Bug fixes: * iOS10: App crashes when it wants to access user's data (Photos, Contacts, Camera, Mic) #605. * Chat screen: Hang up icon overlap the send button #614. -Changes in Vector iOS in 0.1.17 (2016-09-08) -=============================================== +## Changes in Vector iOS in 0.1.17 (2016-09-08) Improvements: * Upgrade MatrixKit version (v0.3.16). @@ -3031,8 +2274,7 @@ Bug fixes: * Sync has got stuck while the app was backgrounded #506. * Handle 404 (Event not found) on permalinks #484. -Changes in Vector iOS in 0.1.16 (2016-08-25) -=============================================== +## Changes in Vector iOS in 0.1.16 (2016-08-25) Improvements: * Upgrade MatrixKit version (v0.3.15). @@ -3041,8 +2283,7 @@ Bug fixes: * Rooms list: Fix crash when computing recents. * Settings: Fix crash when logging out. -Changes in Vector iOS in 0.1.15 (2016-08-25) -=============================================== +## Changes in Vector iOS in 0.1.15 (2016-08-25) Improvements: * Upgrade MatrixKit version (v0.3.14). @@ -3071,8 +2312,7 @@ Bug fixes: * MXHTTPClient: Fix crash: "Task created in a session that has been invalidated" #490. * Call: the remote and local video are not scaled to fill the video container #537. -Changes in Vector iOS in 0.1.14 (2016-08-01) -=============================================== +## Changes in Vector iOS in 0.1.14 (2016-08-01) Improvements: * Upgrade MatrixKit version (v0.3.13). @@ -3092,8 +2332,7 @@ Bug fixes: * Fixed crash in the room screen reported by GA. * Fixed crash in [AppDelegate applicationDidBecomeActive:] #489. -Changes in Vector iOS in 0.1.13 (2016-07-26) -=============================================== +## Changes in Vector iOS in 0.1.13 (2016-07-26) Improvements: * Upgrade MatrixKit version (v0.3.12). @@ -3103,8 +2342,7 @@ Bug fixes: * Confirmation prompt before opping someone to same power level #461. * Room Settings: The room privacy setting text doesn't fit in phone mode #429. -Changes in Vector iOS in 0.1.12 (2016-07-15) -=============================================== +## Changes in Vector iOS in 0.1.12 (2016-07-15) Improvements: * Upgrade MatrixKit version (v0.3.11). @@ -3125,8 +2363,7 @@ Bug fixes: * Room Settings: check room permissions and grey out those boxes (disable) if you can't change them #430. * Room Settings: if there isn't a topic (new rooms) you can't actually change/set it. #441. -Changes in Vector iOS in 0.1.11 (2016-07-01) -=============================================== +## Changes in Vector iOS in 0.1.11 (2016-07-01) Improvements: * Upgrade MatrixKit version (v0.3.10). @@ -3163,8 +2400,7 @@ Bug fixes: * Room members: double loading wheel #180. * App crashes on '/join' command when no param is provided. -Changes in Vector iOS in 0.1.10 (2016-06-04) -=============================================== +## Changes in Vector iOS in 0.1.10 (2016-06-04) Improvements: * Directory section is displayed by default in Messages when recents list is empty. @@ -3172,8 +2408,7 @@ Improvements: * Room Participants: Increase the search field from 44px to 50px high to give it slightly more prominence. * Room Participants - Search bar: Adjust green separator to make it more obviously tappable and less like a header. -Changes in Vector iOS in 0.1.9 (2016-06-02) -=============================================== +## Changes in Vector iOS in 0.1.9 (2016-06-02) Improvements: * Upgrade MatrixKit version (v0.3.9). @@ -3185,8 +2420,7 @@ Bug fixes: * Room avatars on matrix.org are badly rendered in the directory from a vector.im account #355. * Authentication: "Send Reset Email" is truncated on iPhone 4S. -Changes in Vector iOS in 0.1.8 (2016-06-01) -=============================================== +## Changes in Vector iOS in 0.1.8 (2016-06-01) Improvements: * Upgrade MatrixKit version (v0.3.8). @@ -3227,8 +2461,7 @@ Bug fixes: * Settings: Profile avatar is not clickable #351. * Default text in the memberlist search box would be less confusing if it was 'Search/invite by...' instead of the other way around #349. -Changes in Vector iOS in 0.1.6 (2016-05-04) -=============================================== +## Changes in Vector iOS in 0.1.6 (2016-05-04) Improvements: * Upgrade MatrixKit version (v0.3.7). @@ -3250,8 +2483,7 @@ Bug fixes: * Media Picker: Fix icons used on video preview. * Room Participants - Search session: the return key must be 'Done' instead of 'Search' #292. -Changes in Vector iOS in 0.1.5 (2016-04-27) -=============================================== +## Changes in Vector iOS in 0.1.5 (2016-04-27) Improvements: * Chat Screen: Ability to copy event permalinks into the pasteboard from the edit menu #225 @@ -3260,8 +2492,7 @@ Bug fixes: * Fix crash when rotating 6+ or iPad at app start-up. * Universal link on an unjoined room + an event iD is not properly managed #246. -Changes in Vector iOS in 0.1.4 (2016-04-26) -=============================================== +## Changes in Vector iOS in 0.1.4 (2016-04-26) Improvements: * Upgrade MatrixKit version (v0.3.6). @@ -3297,8 +2528,7 @@ Bug fixes: * Chat header: Room details opening is delayed #181. * Messages: Room creation button does not respond #249. -Changes in Vector iOS in 0.1.3 (2016-04-08) -=============================================== +## Changes in Vector iOS in 0.1.3 (2016-04-08) Improvements: * Upgrade MatrixKit version (v0.3.5). @@ -3322,8 +2552,7 @@ Bug fixes: * Chat screen: Resume on empty room (Please select a room) #128. * Room members: Keyboard is dismissed at each tap (when search result has been scrolled once). -Changes in Vector iOS in 0.1.2 (2016-03-17) -=============================================== +## Changes in Vector iOS in 0.1.2 (2016-03-17) Improvements: * Upgrade MatrixKit version (v0.3.4). @@ -3348,8 +2577,7 @@ Bug fixes: * Chat: scrolling to bottom when opening new rooms seems unreliable #148. * Chat: persistent unsent messages #164. -Changes in Vector iOS in 0.1.1 (2016-03-07) -=============================================== +## Changes in Vector iOS in 0.1.1 (2016-03-07) Improvements: * Upgrade MatrixKit version (v0.3.3). @@ -3377,13 +2605,11 @@ Bug fixes: * Media Picker: fix layout issues. * Media Picker: Launch must be speed up. -Changes in Vector iOS in 0.1.0 (2016-01-29) -=============================================== +## Changes in Vector iOS in 0.1.0 (2016-01-29) * Upgrade MatrixKit version (v0.3.1). * Implement Visual Design v1.3 (80% done). -Changes in Vector iOS in 0.0.1 (2015-11-16) -=============================================== +## Changes in Vector iOS in 0.0.1 (2015-11-16) * Creation : The first implementation of Vector application based on Matrix iOS Kit v0.2.7. diff --git a/changelog.d/4393.doc b/changelog.d/4393.doc new file mode 100644 index 000000000..fa780553b --- /dev/null +++ b/changelog.d/4393.doc @@ -0,0 +1 @@ +Convert CHANGES to MarkDown. \ No newline at end of file From 98212767632ad46398ad717a1f5b47aa884a8890 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:45:59 +0100 Subject: [PATCH 65/87] Fix warnings: Block implicitly retains 'self' --- .../Contacts/DataSources/ContactsDataSource.m | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index 52a68f130..b2aa27db5 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -196,21 +196,24 @@ [hsUserDirectoryOperation cancel]; hsUserDirectoryOperation = nil; } + + MXWeakify(self); hsUserDirectoryOperation = [self.mxSession.matrixRestClient searchUsers:searchText limit:50 success:^(MXUserSearchResponse *userSearchResponse) { - - filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; + MXStrongifyAndReturnIfNil(self); + + self->filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; // Keep the response order as the hs ordered users by relevance for (MXUser *mxUser in userSearchResponse.results) { MXKContact *contact = [[MXKContact alloc] initMatrixContactWithDisplayName:mxUser.displayname andMatrixID:mxUser.userId]; - [filteredMatrixContacts addObject:contact]; + [self->filteredMatrixContacts addObject:contact]; } - hsUserDirectoryOperation = nil; + self->hsUserDirectoryOperation = nil; - _userDirectoryState = userSearchResponse.limited ? ContactsDataSourceUserDirectoryStateLoadedButLimited : ContactsDataSourceUserDirectoryStateLoaded; + self->_userDirectoryState = userSearchResponse.limited ? ContactsDataSourceUserDirectoryStateLoadedButLimited : ContactsDataSourceUserDirectoryStateLoaded; // And inform the delegate about the update [self.delegate dataSource:self didCellChange:nil]; @@ -230,28 +233,31 @@ // Disclose the sections shrinkedSectionsBitMask = 0; } + + MXWeakify(self); dispatch_async(searchProcessingQueue, ^{ + MXStrongifyAndReturnIfNil(self); // Reset the current arrays if it is required if (!searchText.length) { - searchProcessingLocalContacts = nil; - searchProcessingMatrixContacts = nil; + self->searchProcessingLocalContacts = nil; + self->searchProcessingMatrixContacts = nil; } else if (unfilteredLocalContacts) { - searchProcessingLocalContacts = unfilteredLocalContacts; - searchProcessingMatrixContacts = unfilteredMatrixContacts; + self->searchProcessingLocalContacts = unfilteredLocalContacts; + self->searchProcessingMatrixContacts = unfilteredMatrixContacts; } - for (NSUInteger index = 0; index < searchProcessingLocalContacts.count;) + for (NSUInteger index = 0; index < self->searchProcessingLocalContacts.count;) { - MXKContact* contact = searchProcessingLocalContacts[index]; + MXKContact* contact = self->searchProcessingLocalContacts[index]; if (![contact hasPrefix:searchText]) { - [searchProcessingLocalContacts removeObjectAtIndex:index]; + [self->searchProcessingLocalContacts removeObjectAtIndex:index]; } else { @@ -260,13 +266,13 @@ } } - for (NSUInteger index = 0; index < searchProcessingMatrixContacts.count;) + for (NSUInteger index = 0; index < self->searchProcessingMatrixContacts.count;) { - MXKContact* contact = searchProcessingMatrixContacts[index]; + MXKContact* contact = self->searchProcessingMatrixContacts[index]; if (![contact hasPrefix:searchText]) { - [searchProcessingMatrixContacts removeObjectAtIndex:index]; + [self->searchProcessingMatrixContacts removeObjectAtIndex:index]; } else { @@ -276,42 +282,42 @@ } // Sort the refreshed list of the invitable contacts - [[MXKContactManager sharedManager] sortAlphabeticallyContacts:searchProcessingLocalContacts]; - [[MXKContactManager sharedManager] sortContactsByLastActiveInformation:searchProcessingMatrixContacts]; + [[MXKContactManager sharedManager] sortAlphabeticallyContacts:self->searchProcessingLocalContacts]; + [[MXKContactManager sharedManager] sortContactsByLastActiveInformation:self->searchProcessingMatrixContacts]; - searchProcessingText = searchText; + self->searchProcessingText = searchText; dispatch_sync(dispatch_get_main_queue(), ^{ // Sanity check: check whether self has been destroyed. - if (!searchProcessingQueue) + if (!self->searchProcessingQueue) { return; } // Render the search result only if there is no other search in progress. - searchProcessingCount --; + self->searchProcessingCount --; - if (!searchProcessingCount) + if (!self->searchProcessingCount) { - if (!forceSearchResultRefresh) + if (!self->forceSearchResultRefresh) { // Update the filtered contacts. - currentSearchText = searchProcessingText; - filteredLocalContacts = searchProcessingLocalContacts; + self->currentSearchText = self->searchProcessingText; + self->filteredLocalContacts = self->searchProcessingLocalContacts; if (!hsUserDirectory) { - filteredMatrixContacts = searchProcessingMatrixContacts; - _userDirectoryState = ContactsDataSourceUserDirectoryStateOfflineLoaded; + self->filteredMatrixContacts = self->searchProcessingMatrixContacts; + self->_userDirectoryState = ContactsDataSourceUserDirectoryStateOfflineLoaded; } if (!self.forceMatrixIdInDisplayName) { - [isMultiUseNameByDisplayName removeAllObjects]; - for (MXKContact* contact in filteredMatrixContacts) + [self->isMultiUseNameByDisplayName removeAllObjects]; + for (MXKContact* contact in self->filteredMatrixContacts) { - isMultiUseNameByDisplayName[contact.displayName] = (isMultiUseNameByDisplayName[contact.displayName] ? @(YES) : @(NO)); + self->isMultiUseNameByDisplayName[contact.displayName] = (self->isMultiUseNameByDisplayName[contact.displayName] ? @(YES) : @(NO)); } } @@ -321,8 +327,8 @@ else { // Launch a new search - forceSearchResultRefresh = NO; - [self searchWithPattern:searchProcessingText forceReset:YES]; + self->forceSearchResultRefresh = NO; + [self searchWithPattern:self->searchProcessingText forceReset:YES]; } } }); From e40978da4497d85c5550d1c4f1bd79da71506135 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:49:11 +0100 Subject: [PATCH 66/87] Updated CHANGES.rst --- CHANGES.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.rst b/CHANGES.rst index 2f2bf111c..7dccb1312 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -29,6 +29,7 @@ Changes to be released in next version Others * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md + * Contacts: Fix implicitly retained self warnings. Changes in 1.4.9 (2021-08-03) ================================================= From 588a10b9e79c25ea1a13c7e93b4aa7890c3508b1 Mon Sep 17 00:00:00 2001 From: Doug Date: Mon, 9 Aug 2021 15:59:46 +0100 Subject: [PATCH 67/87] Add missing Weakify/Strongify. --- Riot/Modules/Contacts/DataSources/ContactsDataSource.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m index b2aa27db5..d52a46b1a 100644 --- a/Riot/Modules/Contacts/DataSources/ContactsDataSource.m +++ b/Riot/Modules/Contacts/DataSources/ContactsDataSource.m @@ -200,6 +200,7 @@ MXWeakify(self); hsUserDirectoryOperation = [self.mxSession.matrixRestClient searchUsers:searchText limit:50 success:^(MXUserSearchResponse *userSearchResponse) { + MXStrongifyAndReturnIfNil(self); self->filteredMatrixContacts = [NSMutableArray arrayWithCapacity:userSearchResponse.results.count]; @@ -237,6 +238,7 @@ MXWeakify(self); dispatch_async(searchProcessingQueue, ^{ + MXStrongifyAndReturnIfNil(self); // Reset the current arrays if it is required @@ -287,13 +289,12 @@ self->searchProcessingText = searchText; + MXWeakify(self); + dispatch_sync(dispatch_get_main_queue(), ^{ // Sanity check: check whether self has been destroyed. - if (!self->searchProcessingQueue) - { - return; - } + MXStrongifyAndReturnIfNil(self); // Render the search result only if there is no other search in progress. self->searchProcessingCount --; From ba83da8f6461dcffe8c36561d887c1028aa124d2 Mon Sep 17 00:00:00 2001 From: ismailgulek Date: Mon, 9 Aug 2021 18:06:08 +0300 Subject: [PATCH 68/87] Update Riot/Modules/Authentication/SSO/SSOURLConstants.swift Co-authored-by: SBiOSoftWhare --- Riot/Modules/Authentication/SSO/SSOURLConstants.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift index 7cc90150d..791987bfc 100644 --- a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift +++ b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift @@ -24,6 +24,6 @@ enum SSOURLConstants { } enum Paths { - static let redirect = "/_matrix/client/r0/login/sso/redirect" + static let redirect = "/_matrix/client/r0/login/sso/redirect/" } } From 996a09a41c86ab331f690785a5977af83d106717 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 17:21:18 +0200 Subject: [PATCH 69/87] Towncrier: Create changelog files for current changes --- CHANGES.md | 23 ----------------------- changelog.d/2368.change | 1 + changelog.d/4520.change | 1 + changelog.d/4575.change | 1 + changelog.d/4596.build | 1 + changelog.d/4642.change | 1 + changelog.d/4655.change | 1 + changelog.d/4656.change | 1 + changelog.d/4671.change | 1 + changelog.d/4671.feature | 1 + changelog.d/4674.doc | 1 + 11 files changed, 10 insertions(+), 23 deletions(-) create mode 100644 changelog.d/2368.change create mode 100644 changelog.d/4520.change create mode 100644 changelog.d/4575.change create mode 100644 changelog.d/4596.build create mode 100644 changelog.d/4642.change create mode 100644 changelog.d/4655.change create mode 100644 changelog.d/4656.change create mode 100644 changelog.d/4671.change create mode 100644 changelog.d/4671.feature create mode 100644 changelog.d/4674.doc diff --git a/CHANGES.md b/CHANGES.md index 448431daf..b085556d8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,26 +1,3 @@ -Changes to be released in next version - -🙌 Improvements - - * Settings: The notifications toggle no longer detects the system's "Deliver Quietly" configuration as disabled (#2368). - * Settings: Adds a link to open the Settings app to quickly configure app notifications. - * VoIP: Text & icon changes on call tiles (#4642). - * Voice messages: Stop recording and go into locked mode when the application becomes inactive (#4656) - * Voice messages: Allow voice message playback control from the iOS lock screen and control center (#4655) - * Voice messages: Improve audio recording quality - * Voice messages: Remove labs setting and enable them by default - * Room: Remove the green border from direct message room avatars (#4520). - * VoIP: Additional changes on call tiles (#4642). - - -🧱 Build - - * Add a script to initialize quickly and easily the project. - -Others - - * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md - ## Changes in 1.4.9 (2021-08-03) 🙌 Improvements diff --git a/changelog.d/2368.change b/changelog.d/2368.change new file mode 100644 index 000000000..7b63bb991 --- /dev/null +++ b/changelog.d/2368.change @@ -0,0 +1 @@ +Settings: The notifications toggle no longer detects the system's "Deliver Quietly" configuration as disabled. \ No newline at end of file diff --git a/changelog.d/4520.change b/changelog.d/4520.change new file mode 100644 index 000000000..1c6a90c72 --- /dev/null +++ b/changelog.d/4520.change @@ -0,0 +1 @@ +Room: Remove the green border from direct message room avatars. diff --git a/changelog.d/4575.change b/changelog.d/4575.change new file mode 100644 index 000000000..a51634204 --- /dev/null +++ b/changelog.d/4575.change @@ -0,0 +1 @@ +Settings: Adds a link to open the Settings app to quickly configure app notifications. diff --git a/changelog.d/4596.build b/changelog.d/4596.build new file mode 100644 index 000000000..8a93f4b48 --- /dev/null +++ b/changelog.d/4596.build @@ -0,0 +1 @@ +Add a script to initialize quickly and easily the project. diff --git a/changelog.d/4642.change b/changelog.d/4642.change new file mode 100644 index 000000000..d933082a9 --- /dev/null +++ b/changelog.d/4642.change @@ -0,0 +1 @@ +VoIP: Additional changes on call tiles. diff --git a/changelog.d/4655.change b/changelog.d/4655.change new file mode 100644 index 000000000..e2d72b835 --- /dev/null +++ b/changelog.d/4655.change @@ -0,0 +1 @@ +Voice messages: Allow voice message playback control from the iOS lock screen and control center. diff --git a/changelog.d/4656.change b/changelog.d/4656.change new file mode 100644 index 000000000..05852ed9b --- /dev/null +++ b/changelog.d/4656.change @@ -0,0 +1 @@ +Voice messages: Stop recording and go into locked mode when the application becomes inactive. diff --git a/changelog.d/4671.change b/changelog.d/4671.change new file mode 100644 index 000000000..4bd61eec5 --- /dev/null +++ b/changelog.d/4671.change @@ -0,0 +1 @@ +Voice messages: Improve audio recording quality. diff --git a/changelog.d/4671.feature b/changelog.d/4671.feature new file mode 100644 index 000000000..4081bc2c2 --- /dev/null +++ b/changelog.d/4671.feature @@ -0,0 +1 @@ +Voice messages: Remove labs setting and enable them by default. diff --git a/changelog.d/4674.doc b/changelog.d/4674.doc new file mode 100644 index 000000000..396acd309 --- /dev/null +++ b/changelog.d/4674.doc @@ -0,0 +1 @@ +Add reference to AppIdentifiers.xcconfig in INSTALL.md. From 1808a2c4465db383d86246170c51c7c3951079fd Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 17:22:54 +0200 Subject: [PATCH 70/87] Xcodegen: Use CHANGES.md --- project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.yml b/project.yml index b2384fd09..095e7067c 100644 --- a/project.yml +++ b/project.yml @@ -8,7 +8,7 @@ configs: fileGroups: - README.md - - CHANGES.rst + - CHANGES.md - AUTHORS.rst - Podfile - project.yml From 273826b1691f4b8e6a8aa1fd9235943c2aa85382 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 17:35:30 +0200 Subject: [PATCH 71/87] PULL_REQUEST_TEMPLATE: Use a true hyperlink for changelog --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a36311fbc..c45428232 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,6 +3,6 @@ * [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md) * [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators * [ ] Pull request is based on the develop branch -* [ ] Pull request contains a changelog file in ./changelog.d. See +* [ ] Pull request contains a [changelog file](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#changelog) in ./changelog.d * [ ] Pull request includes screenshots or videos of UI changes * [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off) From 3119564200093ef73f25af3803e042f36cf25419 Mon Sep 17 00:00:00 2001 From: manuroe Date: Mon, 9 Aug 2021 18:06:09 +0200 Subject: [PATCH 72/87] Merge remote-tracking branch 'origin/develop' into manu/4393_towncrier --- .../Authentication/SSO/SSOAuthenticationService.swift | 6 ++---- Riot/Modules/Authentication/SSO/SSOURLConstants.swift | 3 +-- changelog.d/4362.change | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 changelog.d/4362.change diff --git a/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift b/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift index d00094b85..1ede12851 100644 --- a/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift +++ b/Riot/Modules/Authentication/SSO/SSOAuthenticationService.swift @@ -48,12 +48,10 @@ final class SSOAuthenticationService: NSObject { return nil } - let ssoRedirectPath: String + var ssoRedirectPath = SSOURLConstants.Paths.redirect if let identityProvider = identityProvider { - ssoRedirectPath = SSOURLConstants.Paths.unstableRedirect + identityProvider - } else { - ssoRedirectPath = SSOURLConstants.Paths.redirect + ssoRedirectPath.append(identityProvider) } authenticationComponent.path = ssoRedirectPath diff --git a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift index 01de2ddc9..791987bfc 100644 --- a/Riot/Modules/Authentication/SSO/SSOURLConstants.swift +++ b/Riot/Modules/Authentication/SSO/SSOURLConstants.swift @@ -24,7 +24,6 @@ enum SSOURLConstants { } enum Paths { - static let redirect = "/_matrix/client/r0/login/sso/redirect" - static let unstableRedirect = "/_matrix/client/unstable/org.matrix.msc2858/login/sso/redirect/" + static let redirect = "/_matrix/client/r0/login/sso/redirect/" } } diff --git a/changelog.d/4362.change b/changelog.d/4362.change new file mode 100644 index 000000000..4a9fd4e35 --- /dev/null +++ b/changelog.d/4362.change @@ -0,0 +1 @@ +SSO: Stable ids for MSC 2858. \ No newline at end of file From f6fc2c04c32d87d846834018c0781649fa24904e Mon Sep 17 00:00:00 2001 From: artevaeckt Date: Sun, 8 Aug 2021 08:08:31 +0000 Subject: [PATCH 73/87] Translated using Weblate (German) Currently translated at 100.0% (6 of 6 strings) Translation: Element iOS/Element iOS (Dialogs) Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios-dialogs/de/ --- Riot/Assets/de.lproj/InfoPlist.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Assets/de.lproj/InfoPlist.strings b/Riot/Assets/de.lproj/InfoPlist.strings index e9c801f7e..d5f41184b 100644 --- a/Riot/Assets/de.lproj/InfoPlist.strings +++ b/Riot/Assets/de.lproj/InfoPlist.strings @@ -1,7 +1,7 @@ // Permissions usage explanations "NSCameraUsageDescription" = "Die Kamera wird verwendet, um Fotos und Videos aufzunehmen sowie Videoanrufe durchzuführen."; "NSPhotoLibraryUsageDescription" = "Die Fotobibliothek wird verwendet, um Fotos und Videos zu versenden."; -"NSMicrophoneUsageDescription" = "Das Mikrofon wird verwendet, um Videos aufzunehmen sowie Gespräche zu führen."; +"NSMicrophoneUsageDescription" = "Element benötigt Zugriff auf das Mikrofon um Anrufe zu tätigen und Videos oder Sprachnachrichten aufzunehmen."; "NSContactsUsageDescription" = "Element kann E-Mail-Adressen und Telefonnummern aus deinem Adressbuch zu deinem Matrix-Identitätsserver schicken, um Kontakte zu finden, die bereits Matrix verwenden. Wenn verfügbar, werden persönliche Daten vor dem Versand gehasht. Für weitere Informationen schaue bitte in die Datenschutzerklärung deines Identitätsservers."; "NSCalendarsUsageDescription" = "Sieh dir deine geplanten Meetings in der App an."; "NSFaceIDUsageDescription" = "Face-ID wird zum Zugriff auf deine App verwendet."; From da3c84823310187fca1dd5396648a79f7827f6fd Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Mon, 9 Aug 2021 06:30:28 +0000 Subject: [PATCH 74/87] Translated using Weblate (Swedish) Currently translated at 100.0% (6 of 6 strings) Translation: Element iOS/Element iOS (Dialogs) Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios-dialogs/sv/ --- Riot/Assets/sv.lproj/InfoPlist.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Assets/sv.lproj/InfoPlist.strings b/Riot/Assets/sv.lproj/InfoPlist.strings index 3cc04d4b5..d00b2d989 100644 --- a/Riot/Assets/sv.lproj/InfoPlist.strings +++ b/Riot/Assets/sv.lproj/InfoPlist.strings @@ -2,6 +2,6 @@ "NSCalendarsUsageDescription" = "Se dina schemalagda möten i appen."; // Permissions usage explanations "NSCameraUsageDescription" = "Kameran används för att ta bilder och videor, och ringa videosamtal."; -"NSMicrophoneUsageDescription" = "Mikrofonen används för att spela in videor och ringa samtal."; +"NSMicrophoneUsageDescription" = "Element behöver åtkomst till din mikrofon för att kunna ringa och ta emot samtal samt spela in video och röstmeddelanden."; "NSContactsUsageDescription" = "För att upptäcka kontakter som redan använder Matrix kan Element skicka e-postadresser och telefonnummer i din adressbok till din valda Matrix-identitetsserver. Där det stöds hashas personuppgifter innan de skickas - kontrollera din identitetsservers integritetspolicy för mer information."; "NSFaceIDUsageDescription" = "Face ID används för att komma åt appen."; From 9321a77ab6eb2dc2a666012eb024438dc1287395 Mon Sep 17 00:00:00 2001 From: Thomas Weiland <16715040+HonkXL@users.noreply.github.com> Date: Tue, 10 Aug 2021 10:20:35 +0200 Subject: [PATCH 75/87] fixed typo "adress" issue #4480 --- Riot/Assets/en.lproj/Vector.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index e46028bc4..9731fee82 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -554,7 +554,7 @@ Tap the + to start adding people."; "settings_fail_to_update_password" = "Fail to update password"; "settings_password_updated" = "Your password has been updated"; -"settings_add_3pid_password_title_email" = "Add email adress"; +"settings_add_3pid_password_title_email" = "Add email address"; "settings_add_3pid_password_title_msidsn" = "Add phone number"; "settings_add_3pid_password_message" = "To continue, please enter your password"; "settings_add_3pid_invalid_password_message" = "Invalid credentials"; From 6a7b99efd774b718b4a9f1f3931571731fc5e027 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 10 Aug 2021 09:41:35 +0100 Subject: [PATCH 76/87] Revert "Updated CHANGES.rst" This reverts commit e40978da4497d85c5550d1c4f1bd79da71506135. --- CHANGES.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index 7dccb1312..2f2bf111c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -29,7 +29,6 @@ Changes to be released in next version Others * Docs: Add reference to AppIdentifiers.xcconfig in INSTALL.md - * Contacts: Fix implicitly retained self warnings. Changes in 1.4.9 (2021-08-03) ================================================= From 4293ad402200e17945d5d840df3f24f72fde31e6 Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 10 Aug 2021 09:44:42 +0100 Subject: [PATCH 77/87] Add changelog entry. --- changelog.d/pr_4681.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/pr_4681.misc diff --git a/changelog.d/pr_4681.misc b/changelog.d/pr_4681.misc new file mode 100644 index 000000000..af1064dc1 --- /dev/null +++ b/changelog.d/pr_4681.misc @@ -0,0 +1 @@ +Contacts: Fix implicitly retained self warnings. \ No newline at end of file From 6737d5969478ba1bdb6f361eee2f2bf0309ed40f Mon Sep 17 00:00:00 2001 From: Doug Date: Tue, 10 Aug 2021 10:19:36 +0100 Subject: [PATCH 78/87] Add changelog entry. --- changelog.d/4609.change | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/4609.change diff --git a/changelog.d/4609.change b/changelog.d/4609.change new file mode 100644 index 000000000..22caf1bf4 --- /dev/null +++ b/changelog.d/4609.change @@ -0,0 +1 @@ +Add support for Functional Members. \ No newline at end of file From 11a9c395f0cf8d6b3e90486472fd77b1830c94eb Mon Sep 17 00:00:00 2001 From: jelv Date: Mon, 9 Aug 2021 07:19:16 +0000 Subject: [PATCH 79/87] Translated using Weblate (Dutch) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/nl/ --- Riot/Assets/nl.lproj/Vector.strings | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Riot/Assets/nl.lproj/Vector.strings b/Riot/Assets/nl.lproj/Vector.strings index 821a77b30..fa54b689c 100644 --- a/Riot/Assets/nl.lproj/Vector.strings +++ b/Riot/Assets/nl.lproj/Vector.strings @@ -361,7 +361,7 @@ "room_details_advanced_e2e_encryption_disabled" = "Versleuteling is niet ingeschakeld in deze kamer."; "room_details_advanced_e2e_encryption_blacklist_unverified_devices" = "Alleen naar geverifieerde apparaten versleutelen"; "room_details_advanced_e2e_encryption_prompt_message" = "End-to-endbeveiliging is experimenteel en kan onbetrouwbaar zijn.\n\nHet is beter om het nog niet met gevoelige gegevens te vertrouwen.\n\nApparaten kunnen de geschiedenis van voordat ze de ruimte betraden nog niet ontsleutelen.\n\nZodra de versleuteling aan staat kan het (voorlopig) niet worden uitgezet.\n\nVersleutelde berichten zullen nog niet zichtbaar zijn op programma's die geen versleuteling ondersteunen."; -"room_details_fail_to_update_avatar" = "Bijwerken van kamerfoto is mislukt"; +"room_details_fail_to_update_avatar" = "Bijwerken van kamerafbeelding is mislukt"; "room_details_fail_to_update_room_name" = "Bijwerken van kamernaam is mislukt"; "room_details_fail_to_update_topic" = "Bijwerken van gespreksonderwerp is mislukt"; "room_details_fail_to_update_room_guest_access" = "Bijwerken van gasttoegang voor kamer is mislukt"; @@ -896,11 +896,11 @@ // Mark: - Room creation introduction cell "room_intro_cell_add_participants_action" = "Personen toevoegen"; -"room_avatar_view_accessibility_hint" = "Kamerfoto wijzigen"; +"room_avatar_view_accessibility_hint" = "Kamerafbeelding wijzigen"; // Mark: - Room avatar view -"room_avatar_view_accessibility_label" = "profielfoto"; +"room_avatar_view_accessibility_label" = "afbeelding"; "invite_friends_share_text" = "Hoi, start een gesprek met me op %@: %@"; // MARK: - Invite friends @@ -1255,7 +1255,7 @@ "room_widget_permission_widget_id_permission" = "Widget-ID"; "room_widget_permission_theme_permission" = "Uw thema"; "room_widget_permission_user_id_permission" = "Uw gebruikers-ID"; -"room_widget_permission_avatar_url_permission" = "Uw profielfoto-URL"; +"room_widget_permission_avatar_url_permission" = "Uw afbeelding-URL"; "room_widget_permission_display_name_permission" = "Uw weergavenaam"; "room_widget_permission_information_title" = "Dit gebruiken kan gegevens delen met %@:\n"; "room_widget_permission_webview_information_title" = "Dit gebruiken kan cookies toevoegen en gegevens delen met %@:\n"; @@ -1492,11 +1492,11 @@ // Mark: - Side menu "side_menu_reveal_action_accessibility_label" = "Linkerpaneel"; -"user_avatar_view_accessibility_hint" = "Avatar veranderen"; +"user_avatar_view_accessibility_hint" = "Afbeelding veranderen"; // Mark: - User avatar view -"user_avatar_view_accessibility_label" = "avatar"; +"user_avatar_view_accessibility_label" = "afbeelding"; "secrets_recovery_with_key_information_unlock_secure_backup_with_key" = "Voor uw veiligheidssleutel in om door te gaan."; "secrets_recovery_with_key_information_unlock_secure_backup_with_phrase" = "Voer uw veiligheidswachtwoord in om door te gaan."; From 17c23531feeafc8e7a1dc22ac5b254bd1e7d9028 Mon Sep 17 00:00:00 2001 From: artevaeckt Date: Sun, 8 Aug 2021 08:10:10 +0000 Subject: [PATCH 80/87] Translated using Weblate (German) Currently translated at 99.2% (1242 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/de/ --- Riot/Assets/de.lproj/Vector.strings | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 32aabeaf5..1a444dad9 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -1305,7 +1305,7 @@ "dialpad_title" = "Wähltastatur"; "call_actions_unhold" = "Fortsetzen"; "event_formatter_call_back" = "Zurückrufen"; -"event_formatter_call_you_declined" = "Du lehntest diesen Anruf ab"; +"event_formatter_call_you_declined" = "Anruf abgelehnt"; "event_formatter_call_you_currently_in" = "Aktueller Anruf"; "event_formatter_call_has_ended" = "%@ beendet"; "event_formatter_call_video" = "Videoanruf"; @@ -1400,3 +1400,8 @@ // Room Notification Settings "room_notifs_settings_notify_me_for" = "Benachrichtige mich bei"; "room_details_notifs" = "Benachrichtigungen"; +"event_formatter_call_missed_voice" = "Verpasster Anruf"; +"event_formatter_call_incoming_voice" = "Eingehender Anruf"; +"settings_labs_voice_messages" = "Sprachnachrichten"; +"settings_notifications_disabled_alert_message" = "Öffne die Systemeinstellungen um Benachrichtigungen zu aktivieren."; +"settings_notifications_disabled_alert_title" = "Benachrichtigungen deaktiviert"; From cfe9e674c1c3fcf54940fed6c74d0f9de754f101 Mon Sep 17 00:00:00 2001 From: random Date: Mon, 9 Aug 2021 09:14:41 +0000 Subject: [PATCH 81/87] Translated using Weblate (Italian) Currently translated at 100.0% (1251 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/it/ --- Riot/Assets/it.lproj/Vector.strings | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index 181396fc3..e2a573cb4 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -1299,9 +1299,9 @@ "dialpad_title" = "Tastierino numerico"; "call_actions_unhold" = "Riprendi"; "event_formatter_call_back" = "Richiama"; -"event_formatter_call_you_declined" = "Hai rifiutato questa chiamata"; +"event_formatter_call_you_declined" = "Chiamata rifiutata"; "event_formatter_call_you_currently_in" = "Chiamata attiva"; -"event_formatter_call_has_ended" = "Terminato %@"; +"event_formatter_call_has_ended" = "Chiamata terminata %@"; "event_formatter_call_video" = "Videochiamata"; "event_formatter_call_voice" = "Telefonata"; "settings_show_NSFW_public_rooms" = "Mostra stanze pubbliche per adulti"; @@ -1404,3 +1404,9 @@ "settings_notifications_disabled_alert_message" = "Per attivare le notifiche, vai nelle impostazioni del tuo dispositivo."; "settings_notifications_disabled_alert_title" = "Notifiche disattivate"; "settings_device_notifications" = "Notifiche del dispositivo"; +"event_formatter_call_missed_video" = "Videochiamata persa"; +"event_formatter_call_missed_voice" = "Telefonata persa"; +"event_formatter_call_active_video" = "Videochiamata attiva"; +"event_formatter_call_active_voice" = "Telefonata attiva"; +"event_formatter_call_incoming_video" = "Videochiamata in arrivo"; +"event_formatter_call_incoming_voice" = "Telefonata in arrivo"; From 1361e816ab33645580f2cd20bcd82c3737028511 Mon Sep 17 00:00:00 2001 From: Linerly Date: Sat, 7 Aug 2021 11:49:02 +0000 Subject: [PATCH 82/87] Translated using Weblate (Indonesian) Currently translated at 7.5% (94 of 1251 strings) Translation: Element iOS/Element iOS Translate-URL: https://translate.element.io/projects/riot-ios/riot-ios/id/ --- Riot/Assets/id.lproj/Vector.strings | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/Riot/Assets/id.lproj/Vector.strings b/Riot/Assets/id.lproj/Vector.strings index fe5f556f7..f61661288 100644 --- a/Riot/Assets/id.lproj/Vector.strings +++ b/Riot/Assets/id.lproj/Vector.strings @@ -70,3 +70,38 @@ // Titles "title_home" = "Beranda"; +"auth_email_validation_message" = "Silakan periksa surel Anda untuk melanjutkan pendaftaran"; +"auth_use_server_options" = "Gunakan opsi server khusus (lanjutan)"; +"auth_email_not_found" = "Gagal mengirim surel: Alamat email ini tidak ditemukan"; +"auth_forgot_password_error_no_configured_identity_server" = "Tidak ada server identitas yang dikonfigurasikan: tambahkan satu untuk mengatur ulang kata sandi Anda."; +"auth_forgot_password" = "Lupa kata sandi?"; +"auth_username_in_use" = "Nama pengguna sudah dipakai"; +"auth_password_dont_match" = "Kata sandi tidak cocok"; +"auth_untrusted_id_server" = "Server identitas tidak dipercaya"; +"auth_phone_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan nomor telepon untuk mengatur ulang kata sandi Anda di masa depan."; +"auth_email_is_required" = "Tidak ada server identitas yang dikonfigurasi sehingga Anda tidak dapat menambahkan alamat email untuk mengatur ulang kata sandi Anda di masa depan."; +"auth_phone_in_use" = "Nomor telepon ini sudah dipakai"; +"auth_email_in_use" = "Surel ini sudah dipakai"; +"auth_missing_email_or_phone" = "Tidak ada surel atau nomor telepon"; +"auth_missing_phone" = "Tidak ada nomor telepon"; +"auth_missing_email" = "Tidak ada surel"; +"auth_add_email_phone_message_2" = "Tetapkan surel untuk pemulihan akun. Gunakan email atau telepon selanjutnya untuk dapat ditemukan oleh orang-orang yang mengenal Anda secara opsional."; +"auth_add_phone_message_2" = "Atur telepon, dan nanti dapat ditemukan oleh orang-orang yang mengenal Anda secara opsional."; +"auth_add_email_message_2" = "Tetapkan surel untuk pemulihan akun, dan nanti dapat ditemukan oleh orang-orang yang mengenal Anda secara opsional."; +"auth_missing_password" = "Tidak ada kata sandi"; +"auth_invalid_phone" = "Ini tidak terlihat seperti nomor telepon yang valid"; +"auth_invalid_email" = "Ini tidak terlihat seperti surel yang valid"; +"auth_invalid_password" = "Kata sandi terlalu pendek (min 6)"; +"auth_invalid_user_name" = "Nama pengguna hanya dapat berisi huruf, angka, titik, tanda hubung, dan garis bawah"; +"auth_send_reset_email" = "Kirim Reset Email"; +"auth_submit" = "Kirim"; + +// Accessibility +"accessibility_checkbox_label" = "centang"; +"callbar_only_single_active_group" = "Ketuk untuk Bergabung panggilan grup (%@)"; +"joined" = "Bergabung"; +"collapse" = "tutup"; +"store_promotional_text" = "Aplikasi perpesanan dan kolaborasi yang menjaga privasi, pada jaringan terbuka. Terdesentralisasi untuk Anda kendali. Tidak ada penambangan data, tidak ada backdoor dan tidak ada akses pihak ketiga."; +"store_full_description" = "Element adalah aplikasi messenger dan kolaborasi tipe baru yang:\n\n1. Menempatkan Anda dalam kendali untuk mempertahankan privasi Anda\n2. Memungkinkan Anda berkomunikasi dengan siapa pun di jaringan Matrix, dan bahkan di luar dengan mengintegrasikan dengan aplikasi seperti Slack\n3. Melindungi Anda dari iklan, menambangan data, backdoor, dan taman berdinding\n4. Mengamankan Anda melalui enkripsi ujung-ke-ujung, dengan penandatanganan-silang untuk memverifikasi orang lain\n\nElement benar-benar berbeda dari aplikasi perpesanan dan kolaborasi lain karena terdesentralisasi dan sumber terbuka.\n\nElement memungkinkan Anda host sendiri - atau memilih host - sehingga Anda memiliki privasi, kepemilikan, dan kontrol data dan percakapan Anda. Ini memberi Anda akses ke jaringan terbuka; jadi Anda tidak hanya terjebak berbicara dengan pengguna Element. Itu sangat aman.\n\nElement dapat melakukan semua ini karena beroperasi pada Matrix - standar untuk komunikasi terdesentralisasi terbuka.\n\nElement menempatkan Anda dalam kendali dengan membiarkan Anda memilih siapa yang meng-host percakapan Anda. Dari aplikasi Element, Anda dapat memilih untuk meng-host dengan cara yang berbeda:\n\n1. Dapatkan akun gratis pada server publik matrix.org\n2. Host sendiri akun Anda dengan menjalankan server pada perangkat keras Anda sendiri\n3. Mendaftar untuk akun di server khusus dengan hanya berlangganan platform hosting Element Matrix Services\n\nMengapa memilih Element?\n\nMILIKI DATA ANDA: Anda memutuskan di mana harus menyimpan data dan pesan Anda. Anda memilikinya dan mengendalikannya, bukan perusahaan besar yang menambang data Anda atau memberikan akses ke pihak ketiga.\n\nPESAN DAN KOLABORASI TERBUKA: Anda dapat mengobrol dengan orang lain di jaringan Matrix, jika mereka menggunakan Element atau aplikasi Matrix lain, dan bahkan jika mereka menggunakan sistem perpesanan seperti Slack, IRC atau XMPP.\n\nSUPER-AMAN: Enkripsi ujung-ke-ujung (hanya mereka yang dalam percakapan dapat mendekripsi pesan), dan penandatanganan-silang untuk memverifikasi perangkat peserta percakapan.\n\nKOMUNIKASI LENGKAP: Pesan, panggilan suara dan video, berbagi file, berbagi layar dan banyak integrasi, bot dan widget. Buat ruangan, komunitas, tetap terhubung dan selesaikan hal-hal.\n\nDI MANA PUN ANDA BERADA: Tetap berkomunikasi di mana pun Anda berada dengan riwayat pesan yang sepenuhnya disinkronkan di semua perangkat Anda dan di web di https://element.io/app."; +// String for App Store +"store_short_description" = "Obrolan/VoIP terdesentralisasi aman"; From bb237cc554c8ae893e06de5e4d65e85a0e21cc67 Mon Sep 17 00:00:00 2001 From: Doug <6060466+pixlwave@users.noreply.github.com> Date: Tue, 10 Aug 2021 10:27:12 +0100 Subject: [PATCH 83/87] Rename pr_4681.misc to 4677.misc --- changelog.d/4677.misc | 1 + changelog.d/pr_4681.misc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 changelog.d/4677.misc delete mode 100644 changelog.d/pr_4681.misc diff --git a/changelog.d/4677.misc b/changelog.d/4677.misc new file mode 100644 index 000000000..69490e109 --- /dev/null +++ b/changelog.d/4677.misc @@ -0,0 +1 @@ +Contacts: Fix implicitly retained self warnings. diff --git a/changelog.d/pr_4681.misc b/changelog.d/pr_4681.misc deleted file mode 100644 index af1064dc1..000000000 --- a/changelog.d/pr_4681.misc +++ /dev/null @@ -1 +0,0 @@ -Contacts: Fix implicitly retained self warnings. \ No newline at end of file From b27c04d93130fbde1323410f62ac9e8fd138d7a6 Mon Sep 17 00:00:00 2001 From: Thomas Weiland <16715040+HonkXL@users.noreply.github.com> Date: Tue, 10 Aug 2021 11:52:16 +0200 Subject: [PATCH 84/87] Create 4480.bugfix --- changelog.d/4480.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/4480.bugfix diff --git a/changelog.d/4480.bugfix b/changelog.d/4480.bugfix new file mode 100644 index 000000000..5cbd09275 --- /dev/null +++ b/changelog.d/4480.bugfix @@ -0,0 +1 @@ +fix typo in email settings From 24e9d04d03b6f3c886172332f7ffe919c65fe6e6 Mon Sep 17 00:00:00 2001 From: manuroe Date: Wed, 11 Aug 2021 11:45:01 +0200 Subject: [PATCH 85/87] Make Towncrier compatible with the release script --- changelog.d/_template.md.jinja | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/changelog.d/_template.md.jinja b/changelog.d/_template.md.jinja index 2a7b9d6fe..a0b2dd9ee 100644 --- a/changelog.d/_template.md.jinja +++ b/changelog.d/_template.md.jinja @@ -25,13 +25,19 @@ {%- set gh_issue = value.replace("#", "") -%} {{- links.append( "[#%s](%s/issues/%s)" | format(gh_issue, gh_element, gh_issue) ) | default("", True) -}} {%- elif value.startswith("pr-") %} - {%- set pr = value.replace("pr-", "#") -%} - {{- links.append(pr) | default("", True) -}} + {%- set pr = value.replace("pr-", "") -%} + {{- links.append( "[#%s](%s/pull/%s)" | format(pr, gh_element, pr) ) | default("", True) -}} + {%- elif value.startswith("x-nolink-") %} + {{- nil | default("", True) -}} {% else %} {{- links.append(value) | default("", True) -}} {% endif -%} {% endfor -%} +{% if links|length == 0 %} +- {{ text }} +{% else %} - {{ text }} ({{ links | join(', ') }}) +{% endif %} {% endfor %} {% else %} - {{ sections[section][category]['']|join(', ') }} From 47d2934de806bf6a89c43c5adbd6b66905f9cba0 Mon Sep 17 00:00:00 2001 From: manuroe Date: Wed, 11 Aug 2021 11:47:39 +0200 Subject: [PATCH 86/87] changelog --- changelog.d/pr-4689.build | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/pr-4689.build diff --git a/changelog.d/pr-4689.build b/changelog.d/pr-4689.build new file mode 100644 index 000000000..d24a7e191 --- /dev/null +++ b/changelog.d/pr-4689.build @@ -0,0 +1 @@ +CHANGES.md: Use towncrier to manage the change log. More info in [CONTRIBUTING](CONTRIBUTING.md#changelog). \ No newline at end of file From cf2eacdb88b0c0954afdae15cadb87b798bae400 Mon Sep 17 00:00:00 2001 From: manuroe Date: Wed, 11 Aug 2021 14:48:25 +0200 Subject: [PATCH 87/87] version++ --- CHANGES.md | 38 ++++++++++++++++++++++++++++++++++ Config/AppIdentifiers.xcconfig | 4 ++-- Podfile | 2 +- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 439c35d63..e5ce49c60 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,41 @@ +## Changes in 1.5.0 (2021-08-11) + +✨ Features + +- Voice messages: Remove labs setting and enable them by default. ([#4671](https://github.com/vector-im/element-ios/issues/4671)) + +🙌 Improvements + +- Upgrade MatrixKit version ([v0.15.7](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.15.7)). +- Settings: The notifications toggle no longer detects the system's "Deliver Quietly" configuration as disabled. ([#2368](https://github.com/vector-im/element-ios/issues/2368)) +- SSO: Stable ids for MSC 2858. ([#4362](https://github.com/vector-im/element-ios/issues/4362)) +- Room: Remove the green border from direct message room avatars. ([#4520](https://github.com/vector-im/element-ios/issues/4520)) +- Settings: Adds a link to open the Settings app to quickly configure app notifications. ([#4575](https://github.com/vector-im/element-ios/issues/4575)) +- Add support for Functional Members. ([#4609](https://github.com/vector-im/element-ios/issues/4609)) +- VoIP: Additional changes on call tiles. ([#4642](https://github.com/vector-im/element-ios/issues/4642)) +- Voice messages: Allow voice message playback control from the iOS lock screen and control center. ([#4655](https://github.com/vector-im/element-ios/issues/4655)) +- Voice messages: Stop recording and go into locked mode when the application becomes inactive. ([#4656](https://github.com/vector-im/element-ios/issues/4656)) +- Voice messages: Improve audio recording quality. ([#4671](https://github.com/vector-im/element-ios/issues/4671)) + +🐛 Bugfixes + +- fix typo in email settings ([#4480](https://github.com/vector-im/element-ios/issues/4480)) + +🧱 Build + +- CHANGES.md: Use towncrier to manage the change log. More info in [CONTRIBUTING](CONTRIBUTING.md#changelog). ([#4689](https://github.com/vector-im/element-ios/pull/4689), [#4393](https://github.com/vector-im/element-ios/issues/4393)) +- Add a script to initialize quickly and easily the project. ([#4596](https://github.com/vector-im/element-ios/issues/4596)) + +📄 Documentation + +- Convert CHANGES to MarkDown. ([#4393](https://github.com/vector-im/element-ios/issues/4393)) +- Add reference to AppIdentifiers.xcconfig in INSTALL.md. ([#4674](https://github.com/vector-im/element-ios/issues/4674)) + +Others + +- Contacts: Fix implicitly retained self warnings. ([#4677](https://github.com/vector-im/element-ios/issues/4677)) + + ## Changes in 1.4.9 (2021-08-03) 🙌 Improvements diff --git a/Config/AppIdentifiers.xcconfig b/Config/AppIdentifiers.xcconfig index 87a13956f..6f557400a 100644 --- a/Config/AppIdentifiers.xcconfig +++ b/Config/AppIdentifiers.xcconfig @@ -22,8 +22,8 @@ APPLICATION_GROUP_IDENTIFIER = group.im.vector APPLICATION_SCHEME = element // Version -MARKETING_VERSION = 1.4.10 -CURRENT_PROJECT_VERSION = 1.4.10 +MARKETING_VERSION = 1.5.0 +CURRENT_PROJECT_VERSION = 1.5.0 // Team diff --git a/Podfile b/Podfile index 53b05e0e6..d18617aa9 100644 --- a/Podfile +++ b/Podfile @@ -11,7 +11,7 @@ use_frameworks! # - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixKitVersion = '= 0.15.6' +$matrixKitVersion = '= 0.15.7' # $matrixKitVersion = :local # $matrixKitVersion = {'develop' => 'develop'}