From 88c230f1365224923caf12e3f6898f7800348f26 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 4 Jun 2024 11:19:29 +0200 Subject: [PATCH] Removed secureMode/interopMode related code for now, will do it again the day it will be available in SDK + minor improvements --- .../org/linphone/contacts/ContactLoader.kt | 2 +- .../org/linphone/contacts/ContactsManager.kt | 2 +- .../viewmodel/AccountLoginViewModel.kt | 37 ------------------- .../AbstractNewTransferCallFragment.kt | 2 +- .../ui/call/viewmodel/CurrentCallViewModel.kt | 4 +- .../chat/adapter/ConversationEventAdapter.kt | 4 +- .../chat/fragment/ConversationFragment.kt | 2 +- .../ui/main/chat/model/MessageModel.kt | 2 +- .../chat/viewmodel/ConversationViewModel.kt | 3 +- .../viewmodel/StartConversationViewModel.kt | 4 +- .../contacts/viewmodel/ContactViewModel.kt | 12 +++--- .../viewmodel/ContactsListViewModel.kt | 7 ++-- .../ui/main/fragment/DrawerMenuFragment.kt | 4 +- .../fragment/GenericAddressPickerFragment.kt | 2 +- .../history/viewmodel/HistoryViewModel.kt | 4 +- .../linphone/ui/main/model/AccountModel.kt | 37 ++----------------- .../RecordingMediaPlayerViewModel.kt | 4 +- .../fragment/AccountProfileModeFragment.kt | 17 --------- .../viewmodel/AccountProfileViewModel.kt | 31 +--------------- .../viewmodel/AddressSelectionViewModel.kt | 3 +- .../java/org/linphone/utils/ShortcutUtils.kt | 2 +- .../java/org/linphone/utils/TimestampUtils.kt | 2 + .../account_profile_secure_mode_fragment.xml | 4 -- .../main/res/layout/recording_list_cell.xml | 1 + app/src/main/res/values-fr/strings.xml | 6 +-- app/src/main/res/values/strings.xml | 7 +--- 26 files changed, 40 insertions(+), 165 deletions(-) diff --git a/app/src/main/java/org/linphone/contacts/ContactLoader.kt b/app/src/main/java/org/linphone/contacts/ContactLoader.kt index ad7bc1773..ac5a8672e 100644 --- a/app/src/main/java/org/linphone/contacts/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contacts/ContactLoader.kt @@ -57,7 +57,7 @@ class ContactLoader : LoaderManager.LoaderCallbacks { private const val MIN_INTERVAL_TO_WAIT_BEFORE_REFRESH = 300000L // 5 minutes } - val friends = HashMap() + private val friends = HashMap() @MainThread override fun onCreateLoader(id: Int, args: Bundle?): Loader { diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 0809a70f0..7015a152c 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -749,7 +749,7 @@ fun Friend.getListOfSipAddressesAndPhoneNumbers(listener: ContactNumberOrAddress // phone numbers are disabled is secure mode unless linked to a SIP address val defaultAccount = LinphoneUtils.getDefaultAccount() - val enablePhoneNumbers = hasPresenceInfo || defaultAccount?.isEndToEndEncryptionMandatory() == false + val enablePhoneNumbers = hasPresenceInfo || isEndToEndEncryptionMandatory() == false val address = presenceAddress ?: core.interpretUrl( number.phoneNumber, LinphoneUtils.applyInternationalPrefix(defaultAccount) diff --git a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt index 2605e5431..f90554d9d 100644 --- a/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt +++ b/app/src/main/java/org/linphone/ui/assistant/viewmodel/AccountLoginViewModel.kt @@ -35,8 +35,6 @@ import org.linphone.core.Reason import org.linphone.core.RegistrationState import org.linphone.core.tools.Log import org.linphone.ui.GenericViewModel -import org.linphone.ui.main.model.setEndToEndEncryptionMandatory -import org.linphone.ui.main.model.setInteroperabilityMode import org.linphone.utils.AppUtils import org.linphone.utils.Event @@ -67,8 +65,6 @@ open class AccountLoginViewModel @UiThread constructor() : GenericViewModel() { val registrationInProgress = MutableLiveData() - val isCurrentlySelectedModeSecure = MutableLiveData() - val accountLoggedInEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -144,8 +140,6 @@ open class AccountLoginViewModel @UiThread constructor() : GenericViewModel() { loginEnabled.addSource(password) { loginEnabled.value = isLoginButtonEnabled() } - - isCurrentlySelectedModeSecure.value = true } @UiThread @@ -246,37 +240,6 @@ open class AccountLoginViewModel @UiThread constructor() : GenericViewModel() { showPassword.value = showPassword.value == false } - @UiThread - fun switchToSecureMode() { - isCurrentlySelectedModeSecure.value = true - } - - @UiThread - fun switchToInteropMode() { - isCurrentlySelectedModeSecure.value = false - } - - @UiThread - fun applySelectedMode() { - coreContext.postOnCoreThread { core -> - if (::newlyCreatedAccount.isInitialized) { - if (isCurrentlySelectedModeSecure.value == true) { - Log.i( - "$TAG Selected mode is end-to-end encrypted, forcing media & im encryption to mandatory and setting media encryption to ZRTP" - ) - newlyCreatedAccount.setEndToEndEncryptionMandatory() - } else { - Log.i( - "$TAG Selected mode is interoperable, not forcing media & im encryption to mandatory and setting media encryption to SRTP" - ) - newlyCreatedAccount.setInteroperabilityMode() - } - } else { - Log.e("$TAG Failed to find newlyCreatedAccount!") - } - } - } - @UiThread private fun isLoginButtonEnabled(): Boolean { return sipIdentity.value.orEmpty().trim().isNotEmpty() && password.value.orEmpty().isNotEmpty() diff --git a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt index bb0bc8467..bdae477a1 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt @@ -225,7 +225,7 @@ abstract class AbstractNewTransferCallFragment : GenericCallFragment() { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = core.defaultAccount?.isEndToEndEncryptionMandatory() != true + val enablePhoneNumbers = isEndToEndEncryptionMandatory() != true if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { Log.i( diff --git a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt index 27e21f4c0..3f7ad3cd9 100644 --- a/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/call/viewmodel/CurrentCallViewModel.kt @@ -803,13 +803,13 @@ class CurrentCallViewModel @UiThread constructor() : GenericViewModel() { val sameDomain = remote.domain == corePreferences.defaultDomain && remote.domain == account.params.domain - if (account.isEndToEndEncryptionMandatory() && sameDomain) { + if (isEndToEndEncryptionMandatory() && sameDomain) { Log.i( "$TAG Account is in secure mode & domain matches, creating a E2E conversation" ) params.backend = ChatRoom.Backend.FlexisipChat params.isEncryptionEnabled = true - } else if (!account.isEndToEndEncryptionMandatory()) { + } else if (!isEndToEndEncryptionMandatory()) { if (LinphoneUtils.isEndToEndEncryptedChatAvailable(core)) { Log.i( "$TAG Account is in interop mode but LIME is available, creating a E2E conversation" diff --git a/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt b/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt index 2f51f0fca..90a15bf5a 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/adapter/ConversationEventAdapter.kt @@ -199,7 +199,7 @@ class ConversationEventAdapter : model = message executePendingBindings() - binding.root.doOnPreDraw { + root.doOnPreDraw { binding.deliveryStatus.startAnimatedDrawable() } } @@ -214,7 +214,7 @@ class ConversationEventAdapter : model = message executePendingBindings() - binding.root.doOnPreDraw { + root.doOnPreDraw { binding.deliveryStatus.startAnimatedDrawable() } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 7a9c1083f..8f275709f 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -133,7 +133,7 @@ class ConversationFragment : SlidingPaneChildFragment() { maxItems = SendMessageInConversationViewModel.MAX_FILES_TO_ATTACH ) ) { list -> - if (!list.isNullOrEmpty()) { + if (list.isNotEmpty()) { for (uri in list) { lifecycleScope.launch { withContext(Dispatchers.IO) { diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt index 96f91e3ef..87f0cb43f 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt @@ -101,7 +101,7 @@ class MessageModel @WorkerThread constructor( val time = TimestampUtils.toString(timestamp) val chatRoomIsReadOnly = chatMessage.chatRoom.isReadOnly || - (!chatMessage.chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt()) && LinphoneUtils.getDefaultAccount()?.isEndToEndEncryptionMandatory() == true) + (!chatMessage.chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt()) && isEndToEndEncryptionMandatory() == true) val groupedWithNextMessage = MutableLiveData() diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 4183c367d..679d48631 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -498,8 +498,7 @@ class ConversationViewModel @UiThread constructor() : AbstractConversationViewMo @WorkerThread fun checkIfConversationShouldBeDisabledForSecurityReasons() { if (!chatRoom.hasCapability(ChatRoom.Capabilities.Encrypted.toInt())) { - val account = LinphoneUtils.getDefaultAccount() - if (account?.isEndToEndEncryptionMandatory() == true) { + if (isEndToEndEncryptionMandatory() == true) { Log.w( "$TAG Conversation with subject [${chatRoom.subject}] has been disabled because it isn't encrypted and default account is in secure mode" ) diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/StartConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/StartConversationViewModel.kt index feb434a1f..19b7a974b 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/StartConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/StartConversationViewModel.kt @@ -193,11 +193,11 @@ class StartConversationViewModel @UiThread constructor() : AddressSelectionViewM params.ephemeralLifetime = 0 // Make sure ephemeral is disabled by default val sameDomain = remote.domain == corePreferences.defaultDomain && remote.domain == account.params.domain - if (account.isEndToEndEncryptionMandatory() && sameDomain) { + if (isEndToEndEncryptionMandatory() && sameDomain) { Log.i("$TAG Account is in secure mode & domain matches, creating a E2E conversation") params.backend = ChatRoom.Backend.FlexisipChat params.isEncryptionEnabled = true - } else if (!account.isEndToEndEncryptionMandatory()) { + } else if (!isEndToEndEncryptionMandatory()) { if (LinphoneUtils.isEndToEndEncryptedChatAvailable(core)) { Log.i( "$TAG Account is in interop mode but LIME is available, creating a E2E conversation" diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt index 59146582a..ee9b6b30d 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt @@ -250,7 +250,7 @@ class ContactViewModel @UiThread constructor() : GenericViewModel() { ) // Only expand contacts' devices & trust by default if in E2E encrypted mode expandDevicesTrust.postValue( - LinphoneUtils.getDefaultAccount()?.isEndToEndEncryptionMandatory() == true + isEndToEndEncryptionMandatory() == true ) coreContext.contactsManager.addListener(contactsListener) } @@ -427,7 +427,7 @@ class ContactViewModel @UiThread constructor() : GenericViewModel() { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = core.defaultAccount?.isEndToEndEncryptionMandatory() != true + val enablePhoneNumbers = isEndToEndEncryptionMandatory() != true if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { Log.i( @@ -464,7 +464,7 @@ class ContactViewModel @UiThread constructor() : GenericViewModel() { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = core.defaultAccount?.isEndToEndEncryptionMandatory() != true + val enablePhoneNumbers = isEndToEndEncryptionMandatory() != true if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { Log.i( @@ -501,7 +501,7 @@ class ContactViewModel @UiThread constructor() : GenericViewModel() { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = core.defaultAccount?.isEndToEndEncryptionMandatory() != true + val enablePhoneNumbers = isEndToEndEncryptionMandatory() != true if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { Log.i( @@ -547,13 +547,13 @@ class ContactViewModel @UiThread constructor() : GenericViewModel() { params.ephemeralLifetime = 0 // Make sure ephemeral is disabled by default val sameDomain = remote.domain == corePreferences.defaultDomain && remote.domain == account.params.domain - if (account.isEndToEndEncryptionMandatory() && sameDomain) { + if (isEndToEndEncryptionMandatory() && sameDomain) { Log.i( "$TAG Account is in secure mode & domain matches, creating a E2E conversation" ) params.backend = ChatRoom.Backend.FlexisipChat params.isEncryptionEnabled = true - } else if (!account.isEndToEndEncryptionMandatory()) { + } else if (!isEndToEndEncryptionMandatory()) { if (LinphoneUtils.isEndToEndEncryptedChatAvailable(core)) { Log.i( "$TAG Account is in interop mode but LIME is available, creating a E2E conversation" diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index dd6f62628..11e31b7d7 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -161,10 +161,9 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() { @WorkerThread private fun updateDomainFilter() { val defaultAccount = coreContext.core.defaultAccount - isDefaultAccountLinphone.postValue( - defaultAccount?.isEndToEndEncryptionMandatory() == true && defaultAccount.params.domain == corePreferences.defaultDomain - ) - domainFilter = if (defaultAccount?.isEndToEndEncryptionMandatory() == true) { + val defaultDomain = defaultAccount?.params?.domain == corePreferences.defaultDomain + isDefaultAccountLinphone.postValue(defaultDomain) + domainFilter = if (isEndToEndEncryptionMandatory() == true) { corePreferences.defaultDomain } else { "*" diff --git a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt index fe664d75f..38312ce11 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/DrawerMenuFragment.kt @@ -150,8 +150,8 @@ class DrawerMenuFragment : GenericMainFragment() { val popupWindow = PopupWindow( popupView.root, - ViewGroup.LayoutParams.WRAP_CONTENT, - ViewGroup.LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT, true ) diff --git a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt index 958e99f0b..c199afa30 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt @@ -162,7 +162,7 @@ abstract class GenericAddressPickerFragment : GenericMainFragment() { val numbersCount = friend.phoneNumbers.size // Do not consider phone numbers if default account is in secure mode - val enablePhoneNumbers = core.defaultAccount?.isEndToEndEncryptionMandatory() != true + val enablePhoneNumbers = isEndToEndEncryptionMandatory() != true if (addressesCount == 1 && (numbersCount == 0 || !enablePhoneNumbers)) { val address = friend.addresses.first() diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt index 4fc6bf702..b8513e500 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/HistoryViewModel.kt @@ -189,13 +189,13 @@ class HistoryViewModel @UiThread constructor() : GenericViewModel() { params.ephemeralLifetime = 0 // Make sure ephemeral is disabled by default val sameDomain = remote.domain == corePreferences.defaultDomain && remote.domain == account.params.domain - if (account.isEndToEndEncryptionMandatory() && sameDomain) { + if (isEndToEndEncryptionMandatory() && sameDomain) { Log.i( "$TAG Account is in secure mode & domain matches, creating a E2E conversation" ) params.backend = ChatRoom.Backend.FlexisipChat params.isEncryptionEnabled = true - } else if (!account.isEndToEndEncryptionMandatory()) { + } else if (!isEndToEndEncryptionMandatory()) { if (LinphoneUtils.isEndToEndEncryptedChatAvailable(core)) { Log.i( "$TAG Account is in interop mode but LIME is available, creating a E2E conversation" diff --git a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt index 97b2f89be..fb1fb5067 100644 --- a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt +++ b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt @@ -24,7 +24,6 @@ import androidx.annotation.UiThread import androidx.annotation.WorkerThread import androidx.lifecycle.MutableLiveData import org.linphone.LinphoneApplication.Companion.coreContext -import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.contacts.AbstractAvatarModel import org.linphone.core.Account @@ -170,7 +169,7 @@ class AccountModel @WorkerThread constructor( ) trust.postValue(SecurityLevel.EndToEndEncryptedAndVerified) - showTrust.postValue(account.isEndToEndEncryptionMandatory()) + showTrust.postValue(isEndToEndEncryptionMandatory()) val name = LinphoneUtils.getDisplayName(account.params.identityAddress) displayName.postValue(name) @@ -240,36 +239,6 @@ class AccountModel @WorkerThread constructor( } @WorkerThread -fun Account.isEndToEndEncryptionMandatory(): Boolean { - val defaultDomain = params.identityAddress?.domain == corePreferences.defaultDomain - val encryption = params.instantMessagingEncryptionMandatory - return defaultDomain && encryption -} - -@WorkerThread -fun Account.setEndToEndEncryptionMandatory() { - val clone = params.clone() - clone.instantMessagingEncryptionMandatory = true - params = clone - - if (this == core.defaultAccount) { - coreContext.contactsManager.updateContactsModelDependingOnDefaultAccountMode() - } - Log.i( - "[Account] End-to-end encryption is now mandatory on account [${params.identityAddress?.asStringUriOnly()}]" - ) -} - -@WorkerThread -fun Account.setInteroperabilityMode() { - val clone = params.clone() - clone.instantMessagingEncryptionMandatory = false - params = clone - - if (this == core.defaultAccount) { - coreContext.contactsManager.updateContactsModelDependingOnDefaultAccountMode() - } - Log.i( - "[Account] End-to-end encryption is no longer mandatory on account [${params.identityAddress?.asStringUriOnly()}]" - ) +fun isEndToEndEncryptionMandatory(): Boolean { + return false // TODO: Will be done later in SDK } diff --git a/app/src/main/java/org/linphone/ui/main/recordings/viewmodel/RecordingMediaPlayerViewModel.kt b/app/src/main/java/org/linphone/ui/main/recordings/viewmodel/RecordingMediaPlayerViewModel.kt index c4e2f66eb..ffffa1fa2 100644 --- a/app/src/main/java/org/linphone/ui/main/recordings/viewmodel/RecordingMediaPlayerViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/recordings/viewmodel/RecordingMediaPlayerViewModel.kt @@ -47,7 +47,7 @@ class RecordingMediaPlayerViewModel @UiThread constructor() : GenericViewModel() lateinit var recordingModel: RecordingModel - lateinit var player: Player + private lateinit var player: Player val isVideo = MutableLiveData() @@ -217,7 +217,7 @@ class RecordingMediaPlayerViewModel @UiThread constructor() : GenericViewModel() if (!::player.isInitialized) return Log.i("$TAG Stopping player") - pause() + pausePlayback() position.postValue(0) player.seek(0) player.close() diff --git a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileModeFragment.kt b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileModeFragment.kt index a700ca766..a646c81cf 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileModeFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/fragment/AccountProfileModeFragment.kt @@ -30,7 +30,6 @@ import org.linphone.core.tools.Log import org.linphone.databinding.AccountProfileSecureModeFragmentBinding import org.linphone.ui.main.fragment.GenericMainFragment import org.linphone.ui.main.settings.viewmodel.AccountProfileViewModel -import org.linphone.utils.DialogUtils @UiThread class AccountProfileModeFragment : GenericMainFragment() { @@ -64,21 +63,5 @@ class AccountProfileModeFragment : GenericMainFragment() { Log.i("$TAG Leaving without saving changes...") goBack() } - - binding.setContinueClickListener { - Log.i("$TAG Applying changes and leaving...") - viewModel.applySelectedMode() - goBack() - } - - binding.setDefaultModeTooltipClickListener { - val dialog = DialogUtils.getAccountModeExplanationDialog(requireActivity(), true) - dialog.show() - } - - binding.setInteropModeTooltipClickListener { - val dialog = DialogUtils.getAccountModeExplanationDialog(requireActivity(), false) - dialog.show() - } } } diff --git a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt index 721b52f0e..31f9333fd 100644 --- a/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/settings/viewmodel/AccountProfileViewModel.kt @@ -30,8 +30,6 @@ import org.linphone.core.tools.Log import org.linphone.ui.GenericViewModel import org.linphone.ui.main.model.AccountModel import org.linphone.ui.main.model.isEndToEndEncryptionMandatory -import org.linphone.ui.main.model.setEndToEndEncryptionMandatory -import org.linphone.ui.main.model.setInteroperabilityMode import org.linphone.ui.main.settings.model.AccountDeviceModel import org.linphone.utils.Event @@ -109,7 +107,7 @@ class AccountProfileViewModel @UiThread constructor() : GenericViewModel() { Log.i("$TAG Found matching account [$found]") account = found accountModel.postValue(AccountModel(account)) - isCurrentlySelectedModeSecure.postValue(account.isEndToEndEncryptionMandatory()) + isCurrentlySelectedModeSecure.postValue(isEndToEndEncryptionMandatory()) registerEnabled.postValue(account.params.isRegisterEnabled) sipAddress.postValue(account.params.identityAddress?.asStringUriOnly()) @@ -267,31 +265,4 @@ class AccountProfileViewModel @UiThread constructor() : GenericViewModel() { ) } } - - @UiThread - fun switchToSecureMode() { - isCurrentlySelectedModeSecure.value = true - } - - @UiThread - fun switchToInteropMode() { - isCurrentlySelectedModeSecure.value = false - } - - @UiThread - fun applySelectedMode() { - coreContext.postOnCoreThread { core -> - if (isCurrentlySelectedModeSecure.value == true) { - Log.i( - "$TAG Selected mode is end-to-end encrypted, forcing media & im encryption to mandatory and setting media encryption to ZRTP" - ) - account.setEndToEndEncryptionMandatory() - } else { - Log.i( - "$TAG Selected mode is interoperable, not forcing media & im encryption to mandatory and setting media encryption to SRTP" - ) - account.setInteroperabilityMode() - } - } - } } diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt index 435f3290e..c2bf653ef 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/AddressSelectionViewModel.kt @@ -85,8 +85,7 @@ abstract class AddressSelectionViewModel @UiThread constructor() : DefaultAccoun multipleSelectionMode.value = false coreContext.postOnCoreThread { core -> - val defaultAccount = core.defaultAccount - limitSearchToLinphoneAccounts = defaultAccount?.isEndToEndEncryptionMandatory() ?: false + limitSearchToLinphoneAccounts = isEndToEndEncryptionMandatory() ?: false coreContext.contactsManager.addListener(contactsListener) magicSearch = core.createMagicSearch() diff --git a/app/src/main/java/org/linphone/utils/ShortcutUtils.kt b/app/src/main/java/org/linphone/utils/ShortcutUtils.kt index a4158421e..7e223f69f 100644 --- a/app/src/main/java/org/linphone/utils/ShortcutUtils.kt +++ b/app/src/main/java/org/linphone/utils/ShortcutUtils.kt @@ -66,7 +66,7 @@ class ShortcutUtils { var count = 0 for (chatRoom in defaultAccount.chatRooms) { - if (defaultAccount.isEndToEndEncryptionMandatory() && !chatRoom.currentParams.isEncryptionEnabled) { + if (isEndToEndEncryptionMandatory() && !chatRoom.currentParams.isEncryptionEnabled) { Log.w( "$TAG Account is in secure mode, skipping not encrypted conversation [${LinphoneUtils.getChatRoomId( chatRoom diff --git a/app/src/main/java/org/linphone/utils/TimestampUtils.kt b/app/src/main/java/org/linphone/utils/TimestampUtils.kt index 0a49e5182..e0015ad14 100644 --- a/app/src/main/java/org/linphone/utils/TimestampUtils.kt +++ b/app/src/main/java/org/linphone/utils/TimestampUtils.kt @@ -230,6 +230,7 @@ class TimestampUtils { ) hours >= 1L -> { String.format( + Locale.getDefault(), "%02d:%02d:%02d", seconds / 3600, (seconds % 3600) / 60, @@ -237,6 +238,7 @@ class TimestampUtils { ) } else -> String.format( + Locale.getDefault(), "%02d:%02d", (seconds % 3600) / 60, (seconds % 60) diff --git a/app/src/main/res/layout/account_profile_secure_mode_fragment.xml b/app/src/main/res/layout/account_profile_secure_mode_fragment.xml index a85abc888..31e509773 100644 --- a/app/src/main/res/layout/account_profile_secure_mode_fragment.xml +++ b/app/src/main/res/layout/account_profile_secure_mode_fragment.xml @@ -81,7 +81,6 @@ diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0a059da14..af2e43a07 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -141,9 +141,6 @@ Je préfère créer un compte J\'ai compris Nom d\'utilisateur ou identité SIP* - Choisissez votre mode - Vous pourrez le changer plus tard - Continuer Les notifications poussées ne sont pas disponibles, la création de compte est donc désactivée. Ce compte existe déjà Caractère(s) invalide(s): les majuscules et les caractères spéciaux ne sont pas autorisés @@ -304,10 +301,9 @@ Compte désactivé, vous ne recevrez ni appel ni message. Connexion en cours, merci de patienter… Erreur de connexion, vérifiez vos paramètres. - Changer de mode Préfixe international Pourquoi en avons-nous besoin ? - Blah blah blah + Blah blah blah Paramètres de compte Supprimer le compte Choisir le mode diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 40ce61df1..f67ef3d6f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -176,9 +176,6 @@ I prefer to create an account I understand Username or SIP identity* - Personalize your profile mode - You may change that mode later - Continue Push notifications not available, account creation disabled This account already exists Invalid characters: capital letters and special characters are not allowed @@ -339,10 +336,9 @@ Account has been disabled, you won\'t receive any call or message. Account is connecting to the server, please wait… Account connection failed, check your settings. - Change mode International Prefix Why do we need it? - Blah blah blah + Blah blah blah Account settings Delete account Choose account mode @@ -828,4 +824,5 @@ Save CardDAV configuration Delete this LDAP configuration Save LDAP configuration + Plays the call recording \ No newline at end of file