diff --git a/CHANGES.md b/CHANGES.md index 9aacbd168..4758b42f6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,11 @@ +## Changes in 1.11.4 (2023-10-04) + +🙌 Improvements + +- Upgrade MatrixSDK version ([v0.27.3](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.27.3)). +- Allow the use of Jitsi for 1:1 calls via a well-known configuration flag. ([#7684](https://github.com/vector-im/element-ios/issues/7684)) + + ## Changes in 1.11.3 (2023-09-13) 🐛 Bugfixes diff --git a/Config/BWIBuildSettings.swift b/Config/BWIBuildSettings.swift index 7485104e4..3c14d77f8 100644 --- a/Config/BWIBuildSettings.swift +++ b/Config/BWIBuildSettings.swift @@ -512,7 +512,7 @@ class BWIBuildSettings: NSObject { var passwordIndicatorOnLogin = true // MARK: Displays the element base version on the settings screen - var elementBaseVersion = "1.11.3" + var elementBaseVersion = "1.11.4" var showElementBaseVersion = true diff --git a/Gemfile.lock b/Gemfile.lock index 5bbce9861..851230fb3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,13 +9,12 @@ GEM specs: CFPropertyList (3.0.6) rexml - activesupport (6.1.7.3) + activesupport (7.0.8) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - zeitwerk (~> 2.3) - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) @@ -23,33 +22,33 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.770.0) - aws-sdk-core (3.173.1) + aws-partitions (1.828.0) + aws-sdk-core (3.183.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.64.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-kms (1.71.0) + aws-sdk-core (~> 3, >= 3.177.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.122.0) - aws-sdk-core (~> 3, >= 3.165.0) + aws-sdk-s3 (1.136.0) + aws-sdk-core (~> 3, >= 3.181.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.2) + aws-sigv4 (~> 1.6) + aws-sigv4 (1.6.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) clamp (1.3.2) - cocoapods (1.11.3) + cocoapods (1.13.0) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.11.3) + cocoapods-core (= 1.13.0) cocoapods-deintegrate (>= 1.0.3, < 2.0) - cocoapods-downloader (>= 1.4.0, < 2.0) + cocoapods-downloader (>= 1.6.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) cocoapods-search (>= 1.0.0, < 2.0) - cocoapods-trunk (>= 1.4.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) cocoapods-try (>= 1.1.0, < 2.0) colored2 (~> 3.1) escape (~> 0.0.4) @@ -57,10 +56,10 @@ GEM gh_inspector (~> 1.0) molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (>= 1.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.11.3) - activesupport (>= 5.0, < 7) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.13.0) + activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) @@ -84,7 +83,7 @@ GEM highline (~> 2.0.0) concurrent-ruby (1.2.2) declarative (0.0.20) - digest-crc (0.6.4) + digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) @@ -93,7 +92,7 @@ GEM escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - excon (0.99.0) + excon (0.103.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -123,7 +122,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.7) - fastlane (2.213.0) + fastlane (2.216.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -144,6 +143,7 @@ GEM google-apis-playcustomapp_v1 (~> 0.1) google-cloud-storage (~> 1.31) highline (~> 2.0) + http-cookie (~> 1.0.5) json (< 3.0.0) jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) @@ -155,7 +155,7 @@ GEM security (= 0.1.3) simctl (~> 1.6.3) terminal-notifier (>= 2.0.0, < 3.0.0) - terminal-table (>= 1.4.5, < 2.0.0) + terminal-table (~> 3) tty-screen (>= 0.6.3, < 1.0.0) tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) @@ -165,16 +165,16 @@ GEM fastlane-plugin-brew (0.1.1) fastlane-plugin-sentry (1.15.0) os (~> 1.1, >= 1.1.4) - fastlane-plugin-versioning (0.5.1) + fastlane-plugin-versioning (0.5.2) fastlane-plugin-xcodegen (1.1.0) fastlane-plugin-brew (~> 0.1.1) - ffi (1.15.5) + ffi (1.16.2) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.42.0) + google-apis-androidpublisher_v3 (0.50.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -203,10 +203,9 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.5.2) + googleauth (1.8.1) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) - memoist (~> 0.16) multi_json (~> 1.11) os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) @@ -214,16 +213,15 @@ GEM http-cookie (1.0.5) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.13.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) jmespath (1.6.2) json (2.6.3) - jwt (2.7.0) - memoist (0.16.2) + jwt (2.7.1) mini_magick (4.12.0) - mini_mime (1.1.2) - mini_portile2 (2.8.2) - minitest (5.18.0) + mini_mime (1.1.5) + mini_portile2 (2.8.4) + minitest (5.20.0) molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.3.0) @@ -231,27 +229,27 @@ GEM nap (1.1.0) naturally (2.2.1) netrc (0.11.0) - nokogiri (1.15.2) + nokogiri (1.15.4) mini_portile2 (~> 2.8.2) racc (~> 1.4) optparse (0.1.1) os (1.1.4) plist (3.7.0) public_suffix (4.0.7) - racc (1.6.2) + racc (1.7.1) rake (13.0.6) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + rexml (3.2.6) rouge (2.0.7) ruby-macho (2.5.1) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.17.0) + signet (0.18.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) jwt (>= 1.5, < 3.0) @@ -266,8 +264,8 @@ GEM nokogiri (>= 1.13.9) xcodeproj (~> 1.21) terminal-notifier (2.0.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) tty-screen (0.8.1) @@ -281,13 +279,13 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.8.2) - unicode-display_width (1.8.0) + unicode-display_width (2.4.2) webrick (1.8.1) word_wrap (1.0.0) xcode-install (2.8.1) claide (>= 0.9.1) fastlane (>= 2.1.0, < 3.0.0) - xcodeproj (1.22.0) + xcodeproj (1.23.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -298,13 +296,12 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - zeitwerk (2.6.8) PLATFORMS ruby DEPENDENCIES - cocoapods (~> 1.11.2) + cocoapods (~> 1.13.0) fastlane fastlane-plugin-diawi! fastlane-plugin-sentry diff --git a/Podfile b/Podfile index f8735fb5f..39aee99b0 100644 --- a/Podfile +++ b/Podfile @@ -16,7 +16,7 @@ use_frameworks! # - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK 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 -$matrixSDKVersion = '= 0.27.2' +$matrixSDKVersion = '= 0.27.3' # $matrixSDKVersion = :local # $matrixSDKVersion = { :branch => 'develop'} # $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } } @@ -43,7 +43,7 @@ when String # specific MatrixSDK released version $matrixSDKVersionSpec = $matrixSDKVersion end -$matrixSDKVersionSpec = { :git => 'https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk', :tag => 'v2.11.0-RC02' } +$matrixSDKVersionSpec = { :git => 'https://dl-gitlab.example.com/bwmessenger/bundesmessenger/bundesmessenger-ios-sdk', :tag => 'v2.12.0-BWI01' } # Method to import the MatrixSDK def import_MatrixSDK diff --git a/Podfile.lock b/Podfile.lock index ec974f0f2..90b67132b 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -25,7 +25,7 @@ PODS: - GBDeviceInfo (7.1.0): - GBDeviceInfo/Core (= 7.1.0) - GBDeviceInfo/Core (7.1.0) - - GZIP (1.3.0) + - GZIP (1.3.1) - Introspect (0.11.0) - JitsiMeetSDKLite (8.1.2-lite): - JitsiWebRTC (~> 111.0) @@ -39,20 +39,20 @@ PODS: - LoggerAPI (1.9.200): - Logging (~> 1.1) - Logging (1.4.0) - - MatrixSDK (0.27.2): - - MatrixSDK/Core (= 0.27.2) - - MatrixSDK/Core (0.27.2): + - MatrixSDK (0.27.3): + - MatrixSDK/Core (= 0.27.3) + - MatrixSDK/Core (0.27.3): - AFNetworking (~> 4.0.0) - GZIP (~> 1.3.0) - libbase58 (~> 0.1.4) - - MatrixSDKCrypto (= 0.3.12) + - MatrixSDKCrypto (= 0.3.13) - OLMKit (~> 3.2.5) - Realm (= 10.27.0) - SwiftyBeaver (= 1.9.5) - - MatrixSDK/JingleCallStack (0.27.2): + - MatrixSDK/JingleCallStack (0.27.3): - JitsiMeetSDKLite (= 8.1.2-lite) - MatrixSDK/Core - - MatrixSDKCrypto (0.3.12) + - MatrixSDKCrypto (0.3.13) - OLMKit (3.2.12): - OLMKit/olmc (= 3.2.12) - OLMKit/olmcpp (= 3.2.12) @@ -102,8 +102,8 @@ DEPENDENCIES: - KeychainAccess (~> 4.2.2) - KTCenterFlowLayout (~> 1.3.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.27.2) - - MatrixSDK/JingleCallStack (= 0.27.2) + - MatrixSDK (= 0.27.3) + - MatrixSDK/JingleCallStack (= 0.27.3) - OLMKit - PostHog (~> 2.0.0) - ReadMoreTextView (~> 3.0.1) @@ -176,7 +176,7 @@ SPEC CHECKSUMS: FLEX: e51461dd6f0bfb00643c262acdfea5d5d12c596b FlowCommoniOS: ca92071ab526dc89905495a37844fd7e78d1a7f2 GBDeviceInfo: 5d62fa85bdcce3ed288d83c28789adf1173e4376 - GZIP: 416858efbe66b41b206895ac6dfd5493200d95b3 + GZIP: e6922ed5bdd1d77d84589d50821ac34ea0c38d4b Introspect: 4cc1e4c34dd016540c8d86a591c231c09dafbee3 JitsiMeetSDKLite: 895213158cf62342069a10634a41d2f1c00057f7 JitsiWebRTC: 80f62908fcf2a1160e0d14b584323fb6e6be630b @@ -187,8 +187,8 @@ SPEC CHECKSUMS: libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75 LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d Logging: beeb016c9c80cf77042d62e83495816847ef108b - MatrixSDK: a39e229a03a00394e055ffa7490e9602d45f8a44 - MatrixSDKCrypto: 25929a40733b4ab54f659aaf6a730552a0a06504 + MatrixSDK: 83fd36133b8e9147aa2f770953dc7921dda4e8b5 + MatrixSDKCrypto: bf08b72f2cd015d8749420a2b8b92fc0536bedf4 OLMKit: da115f16582e47626616874e20f7bb92222c7a51 PostHog: 660ec6c9d80cec17b685e148f17f6785a88b597d ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d @@ -208,6 +208,6 @@ SPEC CHECKSUMS: zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: b926e281576aabcdbc2bdcb40ef3ad3e0991abe8 +PODFILE CHECKSUM: 20f5e721c3f48c117b9610409e79661637454aa1 COCOAPODS: 1.11.3 diff --git a/Riot/Assets/de.lproj/Vector.strings b/Riot/Assets/de.lproj/Vector.strings index 578b85782..7b13a39d2 100644 --- a/Riot/Assets/de.lproj/Vector.strings +++ b/Riot/Assets/de.lproj/Vector.strings @@ -2776,3 +2776,8 @@ "room_creation_user_not_found_prompt_invite_action" = "Dennoch DM beginnen"; "room_participants_invite_unknown_participant_prompt_to_msg" = "Wir konnten kein Profil für diese Matrix-ID finden. Möchtest du wirklich %@ nach %@ einladen?"; "room_participants_invite_anyway" = "Dennoch einladen"; +"settings_manage_account_title" = "Konto"; +"settings_manage_account_description" = "Verwalte dein Konto bei %@"; +"settings_manage_account_action" = "Konto verwalten"; +"manage_session_redirect" = "Du wirst zum Authentifizierungsdienst deines Servers weitergeleitet, um das Abmelden abzuschließen."; +"manage_session_redirect_error" = "Funktion aktuell nicht verfügbar. Bitte kontaktiere deine Home-Server-Administration"; diff --git a/Riot/Assets/et.lproj/Vector.strings b/Riot/Assets/et.lproj/Vector.strings index 0cad547d7..5080a7ea5 100644 --- a/Riot/Assets/et.lproj/Vector.strings +++ b/Riot/Assets/et.lproj/Vector.strings @@ -2714,3 +2714,8 @@ "room_creation_user_not_found_prompt_message" = "Sellele Matrix'i kasutajatunnuse profiili ei leidu. Kas sa ikkagi tahaksid temaga vestlust alustada?"; "room_participants_invite_unknown_participant_prompt_to_msg" = "Sellele Matrix'i kasutajatunnuse profiili ei leidu. Kas sa ikkagi tahaksid saata kutset kasutajale %@ jututuppa %@?"; "room_participants_invite_anyway" = "Kutsu siiski"; +"settings_manage_account_title" = "Kasutajakonto"; +"settings_manage_account_action" = "Halda kasutajakontot"; +"settings_manage_account_description" = "Halda kasutajakontot koduserveris %@"; +"manage_session_redirect" = "Järgmiseks suuname sind sinu serveriteenuse autentijale ning seal saad sa väljalogimise lõpuni viia."; +"manage_session_redirect_error" = "See funktsionaalsus pole hetkel saadaval. Lisateavet saad oma koduserveri haldajalt"; diff --git a/Riot/Assets/id.lproj/Vector.strings b/Riot/Assets/id.lproj/Vector.strings index 8652674c6..0a43411c3 100644 --- a/Riot/Assets/id.lproj/Vector.strings +++ b/Riot/Assets/id.lproj/Vector.strings @@ -2964,3 +2964,13 @@ "room_command_change_display_name_description" = "Mengubah nama tampilan Anda"; "notice_display_name_changed_to" = "%@ mengubah nama tampilannya menjadi %@"; "poll_timeline_loading" = "Memuat..."; +"room_creation_user_not_found_prompt_message" = "Tidak dapat mencari profil untuk ID Matrix ini. Apakah Anda masih ingin membuat percakapan langsung?"; +"room_creation_user_not_found_prompt_title" = "Konfirmasi"; +"room_creation_user_not_found_prompt_invite_action" = "Tetap buat percakapan langsung"; +"room_participants_invite_unknown_participant_prompt_to_msg" = "Tidak dapat mencari profil untuk ID Matrix ini. Apakah Anda masih ingin mengundang %@ ke %@?"; +"room_participants_invite_anyway" = "Tetap undang"; +"settings_manage_account_title" = "Akun"; +"settings_manage_account_action" = "Kelola akun"; +"settings_manage_account_description" = "Kelola akun Anda di %@"; +"manage_session_redirect" = "Anda akan dialihkan ke penyedia autentikasi server Anda untuk menyelesaikan proses keluar."; +"manage_session_redirect_error" = "Fungsi saat ini tidak tersedia. Silakan hubungi admin homeserver Anda"; diff --git a/Riot/Assets/it.lproj/Vector.strings b/Riot/Assets/it.lproj/Vector.strings index d3c3cf5c5..5658e7478 100644 --- a/Riot/Assets/it.lproj/Vector.strings +++ b/Riot/Assets/it.lproj/Vector.strings @@ -2742,3 +2742,8 @@ "room_participants_invite_anyway" = "Invita lo stesso"; "room_participants_invite_unknown_participant_prompt_to_msg" = "Impossibile trovare profili con questo ID Matrix. Vuoi davvero invitare %@ in %@?"; "room_creation_user_not_found_prompt_message" = "Impossibile trovare profili con questo ID Matrix. Vuoi comunque iniziare un messaggio diretto?"; +"settings_manage_account_title" = "Account"; +"settings_manage_account_action" = "Gestisci account"; +"settings_manage_account_description" = "Gestisci il tuo account su %@"; +"manage_session_redirect" = "Verrai reindirizzato al fornitore di autenticazione del tuo server per completare la disconnessione."; +"manage_session_redirect_error" = "Funzionalità attualmente non disponibile. Contatta l'amministratore del tuo homeserver"; diff --git a/Riot/Assets/pl.lproj/Vector.strings b/Riot/Assets/pl.lproj/Vector.strings index 48216c0ae..21be89f5d 100644 --- a/Riot/Assets/pl.lproj/Vector.strings +++ b/Riot/Assets/pl.lproj/Vector.strings @@ -2851,3 +2851,13 @@ "user_session_verified_session_description" = "Sesje zweryfikowane są wszędzie, gdzie korzystasz z Element po wprowadzeniu swojego hasła lub zweryfikowaniu swojej tożsamości za pomocą innej sesji zweryfikowanej.\n\nTo oznacza, że posiadasz wszystkie niezbędne klucze wymagane do odblokowania swoich zaszyfrowanych wiadomości i oznajmiasz innym użytkownikom, że ufasz tej sesji."; "space_invite_nav_title" = "Zaproszenie do przestrzeni"; "user_other_session_unverified_sessions_header_subtitle" = "Dla wzmocnienia bezpiecznych wiadomości, zweryfikuj swoje sesje i wyloguj się ze wszystkich sesji, których nie rozpoznajesz lub nie używasz."; +"manage_session_redirect" = "Zostaniesz przekierowany do swojego dostawcy uwierzytelniania, aby zakończyć logowanie."; +"manage_session_redirect_error" = "Funkcja obecnie niedostępna. Skontaktuj się ze swoim administratorem serwera domowego"; +"room_creation_user_not_found_prompt_title" = "Potwierdzenie"; +"room_creation_user_not_found_prompt_message" = "Nie można znaleźć profili dla poniższych ID Matrix. Czy chcesz rozpocząć wiadomość prywatną mimo to?"; +"room_creation_user_not_found_prompt_invite_action" = "Rozpocznij wiadomość prywatną mimo to"; +"room_participants_invite_unknown_participant_prompt_to_msg" = "Nie można znaleźć profili dla poniższych ID Matrix. Czy na pewno chcesz zaprosić %@ do %@?"; +"room_participants_invite_anyway" = "Zaproś mimo to"; +"settings_manage_account_title" = "Konto"; +"settings_manage_account_action" = "Zarządzaj kontem"; +"settings_manage_account_description" = "Zarządzaj swoim kontem w %@"; diff --git a/Riot/Assets/sk.lproj/Vector.strings b/Riot/Assets/sk.lproj/Vector.strings index 061991f16..6f4eda6a4 100644 --- a/Riot/Assets/sk.lproj/Vector.strings +++ b/Riot/Assets/sk.lproj/Vector.strings @@ -2965,3 +2965,8 @@ "room_participants_invite_anyway" = "Napriek tomu pozvať"; "room_creation_user_not_found_prompt_message" = "Nie je možné nájsť používateľské profily pre toto Matrix ID. Chcete aj tak poslať priamu správu?"; "room_participants_invite_unknown_participant_prompt_to_msg" = "Nie je možné nájsť profily pre toto Matrix ID. Ste si istí, že chcete pozvať %@ do %@?"; +"settings_manage_account_title" = "Účet"; +"settings_manage_account_action" = "Spravovať účet"; +"settings_manage_account_description" = "Spravujte svoj účet na %@"; +"manage_session_redirect" = "Budete presmerovaní na poskytovateľa overovania vášho servera, aby ste dokončili odhlásenie."; +"manage_session_redirect_error" = "Funkcia aktuálne nie je dostupná. Obráťte sa na správcu vášho domovského servera"; diff --git a/Riot/Assets/sq.lproj/Vector.strings b/Riot/Assets/sq.lproj/Vector.strings index c5f738caf..1dc4968b5 100644 --- a/Riot/Assets/sq.lproj/Vector.strings +++ b/Riot/Assets/sq.lproj/Vector.strings @@ -2746,3 +2746,14 @@ // Room commands descriptions "room_command_change_display_name_description" = "Kjo ndryshon nofkën tuaj në ekran"; +"room_creation_user_not_found_prompt_title" = "Ripohim"; +"room_creation_user_not_found_prompt_message" = "S’arrihet të gjenden profile për këtë ID Matrix. Doni të niset një MD, sido që të jetë?"; +"room_creation_user_not_found_prompt_invite_action" = "Nis MD, sido qoftë"; +"room_participants_invite_unknown_participant_prompt_to_msg" = "S’arrihet të gjenden profile për këtë ID Matrix. Jeni i sigurt se doni të ftohet %@ te %@?"; +"room_participants_invite_anyway" = "Ftoje, sido qoftë"; +"poll_timeline_loading" = "Po ngarkohet…"; +"settings_manage_account_description" = "Administroni llogarinë tuaj në %@"; +"manage_session_redirect_error" = "Funksion që s’mund të kihet aktualisht. Ju lutemi, lidhuni me përgjegjësin e shërbyesit tuaj Home"; +"settings_manage_account_title" = "Llogari"; +"settings_manage_account_action" = "Administroni llogari"; +"manage_session_redirect" = "Do të ridrejtoheni te shërbimi i mirëfilltësimit të shërbyesit tuaj, për të plotësuar daljen nga llogaria."; diff --git a/Riot/Assets/sv.lproj/Vector.strings b/Riot/Assets/sv.lproj/Vector.strings index 48d13aea8..cb9918a3a 100644 --- a/Riot/Assets/sv.lproj/Vector.strings +++ b/Riot/Assets/sv.lproj/Vector.strings @@ -2704,3 +2704,13 @@ "pill_message" = "Meddelande"; "key_verification_scan_qr_code_information_new_session" = "Rikta kameran mot QR-koden som visas på din andra enhet för att verifiera din nya session"; "key_verification_scan_qr_code_information_other_session" = "Rikta kameran mot QR-koden som visas på din andra enhet för att verifiera din session"; +"room_creation_user_not_found_prompt_title" = "Bekräftelse"; +"room_creation_user_not_found_prompt_message" = "Kunde inte hitta profiler för det här Matrix-ID:t. Vill du starta en DM ändå?"; +"room_creation_user_not_found_prompt_invite_action" = "Starta en DM ändå"; +"room_participants_invite_unknown_participant_prompt_to_msg" = "Kunde inte hitta profiler för det här Matrix-ID:t. Är du säker på att du vill bjuda in %@ till %@?"; +"room_participants_invite_anyway" = "Bjud in ändå"; +"settings_manage_account_title" = "Konto"; +"settings_manage_account_action" = "Hantera konto"; +"settings_manage_account_description" = "Hantera ditt konto på %@"; +"manage_session_redirect" = "Du kommer att omdirigeras till din servers autentiseringsleverantör för att fortsätta utloggning."; +"manage_session_redirect_error" = "Funktion för närvarande otillgänglig. Vänligen kontakta din hemserveradministratör"; diff --git a/Riot/Assets/uk.lproj/Vector.strings b/Riot/Assets/uk.lproj/Vector.strings index d5113e3c7..04e9b75d5 100644 --- a/Riot/Assets/uk.lproj/Vector.strings +++ b/Riot/Assets/uk.lproj/Vector.strings @@ -801,7 +801,7 @@ "directory_server_all_native_rooms" = "Усі кімнати сервера Matrix"; "group_participants_invite_malformed_id_title" = "Помилка запрошення"; "group_participants_remove_prompt_msg" = "Ви справді хочете вилучити %@ з цієї групи?"; -"room_notifs_settings_encrypted_room_notice" = "Зверніть увагу, що сповіщення про згадки та ключові слова недоступні в зашифрованих кімнатах на мобільних пристроях."; +"room_notifs_settings_encrypted_room_notice" = "Зауважте, що сповіщення про згадки та ключові слова недоступні в зашифрованих кімнатах на мобільних пристроях."; "room_notifs_settings_account_settings" = "Налаштування облікового запису"; "room_notifs_settings_manage_notifications" = "Ви можете керувати сповіщеннями у %@"; "room_notifs_settings_cancel_action" = "Скасувати"; @@ -2548,7 +2548,7 @@ "room_accessibility_record_voice_message_hint" = "Двічі торкніться й утримуйте для запису."; "room_accessibility_record_voice_message" = "Записати голосове повідомлення"; "location_sharing_live_lab_promotion_activation" = "Увімкнути надсилання геоданих наживо"; -"location_sharing_live_lab_promotion_text" = "Зверніть увагу: це експериментальна функція, яка використовує тимчасову реалізацію, яка дозволяє іншим людям у кімнаті постійно бачити історію поширеного вами місця перебування."; +"location_sharing_live_lab_promotion_text" = "Зауважте: це експериментальна функція, яка використовує тимчасову реалізацію, що дозволяє іншим людям у кімнаті постійно бачити історію поширеного вами місця перебування."; "location_sharing_live_lab_promotion_title" = "Надсилання місця перебування наживо"; "location_sharing_map_credits_title" = "© Авторське право"; "room_info_back_button_title" = "Відомості кімнати"; @@ -2967,3 +2967,8 @@ "room_creation_user_not_found_prompt_title" = "Підтвердження"; "room_creation_user_not_found_prompt_message" = "Не вдалося знайти профілі для цього Matrix ID. Усе одно хочете розпочати приватну бесіду?"; "room_participants_invite_unknown_participant_prompt_to_msg" = "Не вдалося знайти профілі для цього Matrix ID. Ви впевнені, що хочете запросити %@ до %@?"; +"settings_manage_account_title" = "Обліковий запис"; +"settings_manage_account_action" = "Керувати обліковим записом"; +"settings_manage_account_description" = "Керувати обліковим записом у %@"; +"manage_session_redirect" = "Вас буде перенаправлено до постачальника автентифікації вашого сервера для завершення виходу."; +"manage_session_redirect_error" = "Функціональність наразі недоступна. Зверніться до адміністратора вашого домашнього сервера"; diff --git a/Riot/Assets/vi.lproj/Vector.strings b/Riot/Assets/vi.lproj/Vector.strings index f46d98bcc..d7449ba3f 100644 --- a/Riot/Assets/vi.lproj/Vector.strings +++ b/Riot/Assets/vi.lproj/Vector.strings @@ -210,7 +210,7 @@ "room_delete_unsent_messages" = "Xoá các tin nhắn chưa được gửi"; "room_event_action_copy" = "Sao chép"; "room_event_action_quote" = "Trích dẫn"; -"room_event_action_redact" = "Biên tập lại"; +"room_event_action_redact" = "Xóa"; "room_event_action_more" = "Thêm"; "room_event_action_share" = "Chia sẻ"; "room_event_action_permalink" = "Liên kết"; @@ -1898,7 +1898,7 @@ "send" = "Gửi"; "copy_button_name" = "Sao chép"; "resend" = "Gửi lại"; -"redact" = "Biên tập lại"; +"redact" = "Xóa"; "share" = "Chia sẻ"; "set_power_level" = "Độ nhiệt huyết"; "delete" = "Xoá"; diff --git a/Riot/Assets/zh_Hans.lproj/Vector.strings b/Riot/Assets/zh_Hans.lproj/Vector.strings index c59b7a61a..1c6c33e5f 100644 --- a/Riot/Assets/zh_Hans.lproj/Vector.strings +++ b/Riot/Assets/zh_Hans.lproj/Vector.strings @@ -2349,3 +2349,21 @@ // User sessions management "user_sessions_settings" = "管理登陆会话"; "settings_presence_offline_mode_description" = "如果开启此选项,对其他用户来说,你看起来就会像下线了一样,即使你正在使用此软件。"; +"room_creation_user_not_found_prompt_title" = "确认"; +"room_creation_user_not_found_prompt_message" = "无法找到此Matrix ID的profiles。你仍然想开始私信吗?"; +"room_creation_user_not_found_prompt_invite_action" = "无论如何都要开始私信"; +"room_participants_invite_anyway" = "无论如何,邀请"; +"threads_discourage_information_1" = "你的家服务器目前不支持消息列,所以此功能可能不可靠。有的消息列消息不一定可用。 "; +"room_command_emote_description" = "显示动作"; +"threads_discourage_information_2" = "\n\n无论如何,启用消息列吗?"; +"settings_timeline" = "时间线"; +"settings_labs_enable_threads" = "消息列消息"; +"settings_labs_use_only_latest_user_avatar_and_name" = "在消息历史中显示用户的最新头像和名称"; +"manage_session_name_hint" = "自定义会话名称能帮你更轻松地识别设备。"; +"manage_session_rename" = "重命名会话"; +/* The placeholder will be replaces with manage_session_name_info_link */ +"manage_session_name_info" = "请注意,与你通信的人也可以看到会话名称。%@"; +"manage_session_sign_out_other_sessions" = "登出全部其他会话"; +"settings_presence_offline_mode" = "离线模式"; +"room_details_polls" = "投票历史"; +"settings_labs_enable_new_app_layout" = "新版应用布局"; diff --git a/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift b/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift index 24dfe5c78..a808a3d0d 100644 --- a/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift +++ b/Riot/Model/HomeserverConfiguration/HomeserverConfigurationBuilder.swift @@ -74,6 +74,8 @@ final class HomeserverConfigurationBuilder: NSObject { jitsiServerURL = hardcodedJitsiServerURL } + let useJitsiFor1To1Calls = vectorWellKnownJitsiConfiguration?.useFor1To1Calls + // Tile server configuration @@ -91,7 +93,8 @@ final class HomeserverConfigurationBuilder: NSObject { // Create HomeserverConfiguration let jitsiConfiguration = HomeserverJitsiConfiguration(serverDomain: jitsiPreferredDomain, - serverURL: jitsiServerURL) + serverURL: jitsiServerURL, + useFor1To1Calls: useJitsiFor1To1Calls) return HomeserverConfiguration(jitsi: jitsiConfiguration, encryption: encryptionConfiguration, diff --git a/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift b/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift index e31ea363c..16714b5dc 100644 --- a/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift +++ b/Riot/Model/HomeserverConfiguration/HomeserverJitsiConfiguration.swift @@ -21,10 +21,12 @@ import Foundation final class HomeserverJitsiConfiguration: NSObject { let serverDomain: String? let serverURL: URL? + let useFor1To1Calls: Bool - init(serverDomain: String?, serverURL: URL?) { + init(serverDomain: String?, serverURL: URL?, useFor1To1Calls: Bool?) { self.serverDomain = serverDomain self.serverURL = serverURL + self.useFor1To1Calls = useFor1To1Calls ?? false super.init() } diff --git a/Riot/Model/WellKnown/VectorWellKnown.swift b/Riot/Model/WellKnown/VectorWellKnown.swift index 71c127e89..356fbdde8 100644 --- a/Riot/Model/WellKnown/VectorWellKnown.swift +++ b/Riot/Model/WellKnown/VectorWellKnown.swift @@ -74,7 +74,8 @@ extension VectorWellKnownEncryptionConfiguration: Decodable { // MARK: - Jitsi struct VectorWellKnownJitsiConfiguration: Decodable { - /// Default Jitsi server let preferredDomain: String? + /// Override native calling with Jitsi for 1:1 calls. + let useFor1To1Calls: Bool? } diff --git a/Riot/Modules/Room/RoomViewController.m b/Riot/Modules/Room/RoomViewController.m index 406b60cca..c00e96eb8 100644 --- a/Riot/Modules/Room/RoomViewController.m +++ b/Riot/Modules/Room/RoomViewController.m @@ -1977,7 +1977,9 @@ static CGSize kThreadListBarButtonItemImageSize; if (self.supportCallOption) { - if (self.roomDataSource.room.summary.membersCount.joined == 2 && self.roomDataSource.room.isDirect) + if (self.roomDataSource.room.summary.membersCount.joined == 2 + && self.roomDataSource.room.isDirect + && !self.mainSession.vc_homeserverConfiguration.jitsi.useFor1To1Calls) { // voice call button for Matrix call UIBarButtonItem *itemVoice = [[UIBarButtonItem alloc] initWithImage:AssetImages.voiceCallHangonIcon.image @@ -3163,15 +3165,16 @@ static CGSize kThreadListBarButtonItemImageSize; - (void)displayNewDirectChatWithTargetUser:(nonnull MXUser*)directChatTargetUser session:(nonnull MXSession*)session { + // `[displayRoom:]` may require the session, setting it here before calling it + [self addMatrixSession:session]; + // Release existing room data source or preview [self displayRoom:nil]; self.directChatTargetUser = directChatTargetUser; self.eventsAcknowledgementEnabled = NO; - - [self addMatrixSession:session]; - + [self refreshRoomTitle]; [self refreshRoomInputToolbar]; } @@ -5097,7 +5100,9 @@ static CGSize kThreadListBarButtonItemImageSize; } else { - if (self.roomDataSource.room.summary.membersCount.joined == 2 && self.roomDataSource.room.isDirect) + if (self.roomDataSource.room.summary.membersCount.joined == 2 + && self.roomDataSource.room.isDirect + && !self.mainSession.vc_homeserverConfiguration.jitsi.useFor1To1Calls) { // Matrix call [self.roomDataSource.room placeCallWithVideo:video success:nil failure:nil]; diff --git a/RiotSwiftUI/Modules/Authentication/QRLogin/Common/Service/MatrixSDK/QRLoginService.swift b/RiotSwiftUI/Modules/Authentication/QRLogin/Common/Service/MatrixSDK/QRLoginService.swift index 9cf127bb7..daf2e93f5 100644 --- a/RiotSwiftUI/Modules/Authentication/QRLogin/Common/Service/MatrixSDK/QRLoginService.swift +++ b/RiotSwiftUI/Modules/Authentication/QRLogin/Common/Service/MatrixSDK/QRLoginService.swift @@ -265,19 +265,7 @@ class QRLoginService: NSObject, QRLoginServiceProtocol { MXLog.debug("[QRLoginService] Got acess token") - let session = sessionCreator.createSession(credentials: credentials, client: client, removeOtherAccounts: false) - - let cryptoResult = await withCheckedContinuation { continuation in - session.enableCrypto(true) { response in - continuation.resume(returning: response) - } - } - - guard case .success = cryptoResult else { - MXLog.error("[QRLoginService] Failed enabling crypto") - await teardownRendezvous(state: .failed(error: .rendezvousFailed)) - return - } + let session = await createSession(credentials: credentials, client: client) MXLog.debug("[QRLoginService] Session created, sending device details") let successPayload = flow == .SETUP_ADDITIONAL_DEVICE_V1 @@ -363,6 +351,28 @@ class QRLoginService: NSObject, QRLoginServiceProtocol { state = .completed(session: session, securityCompleted: true) } + private func createSession(credentials: MXCredentials, client: AuthenticationRestClient) async -> MXSession { + let session = await sessionCreator.createSession(credentials: credentials, client: client, removeOtherAccounts: false) + + if session.state == .storeDataReady { + return session + } + + await withCheckedContinuation { continuation in + NotificationCenter.default.addObserver(forName: NSNotification.Name.mxSessionStateDidChange, object: session, queue: nil) { notification in + guard let session = notification.object as? MXSession else { + fatalError() + } + + if session.state == .storeDataReady { + continuation.resume() + } + } + } + + return session + } + private func declineRendezvous() async { guard let requestData = try? JSONEncoder().encode(QRLoginRendezvousPayload(type: .loginFinish, outcome: .declined)) else { return