From 1690ad9216982026ae79b5b859ef17ed8ac3152c Mon Sep 17 00:00:00 2001 From: Smarshall Date: Fri, 1 Sep 2023 18:45:49 +0530 Subject: [PATCH] Fixed media/photo share functionality if not downloaded before --- .../com/nextcloud/talk/chat/ChatActivity.kt | 41 ++++++++++++++++--- .../talk/ui/dialog/MessageActionsDialog.kt | 2 +- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 860d9f01a..2f57f2ea4 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -188,7 +188,7 @@ import com.nextcloud.talk.ui.dialog.ShowReactionsDialog import com.nextcloud.talk.ui.recyclerview.MessageSwipeActions import com.nextcloud.talk.ui.recyclerview.MessageSwipeCallback import com.nextcloud.talk.utils.ApiUtils -import com.nextcloud.talk.utils.AudioUtils +import com.nextcloud.talk.utils.AudioUtils.audioFileToFloatArray import com.nextcloud.talk.utils.ContactUtils import com.nextcloud.talk.utils.ConversationUtils import com.nextcloud.talk.utils.DateConstants @@ -897,16 +897,33 @@ class ChatActivity : message.isDownloadingVoiceMessage = true adapter?.update(message) CoroutineScope(Dispatchers.Default).launch { - val r = AudioUtils.audioFileToFloatArray(file) - message.voiceMessageFloatArray = r - withContext(Dispatchers.Main) { - startPlayback(message) + try { + val r = audioFileToFloatArray(file) + message.voiceMessageFloatArray = r + withContext(Dispatchers.Main) { + startPlayback(message) + } + } catch (e: Exception) { + e.printStackTrace() } } } else { startPlayback(message) } } + private fun setUpshare(message: ChatMessage) { + val filename = message.selectedIndividualHashMap!!["name"] + val file = File(context.cacheDir, filename!!) + if (file.exists()) { + CoroutineScope(Dispatchers.Default).launch { + withContext(Dispatchers.Main) { + share(message) + } + } + } else { + share(message) + } + } private fun initMessageHolders(): MessageHolders { val messageHolders = MessageHolders() @@ -1946,6 +1963,10 @@ class ChatActivity : if (workInfo.state == WorkInfo.State.SUCCEEDED) { setUpWaveform(message) // startPlayback(message) + setUpshare(message) + } + else { + Log.e(TAG, "Error") } } } @@ -3931,6 +3952,16 @@ class ChatActivity : } startActivity(Intent.createChooser(shareIntent, resources.getText(R.string.send_to))) } + fun checkifsharable(message: ChatMessage) { + val filename = message.selectedIndividualHashMap!!["name"] + path = applicationContext.cacheDir.absolutePath + "/" + filename + val file = File(context.cacheDir, filename!!) + if (file.exists()) { + share(message) + }else{ + downloadFileToCache(message) + } + } fun openInFilesApp(message: ChatMessage) { val keyID = message.selectedIndividualHashMap!![PreviewMessageViewHolder.KEY_ID] diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt index c77bb76c3..457195938 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/MessageActionsDialog.kt @@ -322,7 +322,7 @@ class MessageActionsDialog( private fun initMenuShare(visible: Boolean) { if (visible) { dialogMessageActionsBinding.menuShare.setOnClickListener { - chatActivity.share(message) + chatActivity.checkifsharable(message) dismiss() } }