From 8c6975a859b238b35b5f913358d54d8c991739ea Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 13 Mar 2023 13:02:32 +0100 Subject: [PATCH] Added account removal confirmation dialog --- CHANGELOG.md | 1 + .../chat/fragments/MasterChatRoomsFragment.kt | 2 + .../fragments/DetailContactFragment.kt | 2 + .../fragments/MasterContactsFragment.kt | 2 + .../fragments/MasterCallLogsFragment.kt | 2 + .../fragments/AccountSettingsFragment.kt | 38 ++++++++++++ .../viewmodels/AccountSettingsViewModel.kt | 61 +++++++++++-------- .../main/viewmodels/DialogViewModel.kt | 2 + .../main/res/drawable/dialog_delete_icon.xml | 7 +++ app/src/main/res/layout/dialog.xml | 11 ++++ app/src/main/res/values-fr/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + 12 files changed, 109 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/drawable/dialog_delete_icon.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 58c73a7af..98bbc518d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ Group changes to describe their impact on the project, as follows: ### Added - Showing short term presence for contacts whom publish it + added setting to disable it (enabled by default for sip.linphone.org accounts) +- Confirmation dialog before removing account ### Changed - Account EXPIRES is now set to 1 month instead of 1 year for sip.linphone.org accounts diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt index 3769c87a2..3ddf12b51 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/MasterChatRoomsFragment.kt @@ -191,6 +191,8 @@ class MasterChatRoomsFragment : MasterFragment() { private fun confirmContactRemoval() { val dialogViewModel = DialogViewModel(getString(R.string.contact_delete_one_dialog)) + dialogViewModel.showIcon = true + dialogViewModel.iconResource = R.drawable.dialog_delete_icon val dialog: Dialog = DialogUtils.getDialog(requireContext(), dialogViewModel) dialogViewModel.showCancelButton { diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt index 76b7acf52..b1b725f07 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/MasterContactsFragment.kt @@ -154,6 +154,8 @@ class MasterContactsFragment : MasterFragment() { @@ -100,6 +104,40 @@ class AccountSettingsFragment : GenericSettingFragment> by lazy { + MutableLiveData>() + } val deleteListener = object : SettingListenerStub() { override fun onClicked() { - accountToDelete = account - - val registered = account.state == RegistrationState.Ok - waitForUnregister.value = registered - - if (core.defaultAccount == account) { - Log.i("[Account Settings] Account was default, let's look for a replacement") - for (accountIterator in core.accountList) { - if (account != accountIterator) { - core.defaultAccount = accountIterator - Log.i("[Account Settings] New default account is $accountIterator") - break - } - } - } - - val params = account.params.clone() - params.isRegisterEnabled = false - account.params = params - - if (!registered) { - Log.w("[Account Settings] Account isn't registered, don't unregister before removing it") - deleteAccount(account) - } + deleteAccountRequiredEvent.value = Event(true) } } @@ -527,4 +508,34 @@ class AccountSettingsViewModel(val account: Account) : GenericSettingsViewModel( transportLabels.value = labels transportIndex.value = account.params.transport.toInt() } + + fun startDeleteAccount() { + Log.i("[Account Settings] Starting to delete account [${account.params.identityAddress?.asStringUriOnly()}]") + accountToDelete = account + + val registered = account.state == RegistrationState.Ok + waitForUnregister.value = registered + + if (core.defaultAccount == account) { + Log.i("[Account Settings] Account was default, let's look for a replacement") + for (accountIterator in core.accountList) { + if (account != accountIterator) { + core.defaultAccount = accountIterator + Log.i("[Account Settings] New default account is [${accountIterator.params.identityAddress?.asStringUriOnly()}]") + break + } + } + } + + val params = account.params.clone() + params.isRegisterEnabled = false + account.params = params + + if (!registered) { + Log.w("[Account Settings] Account isn't registered, don't unregister before removing it") + deleteAccount(account) + } else { + Log.i("[Account Settings] Waiting for account registration to be cleared before removing it") + } + } } diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt index 050821270..85299b292 100644 --- a/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/viewmodels/DialogViewModel.kt @@ -40,6 +40,8 @@ class DialogViewModel(val message: String, val title: String = "") : ViewModel() var iconResource: Int = 0 + var showSubscribeLinphoneOrgLink: Boolean = false + val doNotAskAgain = MutableLiveData() val dismissEvent = MutableLiveData>() diff --git a/app/src/main/res/drawable/dialog_delete_icon.xml b/app/src/main/res/drawable/dialog_delete_icon.xml new file mode 100644 index 000000000..bf1d1d574 --- /dev/null +++ b/app/src/main/res/drawable/dialog_delete_icon.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/dialog.xml b/app/src/main/res/layout/dialog.xml index 74aa030fd..e2c95b406 100644 --- a/app/src/main/res/layout/dialog.xml +++ b/app/src/main/res/layout/dialog.xml @@ -43,6 +43,17 @@ android:gravity="center" android:text="@{viewModel.message, default=Message}"/> + + En ligne aujourd\'hui à En ligne hier à En ligne le + Voulez-vous supprimer votre compte ? + Votre compte sera supprimé localement.\nPour le supprimer de manière définitive, rendez-vous sur le site internet de votre fournisseur SIP. + Votre compte sera supprimé localement.\nPour le supprimer de manière définitive, rendez-vous sur notre plateforme de gestion des comptes : \ 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 894449b0c..abf90cdeb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -707,6 +707,9 @@ Audio/video conference factory URI E2E encryption keys server URL Publish presence information + Do you want to delete your account? + Your account will only be deleted locally.\nTo delete it permanently, go on your SIP provider website. + Your account will only be deleted locally.\nTo delete it permanently, go to our account management platform: Default layout