Merge pull request #7694 from vector-im/release/1.11.4/release

Release 1.11.4
This commit is contained in:
Stefan Ceriu
2023-10-04 13:07:43 +03:00
committed by GitHub
23 changed files with 200 additions and 97 deletions

View File

@@ -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

View File

@@ -15,5 +15,5 @@
//
// Version
MARKETING_VERSION = 1.11.3
CURRENT_PROJECT_VERSION = 1.11.3
MARKETING_VERSION = 1.11.4
CURRENT_PROJECT_VERSION = 1.11.4

View File

@@ -2,7 +2,7 @@ source "https://rubygems.org"
gem "xcode-install"
gem "fastlane"
gem "cocoapods", '~>1.11.2'
gem "cocoapods", '~>1.13.0'
gem "slather"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')

View File

@@ -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

View File

@@ -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' } }

View File

@@ -210,4 +210,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: b926e281576aabcdbc2bdcb40ef3ad3e0991abe8
COCOAPODS: 1.11.3
COCOAPODS: 1.13.0

View File

@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
@@ -16,7 +15,7 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Riot.app"
BuildableName = "Element.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
@@ -35,11 +34,20 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Riot.app"
BuildableName = "Element.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
</MacroExpansion>
<CodeCoverageTargets>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Element.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
</CodeCoverageTargets>
<Testables>
<TestableReference
skipped = "NO">
@@ -52,17 +60,6 @@
</BuildableReference>
</TestableReference>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
<CodeCoverageTargets>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Riot.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
</CodeCoverageTargets>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@@ -80,13 +77,11 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Riot.app"
BuildableName = "Element.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
@@ -99,13 +94,11 @@
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "57B13CC4586E9D43ED24DE1E"
BuildableName = "Riot.app"
BuildableName = "Element.app"
BlueprintName = "Riot"
ReferencedContainer = "container:Riot.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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 %@";

View File

@@ -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";

View File

@@ -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" = "Sarrihet 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" = "Sarrihet 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ë smund 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.";

View File

@@ -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";

View File

@@ -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" = "Функціональність наразі недоступна. Зверніться до адміністратора вашого домашнього сервера";

View File

@@ -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á";

View File

@@ -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" = "新版应用布局";

View File

@@ -72,6 +72,8 @@ final class HomeserverConfigurationBuilder: NSObject {
jitsiServerURL = hardcodedJitsiServerURL
}
let useJitsiFor1To1Calls = vectorWellKnownJitsiConfiguration?.useFor1To1Calls
// Tile server configuration
let tileServerMapStyleURL: URL
@@ -87,7 +89,8 @@ final class HomeserverConfigurationBuilder: NSObject {
// Create HomeserverConfiguration
let jitsiConfiguration = HomeserverJitsiConfiguration(serverDomain: jitsiPreferredDomain,
serverURL: jitsiServerURL)
serverURL: jitsiServerURL,
useFor1To1Calls: useJitsiFor1To1Calls)
return HomeserverConfiguration(jitsi: jitsiConfiguration,
encryption: encryptionConfiguration,

View File

@@ -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()
}

View File

@@ -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?
}

View File

@@ -1942,7 +1942,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
@@ -3119,15 +3121,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];
}
@@ -5038,7 +5041,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];

View File

@@ -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