From 153ccab4aed93d3adc54a2716b00beef40074313 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 15 Jul 2020 17:50:40 +0200 Subject: [PATCH] Added dialog to allow user to attempt opening a file as plain text if no app is registered for the deduced mime type from it's extension --- .../chat/fragments/DetailChatRoomFragment.kt | 23 +++++++++++++++++-- .../main/viewmodels/DialogViewModel.kt | 1 + .../java/org/linphone/utils/LinphoneUtils.kt | 2 +- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt index ffb05ff05..1c51ce13f 100644 --- a/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/chat/fragments/DetailChatRoomFragment.kt @@ -542,8 +542,27 @@ class DetailChatRoomFragment : MasterFragment() { startActivity(intent) } catch (anfe: ActivityNotFoundException) { Log.e("[Chat Message] Couldn't find an activity to handle MIME type: $type") - val activity = requireActivity() as MainActivity - activity.showSnackBar(R.string.chat_room_cant_open_file_no_app_found) + + val dialogViewModel = DialogViewModel(getString(R.string.dialog_try_open_file_as_text_body), getString(R.string.dialog_try_open_file_as_text_title)) + val dialog = DialogUtils.getDialog(requireContext(), dialogViewModel) + + dialogViewModel.showCancelButton { + dialog.dismiss() + } + + dialogViewModel.showOkButton({ + dialog.dismiss() + intent.setDataAndType(contentUri, "text/plain") + try { + startActivity(intent) + } catch (anfe: ActivityNotFoundException) { + Log.e("[Chat Message] Couldn't find an activity to handle text/plain MIME type") + val activity = requireActivity() as MainActivity + activity.showSnackBar(R.string.chat_room_cant_open_file_no_app_found) + } + }) + + dialog.show() } } } 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 4d39bc07d..bc395ae55 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 @@ -41,6 +41,7 @@ class DialogViewModel(val message: String, val title: String = "") : ViewModel() init { doNotAskAgain.value = false + showTitle = title.isNotEmpty() } var showCancel: Boolean = false diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 6c5a519fa..83be3f011 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -79,7 +79,7 @@ class LinphoneUtils { fun deleteFilesAttachedToChatMessage(chatMessage: ChatMessage) { for (content in chatMessage.contents) { val filePath = content.filePath - if (filePath != null) { + if (filePath != null && filePath.isNotEmpty()) { Log.i("[Linphone Utils] Deleting file $filePath") FileUtils.deleteFile(filePath) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1ea9aca7a..3eae3d66a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -560,6 +560,8 @@ @string/dialog_default_delete_many An update is available + No app found for this kind of file + Would you like to try opening it as a plain text file? Add a SIP address field