diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt
index ed4813532..398ae2d9d 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt
@@ -42,6 +42,7 @@ import org.linphone.ui.main.chat.model.ParticipantModel
import org.linphone.ui.main.chat.viewmodel.ConversationInfoViewModel
import org.linphone.ui.main.fragment.GroupSetOrEditSubjectDialogModel
import org.linphone.ui.main.fragment.SlidingPaneChildFragment
+import org.linphone.ui.main.history.model.ConfirmationDialogModel
import org.linphone.utils.DialogUtils
import org.linphone.utils.Event
@@ -150,7 +151,7 @@ class ConversationInfoFragment : SlidingPaneChildFragment() {
Log.i("$TAG History has been deleted, leaving conversation info...")
sharedViewModel.forceRefreshConversationEvents.value = Event(true)
goBack()
- val message = getString(R.string.toast_conversation_history_deleted)
+ val message = getString(R.string.conversation_info_history_deleted_toast)
(requireActivity() as GenericActivity).showGreenToast(
message,
R.drawable.chat_teardrop_text
@@ -293,6 +294,10 @@ class ConversationInfoFragment : SlidingPaneChildFragment() {
findNavController().navigate(action)
}
}
+
+ binding.setDeleteHistoryClickListener {
+ showDeleteHistoryConfirmationDialog()
+ }
}
private fun showParticipantAdminPopupMenu(view: View, participantModel: ParticipantModel) {
@@ -373,4 +378,27 @@ class ConversationInfoFragment : SlidingPaneChildFragment() {
popupWindow.elevation = 20f
popupWindow.showAsDropDown(view, 0, 0, Gravity.BOTTOM)
}
+
+ private fun showDeleteHistoryConfirmationDialog() {
+ val model = ConfirmationDialogModel()
+ val dialog = DialogUtils.getDeleteConversationHistoryConfirmationDialog(
+ requireActivity(),
+ model
+ )
+
+ model.dismissEvent.observe(viewLifecycleOwner) {
+ it.consume {
+ dialog.dismiss()
+ }
+ }
+
+ model.confirmEvent.observe(viewLifecycleOwner) {
+ it.consume {
+ viewModel.deleteHistory()
+ dialog.dismiss()
+ }
+ }
+
+ dialog.show()
+ }
}
diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
index 9f9954022..f022840ef 100644
--- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
+++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt
@@ -267,7 +267,6 @@ class ConversationInfoViewModel @UiThread constructor() : AbstractConversationVi
@UiThread
fun deleteHistory() {
coreContext.postOnCoreThread {
- // TODO: confirmation dialog ?
if (isChatRoomInitialized()) {
Log.i(
"$TAG Cleaning conversation [${LinphoneUtils.getChatRoomId(chatRoom)}] history"
diff --git a/app/src/main/java/org/linphone/utils/DialogUtils.kt b/app/src/main/java/org/linphone/utils/DialogUtils.kt
index a08298f6f..6cdcc9040 100644
--- a/app/src/main/java/org/linphone/utils/DialogUtils.kt
+++ b/app/src/main/java/org/linphone/utils/DialogUtils.kt
@@ -50,6 +50,7 @@ import org.linphone.databinding.DialogPickNumberOrAddressBinding
import org.linphone.databinding.DialogRemoveAccountBinding
import org.linphone.databinding.DialogRemoveAllCallLogsBinding
import org.linphone.databinding.DialogRemoveCallLogsBinding
+import org.linphone.databinding.DialogRemoveConversationHistoryBinding
import org.linphone.databinding.DialogSetOrEditGroupSubjectBindingImpl
import org.linphone.databinding.DialogUpdateAccountPasswordBinding
import org.linphone.databinding.DialogUpdateAvailableBinding
@@ -293,6 +294,22 @@ class DialogUtils {
return getDialog(context, binding)
}
+ @UiThread
+ fun getDeleteConversationHistoryConfirmationDialog(
+ context: Context,
+ viewModel: ConfirmationDialogModel
+ ): Dialog {
+ val binding: DialogRemoveConversationHistoryBinding = DataBindingUtil.inflate(
+ LayoutInflater.from(context),
+ R.layout.dialog_remove_conversation_history,
+ null,
+ false
+ )
+ binding.viewModel = viewModel
+
+ return getDialog(context, binding)
+ }
+
@UiThread
fun getOpenOrExportFileDialog(
context: Context,
diff --git a/app/src/main/res/layout/chat_info_fragment.xml b/app/src/main/res/layout/chat_info_fragment.xml
index 38a0cb660..66dd6cba7 100644
--- a/app/src/main/res/layout/chat_info_fragment.xml
+++ b/app/src/main/res/layout/chat_info_fragment.xml
@@ -24,6 +24,9 @@
+
@@ -443,7 +446,7 @@
android:layout_marginBottom="@dimen/screen_bottom_margin"
android:background="@drawable/action_background"
android:drawableStart="@drawable/trash_simple"
- android:onClick="@{() -> viewModel.deleteHistory()}"
+ android:onClick="@{deleteHistoryClickListener}"
android:text="@string/conversation_info_delete_history_action"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@id/actions_background"
diff --git a/app/src/main/res/layout/dialog_remove_conversation_history.xml b/app/src/main/res/layout/dialog_remove_conversation_history.xml
new file mode 100644
index 000000000..4f66142de
--- /dev/null
+++ b/app/src/main/res/layout/dialog_remove_conversation_history.xml
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 8aa3eb0aa..0a059da14 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -94,7 +94,6 @@
Durée maximale atteinte
Un ou plusieurs participants n\'ont pû être ajoutés
Conversation supprimée
- Historique d\'appels supprimé
Vous avez quitté la conversation
Le volume media est bas, vous pourriez ne rien entendre !
Aucune application trouvée pour lire ce fichier
@@ -494,6 +493,9 @@
Retirer les privilèges administrateur
Voir le contact
Ajouter aux contacts
+ Voulez-vous tout supprimer ?
+ Tout les messages de cette conversation seront supprimés.
+ Historique supprimé
Vous avez rejoint le groupe
Vous avez quitté le groupe
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cb91b20ae..40ce61df1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -129,7 +129,6 @@
Max duration reached
Failed to add participant(s) to conversation
Conversation was successfully deleted
- History has been successfully deleted
You have left the group
Media volume is low, you may not hear anything!
No app found to open this kind of file
@@ -530,6 +529,9 @@
Remove admin rights
See contact profile
Add to contacts
+ Do you really want to delete all messages?
+ All messages will be removed from the history
+ History has been successfully deleted
You have joined the group
You have left the group