From 40cac863507feca8c65a1eab63ee969337981e1d Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 24 Feb 2025 09:00:33 +0100 Subject: [PATCH 1/7] create folder for new users Signed-off-by: sowjanyakch --- .../talk/jobs/UploadAndShareFilesWorker.kt | 2 +- .../talk/upload/normal/FileUploader.kt | 95 ++++++++++++++++++- 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index 573269baf..d875e5071 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -151,7 +151,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } else { Log.d(TAG, "starting normal upload (not chunked) of $fileName") - FileUploader(context, currentUser, roomToken, ncApi) + FileUploader(okHttpClient, context, currentUser, roomToken, ncApi) .upload(sourceFileUri, fileName, remotePath, metaData) .blockingFirst() } diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index 2c796df63..6b1fd21b2 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -10,7 +10,10 @@ package com.nextcloud.talk.upload.normal import android.content.Context import android.net.Uri import android.util.Log +import at.bitfire.dav4jvm.DavResource +import at.bitfire.dav4jvm.exception.HttpException import com.nextcloud.talk.api.NcApi +import com.nextcloud.talk.dagger.modules.RestModule import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.jobs.ShareOperationWorker import com.nextcloud.talk.utils.ApiUtils @@ -18,16 +21,29 @@ import com.nextcloud.talk.utils.FileUtils import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.OkHttpClient +import okhttp3.Protocol import okhttp3.RequestBody +import okhttp3.Response +import java.io.IOException import java.io.InputStream class FileUploader( + okHttpClient: OkHttpClient, val context: Context, val currentUser: User, val roomToken: String, val ncApi: NcApi ) { + + private var okHttpClientNoRedirects: OkHttpClient? = null + private var uploadFolderUri: String = "" + init { + initHttpClient(okHttpClient, currentUser) + } + fun upload(sourceFileUri: Uri, fileName: String, remotePath: String, metaData: String?): Observable { return ncApi.uploadFile( ApiUtils.getCredentials(currentUser.username, currentUser.token), @@ -46,7 +62,21 @@ class FileUploader( FileUtils.copyFileToCache(context, sourceFileUri, fileName) true } else { - false + if (response.code() == 404 || response.code() == 409) { + uploadFolderUri = ApiUtils.getUrlForFileUpload( + currentUser.baseUrl!!, currentUser.userId!!, + remotePath + ) + val davResource = DavResource( + okHttpClientNoRedirects!!, + uploadFolderUri.toHttpUrlOrNull()!! + ) + createFolder(davResource) + retryUpload(sourceFileUri, remotePath, fileName, metaData) + true + } else { + false + } } } } @@ -68,7 +98,70 @@ class FileUploader( return requestBody } + private fun initHttpClient(okHttpClient: OkHttpClient, currentUser: User) { + val okHttpClientBuilder: OkHttpClient.Builder = okHttpClient.newBuilder() + okHttpClientBuilder.followRedirects(true) + okHttpClientBuilder.followSslRedirects(true) + // okHttpClientBuilder.readTimeout(Duration.ofMinutes(30)) // TODO set timeout + okHttpClientBuilder.protocols(listOf(Protocol.HTTP_1_1, Protocol.HTTP_2)) + okHttpClientBuilder.authenticator( + RestModule.HttpAuthenticator( + ApiUtils.getCredentials( + currentUser.username, + currentUser.token + )!!, + "Authorization" + ) + ) + this.okHttpClientNoRedirects = okHttpClientBuilder.build() + } + + private fun createFolder(davResource: DavResource) { + try { + davResource.mkCol( + xmlBody = null + ) { response: Response -> + if (!response.isSuccessful) { + throw IOException("failed to create folder. response code: " + response.code) + } + } + } catch (e: IOException) { + throw IOException("failed to create folder", e) + } catch (e: HttpException) { + if (e.code == METHOD_NOT_ALLOWED_CODE) { + Log.d(TAG, "Folder most probably already exists, that's okay, just continue..") + } else { + throw IOException("failed to create folder", e) + } + } + } + + private fun retryUpload( + sourceFileUri: Uri, + uploadUrl: String, + fileName: String, + metaData: String? + ): Observable { + return ncApi.uploadFile( + ApiUtils.getCredentials(currentUser.username, currentUser.token), + uploadUrl, + createRequestBody(sourceFileUri) + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .map { retryResponse -> + if (retryResponse.isSuccessful) { + ShareOperationWorker.shareFile(roomToken, currentUser, uploadUrl, metaData) + FileUtils.copyFileToCache(context, sourceFileUri, fileName) + true + } else { + false + } + } + } + companion object { private val TAG = FileUploader::class.simpleName + private const val METHOD_NOT_ALLOWED_CODE: Int = 405 } } From bb581d0862baa5bfe7071be37c32698066ea915a Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 24 Feb 2025 09:01:25 +0100 Subject: [PATCH 2/7] didn't set read timeout Signed-off-by: sowjanyakch --- .../main/java/com/nextcloud/talk/upload/normal/FileUploader.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index 6b1fd21b2..cfe811814 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -102,7 +102,6 @@ class FileUploader( val okHttpClientBuilder: OkHttpClient.Builder = okHttpClient.newBuilder() okHttpClientBuilder.followRedirects(true) okHttpClientBuilder.followSslRedirects(true) - // okHttpClientBuilder.readTimeout(Duration.ofMinutes(30)) // TODO set timeout okHttpClientBuilder.protocols(listOf(Protocol.HTTP_1_1, Protocol.HTTP_2)) okHttpClientBuilder.authenticator( RestModule.HttpAuthenticator( From ef4d83a691bccc8fa8e12fb72a131031e9128273 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Tue, 25 Feb 2025 23:58:39 +0100 Subject: [PATCH 3/7] create a new folder Signed-off-by: sowjanyakch --- .../talk/jobs/UploadAndShareFilesWorker.kt | 2 +- .../talk/upload/normal/FileUploader.kt | 64 +++++++++++-------- .../java/com/nextcloud/talk/utils/ApiUtils.kt | 4 ++ .../res/layout/activity_conversation_info.xml | 58 ++++++++--------- 4 files changed, 73 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index d875e5071..709e44473 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -151,7 +151,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa } else { Log.d(TAG, "starting normal upload (not chunked) of $fileName") - FileUploader(okHttpClient, context, currentUser, roomToken, ncApi) + FileUploader(okHttpClient, context, currentUser, roomToken, ncApi, file!!) .upload(sourceFileUri, fileName, remotePath, metaData) .blockingFirst() } diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index cfe811814..6438eb28e 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -27,6 +27,7 @@ import okhttp3.OkHttpClient import okhttp3.Protocol import okhttp3.RequestBody import okhttp3.Response +import java.io.File import java.io.IOException import java.io.InputStream @@ -35,11 +36,14 @@ class FileUploader( val context: Context, val currentUser: User, val roomToken: String, - val ncApi: NcApi + val ncApi: NcApi, + val file: File ) { private var okHttpClientNoRedirects: OkHttpClient? = null private var uploadFolderUri: String = "" + private var uploadFileUri:String = "" + init { initHttpClient(okHttpClient, currentUser) } @@ -63,17 +67,21 @@ class FileUploader( true } else { if (response.code() == 404 || response.code() == 409) { - uploadFolderUri = ApiUtils.getUrlForFileUpload( + uploadFileUri = ApiUtils.getUrlForFile( currentUser.baseUrl!!, currentUser.userId!!, - remotePath ) + + uploadFolderUri = uploadFileUri + "/" + FileUtils.md5Sum(file) + val davResource = DavResource( okHttpClientNoRedirects!!, uploadFolderUri.toHttpUrlOrNull()!! + ) + createFolder(davResource) - retryUpload(sourceFileUri, remotePath, fileName, metaData) - true + val value = retryUpload(sourceFileUri, remotePath, fileName, metaData) + value } else { false } @@ -100,9 +108,9 @@ class FileUploader( private fun initHttpClient(okHttpClient: OkHttpClient, currentUser: User) { val okHttpClientBuilder: OkHttpClient.Builder = okHttpClient.newBuilder() - okHttpClientBuilder.followRedirects(true) - okHttpClientBuilder.followSslRedirects(true) - okHttpClientBuilder.protocols(listOf(Protocol.HTTP_1_1, Protocol.HTTP_2)) + okHttpClientBuilder.followRedirects(false) + okHttpClientBuilder.followSslRedirects(false) + okHttpClientBuilder.protocols(listOf(Protocol.HTTP_1_1)) okHttpClientBuilder.authenticator( RestModule.HttpAuthenticator( ApiUtils.getCredentials( @@ -137,26 +145,32 @@ class FileUploader( private fun retryUpload( sourceFileUri: Uri, - uploadUrl: String, + remotePath: String, fileName: String, metaData: String? - ): Observable { - return ncApi.uploadFile( - ApiUtils.getCredentials(currentUser.username, currentUser.token), - uploadUrl, - createRequestBody(sourceFileUri) - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .map { retryResponse -> - if (retryResponse.isSuccessful) { - ShareOperationWorker.shareFile(roomToken, currentUser, uploadUrl, metaData) - FileUtils.copyFileToCache(context, sourceFileUri, fileName) - true - } else { - false + ): Boolean { + return try { + ncApi.uploadFile( + ApiUtils.getCredentials(currentUser.username, currentUser.token), + ApiUtils.getUrlForFileUpload(currentUser.baseUrl!!, currentUser.userId!!, remotePath), + createRequestBody(sourceFileUri) + ) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .map { retryResponse -> + if (retryResponse.isSuccessful) { + ShareOperationWorker.shareFile(roomToken, currentUser, remotePath, metaData) + FileUtils.copyFileToCache(context, sourceFileUri, fileName) + true + } else { + false + } } - } + .blockingFirst() + } catch (e: Exception) { + Log.e(TAG, "Retry upload failed", e) + false + } } companion object { diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index 755e8959b..bf37df1b2 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -459,6 +459,10 @@ object ApiUtils { return "$baseUrl/remote.php/dav/files/$user/$remotePath" } + fun getUrlForFile(baseUrl: String, user: String): String { + return "$baseUrl/remote.php/dav/files/$user" + } + fun getUrlForTempAvatar(baseUrl: String): String { return "$baseUrl$OCS_API_VERSION/apps/spreed/temp-user-avatar" } diff --git a/app/src/main/res/layout/activity_conversation_info.xml b/app/src/main/res/layout/activity_conversation_info.xml index 9da666b8b..f67dac31e 100644 --- a/app/src/main/res/layout/activity_conversation_info.xml +++ b/app/src/main/res/layout/activity_conversation_info.xml @@ -90,6 +90,35 @@ + + + + + + + + + + - - - - - - - - - - Date: Wed, 26 Feb 2025 12:26:31 +0100 Subject: [PATCH 4/7] use proper url Signed-off-by: sowjanyakch --- .../talk/upload/normal/FileUploader.kt | 42 +++---------------- .../java/com/nextcloud/talk/utils/ApiUtils.kt | 2 +- 2 files changed, 7 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index 6438eb28e..0dc26523b 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -41,7 +41,6 @@ class FileUploader( ) { private var okHttpClientNoRedirects: OkHttpClient? = null - private var uploadFolderUri: String = "" private var uploadFileUri:String = "" init { @@ -71,17 +70,16 @@ class FileUploader( currentUser.baseUrl!!, currentUser.userId!!, ) - uploadFolderUri = uploadFileUri + "/" + FileUtils.md5Sum(file) - - val davResource = DavResource( + val davResource = + DavResource( okHttpClientNoRedirects!!, - uploadFolderUri.toHttpUrlOrNull()!! + uploadFileUri.toHttpUrlOrNull()!! ) createFolder(davResource) - val value = retryUpload(sourceFileUri, remotePath, fileName, metaData) - value + val value: Observable = upload(sourceFileUri, remotePath, fileName, metaData) + value.blockingFirst() } else { false } @@ -128,6 +126,7 @@ class FileUploader( davResource.mkCol( xmlBody = null ) { response: Response -> + if (!response.isSuccessful) { throw IOException("failed to create folder. response code: " + response.code) } @@ -143,35 +142,6 @@ class FileUploader( } } - private fun retryUpload( - sourceFileUri: Uri, - remotePath: String, - fileName: String, - metaData: String? - ): Boolean { - return try { - ncApi.uploadFile( - ApiUtils.getCredentials(currentUser.username, currentUser.token), - ApiUtils.getUrlForFileUpload(currentUser.baseUrl!!, currentUser.userId!!, remotePath), - createRequestBody(sourceFileUri) - ) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .map { retryResponse -> - if (retryResponse.isSuccessful) { - ShareOperationWorker.shareFile(roomToken, currentUser, remotePath, metaData) - FileUtils.copyFileToCache(context, sourceFileUri, fileName) - true - } else { - false - } - } - .blockingFirst() - } catch (e: Exception) { - Log.e(TAG, "Retry upload failed", e) - false - } - } companion object { private val TAG = FileUploader::class.simpleName diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index bf37df1b2..eeff803cd 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -460,7 +460,7 @@ object ApiUtils { } fun getUrlForFile(baseUrl: String, user: String): String { - return "$baseUrl/remote.php/dav/files/$user" + return "$baseUrl/remote.php/dav/files/$user/Talk" } fun getUrlForTempAvatar(baseUrl: String): String { From c0376c8eed1e39fbdeb02c56e67740e908a428a2 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 26 Feb 2025 19:43:04 +0100 Subject: [PATCH 5/7] uploading file works for first time users Signed-off-by: sowjanyakch --- .../talk/upload/normal/FileUploader.kt | 54 ++++++++++--------- .../java/com/nextcloud/talk/utils/ApiUtils.kt | 6 ++- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index 0dc26523b..e730961f6 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -41,7 +41,8 @@ class FileUploader( ) { private var okHttpClientNoRedirects: OkHttpClient? = null - private var uploadFileUri:String = "" + private var okhttpClient:OkHttpClient = okHttpClient + init { initHttpClient(okHttpClient, currentUser) @@ -54,39 +55,40 @@ class FileUploader( createRequestBody(sourceFileUri) ) .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()).map { response -> + .observeOn(AndroidSchedulers.mainThread()) + .flatMap { response -> if (response.isSuccessful) { - ShareOperationWorker.shareFile( - roomToken, - currentUser, - remotePath, - metaData - ) + ShareOperationWorker.shareFile(roomToken, currentUser, remotePath, metaData) FileUtils.copyFileToCache(context, sourceFileUri, fileName) - true + Observable.just(true) } else { - if (response.code() == 404 || response.code() == 409) { - uploadFileUri = ApiUtils.getUrlForFile( - currentUser.baseUrl!!, currentUser.userId!!, - ) - - val davResource = - DavResource( - okHttpClientNoRedirects!!, - uploadFileUri.toHttpUrlOrNull()!! - - ) - - createFolder(davResource) - val value: Observable = upload(sourceFileUri, remotePath, fileName, metaData) - value.blockingFirst() + if (response.code() == HTTP_CODE_NOT_FOUND || response.code() == HTTP_CODE_CONFLICT) { + createDavResource(sourceFileUri, fileName, remotePath, metaData) } else { - false + Observable.just(false) } } } } + + private fun createDavResource(sourceFileUri: Uri, fileName: String, remotePath: String, metaData: String?): Observable { + return Observable.fromCallable { + val userFileUploadPath = ApiUtils.userFileUploadPath(currentUser.baseUrl!!, currentUser.userId!!) + val userTalkAttachmentsUploadPath = ApiUtils.userTalkAttachmentsUploadPath(currentUser.baseUrl!!, currentUser.userId!!) + + var davResource = DavResource(okHttpClientNoRedirects!!, userFileUploadPath.toHttpUrlOrNull()!!) + createFolder(davResource) + initHttpClient(okHttpClient = okhttpClient, currentUser) + davResource = DavResource(okHttpClientNoRedirects!!, userTalkAttachmentsUploadPath.toHttpUrlOrNull()!!) + createFolder(davResource) + true + } + .subscribeOn(Schedulers.io()) + .flatMap { upload(sourceFileUri, fileName, remotePath, metaData) } + } + + @Suppress("Detekt.TooGenericExceptionCaught") private fun createRequestBody(sourceFileUri: Uri): RequestBody? { var requestBody: RequestBody? = null @@ -146,5 +148,7 @@ class FileUploader( companion object { private val TAG = FileUploader::class.simpleName private const val METHOD_NOT_ALLOWED_CODE: Int = 405 + private const val HTTP_CODE_NOT_FOUND:Int = 404 + private const val HTTP_CODE_CONFLICT : Int = 409 } } diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index eeff803cd..66cb5b2cb 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -459,7 +459,11 @@ object ApiUtils { return "$baseUrl/remote.php/dav/files/$user/$remotePath" } - fun getUrlForFile(baseUrl: String, user: String): String { + fun userFileUploadPath(baseUrl: String, user: String): String { + return "$baseUrl/remote.php/dav/files/$user" + } + + fun userTalkAttachmentsUploadPath(baseUrl: String, user: String): String { return "$baseUrl/remote.php/dav/files/$user/Talk" } From 2ef4ff6e40e5cc691aa96a79890f6aa5160bce5a Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Wed, 26 Feb 2025 19:48:59 +0100 Subject: [PATCH 6/7] ktlintFormat Signed-off-by: sowjanyakch --- .../talk/upload/normal/FileUploader.kt | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index e730961f6..0c4eec1dc 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -41,8 +41,7 @@ class FileUploader( ) { private var okHttpClientNoRedirects: OkHttpClient? = null - private var okhttpClient:OkHttpClient = okHttpClient - + private var okhttpClient: OkHttpClient = okHttpClient init { initHttpClient(okHttpClient, currentUser) @@ -71,11 +70,18 @@ class FileUploader( } } - - private fun createDavResource(sourceFileUri: Uri, fileName: String, remotePath: String, metaData: String?): Observable { + private fun createDavResource( + sourceFileUri: Uri, + fileName: String, + remotePath: String, + metaData: String? + ): Observable { return Observable.fromCallable { val userFileUploadPath = ApiUtils.userFileUploadPath(currentUser.baseUrl!!, currentUser.userId!!) - val userTalkAttachmentsUploadPath = ApiUtils.userTalkAttachmentsUploadPath(currentUser.baseUrl!!, currentUser.userId!!) + val userTalkAttachmentsUploadPath = ApiUtils.userTalkAttachmentsUploadPath( + currentUser.baseUrl!!, + currentUser.userId!! + ) var davResource = DavResource(okHttpClientNoRedirects!!, userFileUploadPath.toHttpUrlOrNull()!!) createFolder(davResource) @@ -88,7 +94,6 @@ class FileUploader( .flatMap { upload(sourceFileUri, fileName, remotePath, metaData) } } - @Suppress("Detekt.TooGenericExceptionCaught") private fun createRequestBody(sourceFileUri: Uri): RequestBody? { var requestBody: RequestBody? = null @@ -144,11 +149,10 @@ class FileUploader( } } - companion object { private val TAG = FileUploader::class.simpleName private const val METHOD_NOT_ALLOWED_CODE: Int = 405 - private const val HTTP_CODE_NOT_FOUND:Int = 404 - private const val HTTP_CODE_CONFLICT : Int = 409 + private const val HTTP_CODE_NOT_FOUND: Int = 404 + private const val HTTP_CODE_CONFLICT: Int = 409 } } From 546e6abec4f7a4eca803a7b4f0b21f4a91739bc0 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Fri, 28 Feb 2025 13:13:56 +0100 Subject: [PATCH 7/7] fix detekt Signed-off-by: sowjanyakch --- .../talk/upload/normal/FileUploader.kt | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt index 0c4eec1dc..a62c8e9f4 100644 --- a/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt +++ b/app/src/main/java/com/nextcloud/talk/upload/normal/FileUploader.kt @@ -49,19 +49,33 @@ class FileUploader( fun upload(sourceFileUri: Uri, fileName: String, remotePath: String, metaData: String?): Observable { return ncApi.uploadFile( - ApiUtils.getCredentials(currentUser.username, currentUser.token), - ApiUtils.getUrlForFileUpload(currentUser.baseUrl!!, currentUser.userId!!, remotePath), + ApiUtils.getCredentials( + currentUser.username, + currentUser.token + ), + ApiUtils.getUrlForFileUpload( + currentUser.baseUrl!!, + currentUser.userId!!, + remotePath + ), createRequestBody(sourceFileUri) ) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .flatMap { response -> if (response.isSuccessful) { - ShareOperationWorker.shareFile(roomToken, currentUser, remotePath, metaData) + ShareOperationWorker.shareFile( + roomToken, + currentUser, + remotePath, + metaData + ) FileUtils.copyFileToCache(context, sourceFileUri, fileName) Observable.just(true) } else { - if (response.code() == HTTP_CODE_NOT_FOUND || response.code() == HTTP_CODE_CONFLICT) { + if (response.code() == HTTP_CODE_NOT_FOUND || + response.code() == HTTP_CODE_CONFLICT + ) { createDavResource(sourceFileUri, fileName, remotePath, metaData) } else { Observable.just(false) @@ -77,16 +91,25 @@ class FileUploader( metaData: String? ): Observable { return Observable.fromCallable { - val userFileUploadPath = ApiUtils.userFileUploadPath(currentUser.baseUrl!!, currentUser.userId!!) + val userFileUploadPath = ApiUtils.userFileUploadPath( + currentUser.baseUrl!!, + currentUser.userId!! + ) val userTalkAttachmentsUploadPath = ApiUtils.userTalkAttachmentsUploadPath( currentUser.baseUrl!!, currentUser.userId!! ) - var davResource = DavResource(okHttpClientNoRedirects!!, userFileUploadPath.toHttpUrlOrNull()!!) + var davResource = DavResource( + okHttpClientNoRedirects!!, + userFileUploadPath.toHttpUrlOrNull()!! + ) createFolder(davResource) initHttpClient(okHttpClient = okhttpClient, currentUser) - davResource = DavResource(okHttpClientNoRedirects!!, userTalkAttachmentsUploadPath.toHttpUrlOrNull()!!) + davResource = DavResource( + okHttpClientNoRedirects!!, + userTalkAttachmentsUploadPath.toHttpUrlOrNull()!! + ) createFolder(davResource) true } @@ -128,6 +151,7 @@ class FileUploader( this.okHttpClientNoRedirects = okHttpClientBuilder.build() } + @Suppress("Detekt.ThrowsCount") private fun createFolder(davResource: DavResource) { try { davResource.mkCol(