diff --git a/app/src/main/assets/assistant_default_values b/app/src/main/assets/assistant_default_values
index 11e69874a..a2c4512ab 100644
--- a/app/src/main/assets/assistant_default_values
+++ b/app/src/main/assets/assistant_default_values
@@ -19,6 +19,7 @@
0
0
0
+
diff --git a/app/src/main/assets/assistant_linphone_default_values b/app/src/main/assets/assistant_linphone_default_values
index 45c8b6c22..df1f378c1 100644
--- a/app/src/main/assets/assistant_linphone_default_values
+++ b/app/src/main/assets/assistant_linphone_default_values
@@ -19,6 +19,7 @@
1
1
1
+ https://lime.linphone.org/lime-server/lime-server.php
stun.linphone.org
diff --git a/app/src/main/assets/linphonerc_factory b/app/src/main/assets/linphonerc_factory
index 277e26f87..8a31a5b83 100644
--- a/app/src/main/assets/linphonerc_factory
+++ b/app/src/main/assets/linphonerc_factory
@@ -37,6 +37,7 @@ notify_each_friend_individually_when_presence_received=0
[app]
activation_code_length=4
prefer_basic_chat_room=1
+record_aware=1
[assistant]
xmlrpc_url=https://subscribe.linphone.org:444/wizard.php
diff --git a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt
index f4434daf1..98b18b56c 100644
--- a/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/chat/viewmodels/ChatRoomCreationViewModel.kt
@@ -41,7 +41,7 @@ class ChatRoomCreationViewModel : ContactsSelectionViewModel() {
val waitForChatRoomCreation = MutableLiveData()
- val limeAvailable: Boolean = LinphoneUtils.isLimeAvailable()
+ val secureChatAvailable: Boolean = LinphoneUtils.isEndToEndEncryptedChatAvailable()
private val listener = object : ChatRoomListenerStub() {
override fun onStateChanged(room: ChatRoom, state: ChatRoom.State) {
diff --git a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt
index ff6603191..a025bd0af 100644
--- a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactViewModel.kt
@@ -204,7 +204,7 @@ class ContactViewModel(friend: Friend, async: Boolean = false) : MessageNotifier
val presenceModel = friend.getPresenceModelForUriOrTel(value)
val hasPresence = presenceModel?.basicStatus == PresenceBasicStatus.Open
val isMe = coreContext.core.defaultAccount?.params?.identityAddress?.weakEqual(address) ?: false
- val secureChatAllowed = LinphoneUtils.isLimeAvailable() && !isMe && friend.getPresenceModelForUriOrTel(value)?.hasCapability(FriendCapability.LimeX3Dh) ?: false
+ val secureChatAllowed = LinphoneUtils.isEndToEndEncryptedChatAvailable() && !isMe && friend.getPresenceModelForUriOrTel(value)?.hasCapability(FriendCapability.LimeX3Dh) ?: false
val displayValue = if (coreContext.core.defaultAccount?.params?.domain == address.domain) (address.username ?: value) else value
val noa = ContactNumberOrAddressData(address, hasPresence, displayValue, showSecureChat = secureChatAllowed, listener = listener)
list.add(noa)
@@ -218,7 +218,7 @@ class ContactViewModel(friend: Friend, async: Boolean = false) : MessageNotifier
val address = coreContext.core.interpretUrl(contactAddress, true)
address?.displayName = displayName.value.orEmpty()
val isMe = if (address != null) coreContext.core.defaultAccount?.params?.identityAddress?.weakEqual(address) ?: false else false
- val secureChatAllowed = LinphoneUtils.isLimeAvailable() && !isMe && friend.getPresenceModelForUriOrTel(number)?.hasCapability(FriendCapability.LimeX3Dh) ?: false
+ val secureChatAllowed = LinphoneUtils.isEndToEndEncryptedChatAvailable() && !isMe && friend.getPresenceModelForUriOrTel(number)?.hasCapability(FriendCapability.LimeX3Dh) ?: false
val label = PhoneNumberUtils.vcardParamStringToAddressBookLabel(coreContext.context.resources, phoneNumber.label ?: "")
val noa = ContactNumberOrAddressData(address, hasPresence, number, isSip = false, showSecureChat = secureChatAllowed, typeLabel = label, listener = listener)
list.add(noa)
diff --git a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt
index cf769dffa..e8a1ff40a 100644
--- a/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/history/viewmodels/CallLogViewModel.kt
@@ -99,7 +99,7 @@ class CallLogViewModel(val callLog: CallLog, private val isRelated: Boolean = fa
val chatAllowed = !corePreferences.disableChat
- val secureChatAllowed = LinphoneUtils.isLimeAvailable() && (contact.value?.getPresenceModelForUriOrTel(peerSipUri)?.hasCapability(FriendCapability.LimeX3Dh) ?: false)
+ val secureChatAllowed = LinphoneUtils.isEndToEndEncryptedChatAvailable() && (contact.value?.getPresenceModelForUriOrTel(peerSipUri)?.hasCapability(FriendCapability.LimeX3Dh) ?: false)
val relatedCallLogs = MutableLiveData>()
diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt
index 7f7683c97..2546018a2 100644
--- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/AccountSettingsViewModel.kt
@@ -428,6 +428,15 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
}
val audioVideoConferenceFactoryUri = MutableLiveData()
+ val limeServerUrlListener = object : SettingListenerStub() {
+ override fun onTextValueChanged(newValue: String) {
+ val params = account.params.clone()
+ params.limeServerUrl = newValue
+ account.params = params
+ }
+ }
+ val limeServerUrl = MutableLiveData()
+
init {
update()
account.addListener(listener)
@@ -485,6 +494,7 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel(
conferenceFactoryUri.value = params.conferenceFactoryUri
audioVideoConferenceFactoryUri.value = params.audioVideoConferenceFactoryAddress?.asStringUriOnly()
+ limeServerUrl.value = params.limeServerUrl
}
private fun initTransportList() {
diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt
index 86a21035d..281627daa 100644
--- a/app/src/main/java/org/linphone/core/CoreContext.kt
+++ b/app/src/main/java/org/linphone/core/CoreContext.kt
@@ -384,13 +384,16 @@ class CoreContext(
core.isVibrationOnIncomingCallEnabled = true
core.config.setBool("app", "incoming_call_vibration", false)
}
+
if (core.config.getInt("misc", "conference_layout", 1) > 1) {
core.config.setInt("misc", "conference_layout", 1)
}
- if (!core.config.getBool("app", "conference_migration", false)) {
- core.isRecordAwareEnabled = true
- core.config.setBool("app", "conference_migration", true)
+ // Now LIME server URL is set on accounts
+ val limeServerUrl = core.limeX3DhServerUrl.orEmpty()
+ if (limeServerUrl.isNotEmpty()) {
+ Log.w("[Context] Removing LIME X3DH server URL from Core config")
+ core.limeX3DhServerUrl = null
}
// Disable Telecom Manager on Android < 10 to prevent crash due to OS bug in Android 9
@@ -446,6 +449,12 @@ class CoreContext(
Log.i("[Context] CPIM allowed in basic chat rooms for account ${params.identityAddress?.asString()}")
}
+ if (account.params.limeServerUrl == null && limeServerUrl.isNotEmpty()) {
+ params.limeServerUrl = limeServerUrl
+ paramsChanged = true
+ Log.i("[Context] Moving Core's LIME X3DH server URL [$limeServerUrl] on account ${params.identityAddress?.asString()}")
+ }
+
if (paramsChanged) {
Log.i("[Context] Account params have been updated, apply changes")
account.params = params
@@ -497,10 +506,6 @@ class CoreContext(
friendList.rlsAddress = rlsAddress
}
}
-
- if (core.limeX3DhAvailable()) {
- core.limeX3DhServerUrl = corePreferences.defaultLimeServerUrl
- }
} else {
Log.i("[Context] Background mode with foreground service automatically enabled")
corePreferences.keepServiceAlive = true
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt
index c15b73bfa..d8c5a6adc 100644
--- a/app/src/main/java/org/linphone/core/CorePreferences.kt
+++ b/app/src/main/java/org/linphone/core/CorePreferences.kt
@@ -483,9 +483,6 @@ class CorePreferences constructor(private val context: Context) {
val defaultRlsUri: String
get() = config.getString("sip", "rls_uri", "sips:rls@sip.linphone.org")!!
- val defaultLimeServerUrl: String
- get() = config.getString("lime", "lime_server_url", "https://lime.linphone.org/lime-server/lime-server.php")!!
-
val debugPopupCode: String
get() = config.getString("app", "debug_popup_magic", "#1234#")!!
diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt
index 82620f9ea..896a32013 100644
--- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt
+++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt
@@ -104,10 +104,10 @@ class LinphoneUtils {
}
}
- fun isLimeAvailable(): Boolean {
+ fun isEndToEndEncryptedChatAvailable(): Boolean {
val core = coreContext.core
- return core.limeX3DhAvailable() && core.isLimeX3DhEnabled &&
- core.limeX3DhServerUrl != null &&
+ return core.limeX3DhAvailable() &&
+ core.defaultAccount?.params?.limeServerUrl != null &&
core.defaultAccount?.params?.conferenceFactoryUri != null
}
diff --git a/app/src/main/res/layout/chat_room_creation_fragment.xml b/app/src/main/res/layout/chat_room_creation_fragment.xml
index f076cc4af..d35e61cb2 100644
--- a/app/src/main/res/layout/chat_room_creation_fragment.xml
+++ b/app/src/main/res/layout/chat_room_creation_fragment.xml
@@ -42,7 +42,7 @@
android:src="@drawable/back" />
+
+
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 78b7f00d2..8c354c7c7 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -747,4 +747,7 @@
Modifier la réunion
La réunion a été modifiée :
La réunion a été annulée :
+ Adresse du serveur de conversation de groupe/sécurisées
+ Adresse du serveur de conférence audio/vidéo
+ URL du serveur de clés pour le chiffrement de bout en bout
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 570305473..3a3d5ffd6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -689,6 +689,7 @@
Replace + by 00
Conference factory URI
Audio/video conference factory URI
+ E2E encryption keys server URL
Default layout