From 0657bf9d22d5833b3e30f6c37b116407cbcc01f4 Mon Sep 17 00:00:00 2001
From: Pierre Nicolas <pierre.nicolas@savoirfairelinux.com>
Date: Fri, 16 Jun 2023 14:30:55 -0400
Subject: [PATCH] file transfer: fix path to send picture

The bug is that the image is not placed in the correct path.
Also fix bug where images were not preview in notifications.

GitLab: #1298
Change-Id: Ifb4041dcd7d82eccb72d5e40e6f3cdc04d027e17
---
 .../cx/ring/services/DeviceRuntimeServiceImpl.kt    |  5 +----
 .../cx/ring/services/NotificationServiceImpl.kt     |  2 +-
 .../src/main/java/cx/ring/utils/AndroidFileUtils.kt | 13 -------------
 .../src/main/kotlin/net/jami/model/DataTransfer.kt  | 11 +----------
 .../kotlin/net/jami/services/ConversationFacade.kt  |  2 +-
 .../net/jami/services/DeviceRuntimeService.kt       |  3 +--
 6 files changed, 5 insertions(+), 31 deletions(-)

diff --git a/jami-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.kt b/jami-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.kt
index 3e32303d5..3aa54cae4 100644
--- a/jami-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.kt
+++ b/jami-android/app/src/main/java/cx/ring/services/DeviceRuntimeServiceImpl.kt
@@ -76,10 +76,7 @@ class DeviceRuntimeServiceImpl(
 
     override fun getFilePath(filename: String) = AndroidFileUtils.getFilePath(mContext, filename)
 
-    override fun getConversationPath(conversationId: String, name: String): File =
-        AndroidFileUtils.getConversationPath(mContext, conversationId, name)
-
-    override fun getConversationPath(accountId: String, conversationId: String,name: String): File =
+    override fun getConversationPath(accountId: String, conversationId: String, name: String): File =
         AndroidFileUtils.getConversationPath(mContext, accountId, conversationId, name)
 
     override fun getTemporaryPath(conversationId: String, name: String): File =
diff --git a/jami-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.kt b/jami-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.kt
index cbcb7bb59..d3f8f85e5 100644
--- a/jami-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.kt
+++ b/jami-android/app/src/main/java/cx/ring/services/NotificationServiceImpl.kt
@@ -689,7 +689,7 @@ class NotificationServiceImpl(
                 .setContentIntent(PendingIntent.getActivity(mContext, random.nextInt(), intentViewConversation, ContentUriHandler.immutable()))
                 .setAutoCancel(true)
             if (info.showPicture()) {
-                val filePath = mDeviceRuntimeService.getConversationPath(conversation.uri.rawRingId, info.storagePath)
+                val filePath = mDeviceRuntimeService.getConversationPath(conversation.accountId, conversation.uri.rawRingId, info.storagePath)
                 val img: Bitmap
                 try {
                     val d = Glide.with(mContext)
diff --git a/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt b/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt
index 70c4ec250..92e0852b2 100644
--- a/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt
+++ b/jami-android/app/src/main/java/cx/ring/utils/AndroidFileUtils.kt
@@ -340,16 +340,6 @@ object AndroidFileUtils {
             } }
     }.subscribeOn(Schedulers.io())
 
-    @Throws(IOException::class)
-    fun getConversationFile(context: Context, uri: Uri, conversationId: String, name: String): File {
-        val file = getConversationPath(context, conversationId, name)
-        context.contentResolver.openInputStream(uri)?.use { inputStream ->
-            FileOutputStream(file).use { output ->
-                FileUtils.copyFile(inputStream, output)
-            } }
-        return file
-    }
-
     fun getCachePath(context: Context, filename: String) = File(context.cacheDir, filename)
 
     fun getFilePath(context: Context, filename: String): File = context.getFileStreamPath(filename)
@@ -372,9 +362,6 @@ object AndroidFileUtils {
         return conversationDir
     }
 
-    fun getConversationPath(context: Context, conversationId: String, name: String) =
-        File(getConversationDir(context, conversationId), name)
-
     fun getConversationPath(context: Context, accountId: String, conversationId: String, name: String) =
         File(getConversationDir(context, accountId, conversationId), name)
 
diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/DataTransfer.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/DataTransfer.kt
index d3b6df34a..c37c37b93 100644
--- a/jami-android/libjamiclient/src/main/kotlin/net/jami/model/DataTransfer.kt
+++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/model/DataTransfer.kt
@@ -130,16 +130,7 @@ class DataTransfer : Interaction {
             val b = body
             return if (b == null) {
                 if (fileId.isNullOrEmpty()) { "Error" } else fileId!!
-            } else {
-                var ext = StringUtils.getFileExtension(b)
-                if (ext.length > 8) ext = ext.substring(0, 8)
-                val dId = daemonId
-                if (dId == null || dId == 0L) {
-                    id.toLong().toString() + '_' + HashUtils.sha1(b).toHex() + '.' + ext
-                } else {
-                    dId.toString() + '_' + HashUtils.sha1(b).toHex() + '.' + ext
-                }
-            }
+            } else return b
         }
 
     fun setSize(size: Long) {
diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
index 696bd5dd5..d9649d77e 100644
--- a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
+++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/ConversationFacade.kt
@@ -168,7 +168,7 @@ class ConversationFacade(
             if (transfer.status === InteractionStatus.TRANSFER_ONGOING) {
                 mAccountService.cancelDataTransfer(conversation.accountId, conversation.uri.rawRingId, transfer.messageId, transfer.fileId!!)
             } else {
-                val file = mDeviceRuntimeService.getConversationPath(conversation.uri.rawRingId, transfer.storagePath)
+                val file = mDeviceRuntimeService.getConversationPath(conversation.accountId, conversation.uri.rawRingId, transfer.storagePath)
                 if (conversation.isSwarm) {
                     mDisposableBag.add(Completable.fromAction { file.delete() }
                         .subscribeOn(Schedulers.io())
diff --git a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/DeviceRuntimeService.kt b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/DeviceRuntimeService.kt
index 20ecfa482..3431e0082 100644
--- a/jami-android/libjamiclient/src/main/kotlin/net/jami/services/DeviceRuntimeService.kt
+++ b/jami-android/libjamiclient/src/main/kotlin/net/jami/services/DeviceRuntimeService.kt
@@ -28,11 +28,10 @@ abstract class DeviceRuntimeService : SystemInfoCallbacks {
     abstract fun provideFilesDir(): File
     abstract val cacheDir: File
     abstract fun getFilePath(name: String): File
-    abstract fun getConversationPath(conversationId: String, name: String): File
     abstract fun getConversationPath(accountId: String, conversationId: String, name: String): File
     fun getConversationPath(interaction: DataTransfer): File =
         if (interaction.conversationId == null)
-            getConversationPath(interaction.conversation!!.participant!!, interaction.storagePath)
+            getConversationPath(interaction.account!!, interaction.conversation!!.participant!!, interaction.storagePath)
         else interaction.publicPath!!
 
     fun getNewConversationPath(accountId: String, conversationId: String, name: String): File {
-- 
GitLab