diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/FileUploader.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/FileUploader.kt index 6bb43d599c..6a4dd26392 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/FileUploader.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/FileUploader.kt @@ -47,14 +47,15 @@ import java.io.FileNotFoundException import java.io.IOException import javax.inject.Inject -internal class FileUploader @Inject constructor(@Authenticated - private val okHttpClient: OkHttpClient, - private val globalErrorReceiver: GlobalErrorReceiver, - private val homeServerCapabilitiesService: DefaultHomeServerCapabilitiesService, - private val context: Context, - private val temporaryFileCreator: TemporaryFileCreator, - contentUrlResolver: ContentUrlResolver, - moshi: Moshi) { +internal class FileUploader @Inject constructor( + @Authenticated private val okHttpClient: OkHttpClient, + private val globalErrorReceiver: GlobalErrorReceiver, + private val homeServerCapabilitiesService: DefaultHomeServerCapabilitiesService, + private val context: Context, + private val temporaryFileCreator: TemporaryFileCreator, + contentUrlResolver: ContentUrlResolver, + moshi: Moshi +) { private val uploadUrl = contentUrlResolver.uploadUrl private val responseAdapter = moshi.adapter(ContentUploadResponse::class.java) @@ -120,11 +121,17 @@ internal class FileUploader @Inject constructor(@Authenticated } } - private suspend fun upload(uploadBody: RequestBody, filename: String?, progressListener: ProgressRequestBody.Listener?): ContentUploadResponse { + private suspend fun upload(uploadBody: RequestBody, + filename: String?, + progressListener: ProgressRequestBody.Listener?): ContentUploadResponse { val urlBuilder = uploadUrl.toHttpUrlOrNull()?.newBuilder() ?: throw RuntimeException() val httpUrl = urlBuilder - .addQueryParameter("filename", filename) + .apply { + if (filename != null) { + addQueryParameter("filename", filename) + } + } .build() val requestBody = if (progressListener != null) ProgressRequestBody(uploadBody, progressListener) else uploadBody diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt index d5c3deeec6..06cbf1ba90 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/content/UploadContentWorker.kt @@ -229,7 +229,6 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter val encryptedFile: File? val contentUploadResponse = if (params.isEncrypted) { Timber.v("## Encrypt file") - encryptedFile = temporaryFileCreator.create() .also { filesToDelete.add(it) } @@ -239,16 +238,22 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter contentUploadStateTracker.setEncrypting(it, read.toLong(), total.toLong()) } } - Timber.v("## Uploading file") - - fileUploader - .uploadFile(encryptedFile, attachment.name, MimeTypes.OctetStream, progressListener) + fileUploader.uploadFile( + file = encryptedFile, + filename = null, + mimeType = MimeTypes.OctetStream, + progressListener = progressListener + ) } else { - Timber.v("## Clear file") + Timber.v("## Uploading clear file") encryptedFile = null - fileUploader - .uploadFile(fileToUpload, attachment.name, attachment.getSafeMimeType(), progressListener) + fileUploader.uploadFile( + file = fileToUpload, + filename = attachment.name, + mimeType = attachment.getSafeMimeType(), + progressListener = progressListener + ) } Timber.v("## Update cache storage for ${contentUploadResponse.contentUri}") @@ -312,7 +317,7 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter val encryptionResult = MXEncryptedAttachments.encryptAttachment(thumbnailData.bytes.inputStream(), thumbnailData.mimeType) val contentUploadResponse = fileUploader.uploadByteArray( byteArray = encryptionResult.encryptedByteArray, - filename = "thumb_${params.attachment.name}", + filename = null, mimeType = MimeTypes.OctetStream, progressListener = thumbnailProgressListener )