Added account setting to enable/disable CPIM in basic chat rooms when in interop mode

This commit is contained in:
Sylvain Berfini 2024-04-19 15:43:08 +02:00
parent 11cab8c4a4
commit 5aa949b42c
4 changed files with 42 additions and 1 deletions

View file

@ -29,6 +29,7 @@ import org.linphone.core.Account
import org.linphone.core.NatPolicy
import org.linphone.core.TransportType
import org.linphone.core.tools.Log
import org.linphone.ui.main.model.isInSecureMode
import org.linphone.utils.Event
class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
@ -36,6 +37,8 @@ class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
private const val TAG = "[Account Settings ViewModel]"
}
val isAccountInSecureMode = MutableLiveData<Boolean>()
val availableTransports = arrayListOf<String>()
val selectedTransport = MutableLiveData<TransportType>()
@ -60,6 +63,8 @@ class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
val bundleModeEnabled = MutableLiveData<Boolean>()
val cpimInBasicChatRooms = MutableLiveData<Boolean>()
val accountFoundEvent = MutableLiveData<Event<Boolean>>()
private lateinit var account: Account
@ -81,6 +86,8 @@ class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
Log.i("$TAG Found matching account [$found]")
account = found
isAccountInSecureMode.postValue(account.isInSecureMode())
val params = account.params
val transportType = params.serverAddress?.transport ?: TransportType.Tls
@ -97,6 +104,8 @@ class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
bundleModeEnabled.postValue(params.isRtpBundleEnabled)
cpimInBasicChatRooms.postValue(params.isCpimInBasicChatRoomEnabled)
expire.postValue(params.expires.toString())
conferenceFactoryUri.postValue(params.conferenceFactoryAddress?.asStringUriOnly())
@ -145,6 +154,8 @@ class AccountSettingsViewModel @UiThread constructor() : ViewModel() {
newParams.isRtpBundleEnabled = bundleModeEnabled.value == true
newParams.isCpimInBasicChatRoomEnabled = cpimInBasicChatRooms.value == true
newParams.expires = expire.value?.toInt() ?: 31536000
val conferenceFactoryAddress = core.interpretUrl(

View file

@ -267,6 +267,34 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/bundle_mode_switch"/>
<com.google.android.material.materialswitch.MaterialSwitch
style="@style/material_switch_style"
android:id="@+id/cpim_basic_chat_room_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginEnd="16dp"
android:checked="@={viewModel.cpimInBasicChatRooms}"
android:visibility="@{viewModel.isAccountInSecureMode ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/bundle_mode_switch" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/settings_title_style"
android:id="@+id/cpim_basic_chat_room_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="10dp"
android:text="@string/account_settings_cpim_in_basic_conversations_title"
android:maxLines="2"
android:ellipsize="end"
android:visibility="@{viewModel.isAccountInSecureMode ? View.GONE : View.VISIBLE}"
app:layout_constraintTop_toTopOf="@id/cpim_basic_chat_room_switch"
app:layout_constraintBottom_toBottomOf="@id/cpim_basic_chat_room_switch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/cpim_basic_chat_room_switch"/>
<androidx.appcompat.widget.AppCompatTextView
style="@style/settings_title_style"
android:id="@+id/expire_title"
@ -278,7 +306,7 @@
android:text="@string/account_settings_expire_title"
android:maxLines="2"
android:ellipsize="end"
app:layout_constraintTop_toBottomOf="@id/bundle_mode_switch"
app:layout_constraintTop_toBottomOf="@id/cpim_basic_chat_room_switch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -298,6 +298,7 @@
<string name="account_settings_audio_video_conference_factory_uri_title">URI de l\'usine à conférences</string>
<string name="account_settings_lime_server_url_title">URL du serveur d\'échange de clés de chiffrement</string>
<string name="account_settings_bundle_mode_title">Mode "bundle"</string>
<string name="account_settings_cpim_in_basic_conversations_title">Utiliser CPIM dans les conversations "basiques"</string>
<string name="account_settings_dialog_invalid_password_title">Autentification requise</string>
<string name="account_settings_dialog_invalid_password_message">La connexion a échoué pour le compte \n%s.\n\nVous pouvez renseigner votre mot de passe à nouveau ou bien vérifier les options de configuration de votre compte.</string>

View file

@ -335,6 +335,7 @@
<string name="account_settings_audio_video_conference_factory_uri_title">Audio/video conference factory URI</string>
<string name="account_settings_lime_server_url_title">E2E encryption keys server URL</string>
<string name="account_settings_bundle_mode_title">Bundle mode</string>
<string name="account_settings_cpim_in_basic_conversations_title">Use CPIM in "basic" conversations</string>
<string name="account_settings_dialog_invalid_password_title">Authentication needed</string>
<string name="account_settings_dialog_invalid_password_message">Connection failed because authentication is missing or invalid for account \n%s.\n\nYou can provide password again, or check your account configuration in the settings.</string>