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