diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 1c7aecf2c..7a9fac7c2 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -142,12 +142,22 @@ class CorePreferences // Conversation related + @get:WorkerThread @set:WorkerThread var markConversationAsReadWhenDismissingMessageNotification: Boolean get() = config.getBool("app", "mark_as_read_notif_dismissal", false) set(value) { config.setBool("app", "mark_as_read_notif_dismissal", value) } + // Conference related + + @get:WorkerThread @set:WorkerThread + var createEndToEndEncryptedMeetingsAndGroupCalls: Boolean + get() = config.getBool("app", "create_e2e_encrypted_conferences", false) + set(value) { + config.setBool("app", "create_e2e_encrypted_conferences", value) + } + // Contacts related @get:WorkerThread @set:WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt index 6b7af73bc..160ffd51a 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt @@ -399,7 +399,7 @@ class ScheduleMeetingViewModel conferenceInfo.setCapability(StreamType.Text, true) // Enable end-to-end encryption if client supports it - conferenceInfo.securityLevel = if (LinphoneUtils.isEndToEndEncryptedChatAvailable(core)) { + conferenceInfo.securityLevel = if (corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls) { Log.i("$TAG Requesting EndToEnd security level for conference") Conference.SecurityLevel.EndToEnd } else { diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt index daae133a0..9c90b3894 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/SettingsViewModel.kt @@ -187,6 +187,7 @@ class SettingsViewModel val mediaEncryptionLabels = arrayListOf() private val mediaEncryptionValues = arrayListOf() val mediaEncryptionMandatory = MutableLiveData() + val createEndToEndEncryptedConferences = MutableLiveData() val acceptEarlyMedia = MutableLiveData() val allowOutgoingEarlyMedia = MutableLiveData() @@ -675,6 +676,7 @@ class SettingsViewModel } mediaEncryptionMandatory.postValue(core.isMediaEncryptionMandatory) + createEndToEndEncryptedConferences.postValue(corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls) acceptEarlyMedia.postValue(corePreferences.acceptEarlyMedia) allowOutgoingEarlyMedia.postValue(corePreferences.allowOutgoingEarlyMedia) } @@ -702,6 +704,16 @@ class SettingsViewModel } } + @UiThread + fun toggleConferencesEndToEndEncryption() { + val newValue = createEndToEndEncryptedConferences.value == false + + coreContext.postOnCoreThread { core -> + corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls = newValue + createEndToEndEncryptedConferences.postValue(newValue) + } + } + @UiThread fun toggleAcceptEarlyMedia() { val newValue = acceptEarlyMedia.value == false diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 7e77a3d4d..20837bc79 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -272,7 +272,7 @@ class LinphoneUtils { conferenceParams.subject = subject // Enable end-to-end encryption if client supports it - conferenceParams.securityLevel = if (isEndToEndEncryptedChatAvailable(core)) { + conferenceParams.securityLevel = if (corePreferences.createEndToEndEncryptedMeetingsAndGroupCalls) { Log.i("$TAG Requesting EndToEnd security level for conference") Conference.SecurityLevel.EndToEnd } else { diff --git a/app/src/main/res/layout/settings_advanced_fragment.xml b/app/src/main/res/layout/settings_advanced_fragment.xml index a16aa76c5..71552ed29 100644 --- a/app/src/main/res/layout/settings_advanced_fragment.xml +++ b/app/src/main/res/layout/settings_advanced_fragment.xml @@ -192,6 +192,34 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@id/media_encryption" /> + + + + + app:layout_constraintTop_toBottomOf="@id/e2e_encrypted_conferences_switch" /> URL du serveur de partage de fichier Chiffrement du média Rendre le chiffrement du média obligatoire + Créer en mode chiffré de bout en bout les réunions et les appels de groupe Accepter l\'early media Autoriser l\'early media pour les appels sortants URL de configuration distante diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4a3daa79f..7d3cad640 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -300,6 +300,7 @@ File sharing server URL Media encryption Media encryption mandatory + Create end-to-end encrypted meetings & group calls Accept early media Allow outgoing early media Remote provisioning URL