From 27aac708f17d226eb72cb4989c0c4b2f6d24cd1b Mon Sep 17 00:00:00 2001 From: daniele-verducci Date: Thu, 1 Oct 2026 18:56:29 +0200 Subject: [PATCH] Logs for troubleshooting upload Signed-off-by: daniele-verducci --- .../client/jobs/upload/FileUploadHelper.kt | 6 +++++ .../utils/extensions/FileExtensions.kt | 13 +++++++--- .../utils/extensions/RemoteFileExtensions.kt | 25 +++++++++++++++++-- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt index 128a544b7fdb..90ae316d9bc8 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt @@ -21,6 +21,7 @@ import com.nextcloud.client.device.BatteryStatus import com.nextcloud.client.device.PowerManagementService import com.nextcloud.client.di.ApplicationScope import com.nextcloud.client.jobs.BackgroundJobManager +import com.nextcloud.client.jobs.upload.FileUploadHelper.Companion.MAX_UPLOADS_PER_QUERY import com.nextcloud.client.network.Connectivity import com.nextcloud.client.network.ConnectivityService import com.nextcloud.client.notifications.AppWideNotificationManager @@ -599,6 +600,10 @@ class FileUploadHelper { @Suppress("MagicNumber", "ReturnCount", "ComplexCondition") fun isSameFileOnRemote(user: User?, localPath: String?, remotePath: String?, context: Context?): Boolean { + Log_OC.d( + "105127", + "isSameFileOnRemote user:[$user], localPath:[$localPath], remotePath:[$remotePath], context:[$context]" + ) if (user == null || localPath == null || remotePath == null || context == null) { Log_OC.e(TAG, "cannot compare remote and local file") return false @@ -606,6 +611,7 @@ class FileUploadHelper { val operation = ReadFileRemoteOperation(remotePath) val result: RemoteOperationResult<*> = operation.execute(user, context) + Log_OC.d("105127", "isSameFileOnRemote result:[${result.isSuccess}]") if (result.isSuccess) { val remoteFile = result.data[0] as RemoteFile return remoteFile.isSame(localPath) diff --git a/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt b/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt index 3d6ed60ebc3e..ef9ce8703cb1 100644 --- a/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt +++ b/app/src/main/java/com/nextcloud/utils/extensions/FileExtensions.kt @@ -13,7 +13,6 @@ import android.graphics.Bitmap import android.util.Log import androidx.exifinterface.media.ExifInterface import com.nextcloud.utils.HumanReadableFormatter -import com.owncloud.android.datamodel.FileDataStorageManager import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.ThumbnailsCacheManager import com.owncloud.android.lib.common.utils.Log_OC @@ -131,10 +130,18 @@ fun OCFile?.isTheSameAs(localFile: File?): Boolean = try { val remoteSize = this.fileLength val localModified = attr.lastModifiedTime().toMillis() / MS_IN_SECOND // Unix time in milliseconds val remoteModified = this.modificationTimestamp / MS_IN_SECOND // Unix time in milliseconds - remoteName == localName && + val isTheSame = remoteName == localName && remoteSize == localSize && remoteModified == localModified + + Log_OC.d( + "105127", + "OCFileIsTheSameAs field:[local|remote] -> name:[$localName|$remoteName], " + + "size:[$localSize|$remoteSize], modified:[$localModified|$remoteModified], isTheSame:$isTheSame" + ) + + isTheSame } catch (e: IOException) { - Log.e(FileDataStorageManager.TAG, "fileIsTheSame: unable to obtain local file attributes for comparing: $e") + Log.e("105127", "OCFileIsTheSameAs fileIsTheSame: unable to obtain local file attributes for comparing: $e") false } diff --git a/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt b/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt index 0518325e92c8..c2141eef35ba 100644 --- a/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt +++ b/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt @@ -9,6 +9,7 @@ package com.nextcloud.utils.extensions import com.nextcloud.utils.TimeConstants import com.owncloud.android.datamodel.OCFile +import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.files.model.RemoteFile import com.owncloud.android.lib.resources.shares.ShareeUser import com.owncloud.android.lib.resources.tags.Tag @@ -24,11 +25,21 @@ fun RemoteFile.isSame(path: String?): Boolean { val localCreationTimestamp = FileUtil.getCreationTimestamp(localFile) val localSize: Long = localFile.length() - return size == localSize && + val isTheSame = size == localSize && localCreationTimestamp != null && localCreationTimestamp == creationTimestamp && modifiedTimestamp == localLastModifiedTimestamp * TimeConstants.MILLIS_PER_SECOND && this.areImageDimensionsSame(path) + + Log_OC.d( + "105127", + "RemoteFileIsSame field:[local|remote] -> size:[$localSize|$size], " + + "creation:[$localCreationTimestamp|$creationTimestamp], " + + "modif:[${localLastModifiedTimestamp * TimeConstants.MILLIS_PER_SECOND}|$modifiedTimestamp], " + + "areImageDimensionsSame: [${this.areImageDimensionsSame(path)}], isTheSame:[$isTheSame]" + ) + + return isTheSame } fun RemoteFile.sharedViaLink(): Boolean = sharees?.any { it.shareType?.isLink == true } ?: false @@ -62,6 +73,16 @@ private fun RemoteFile.areImageDimensionsSame(path: String): Boolean { return true } - return localFileImageDimension.first.toFloat() == imageDimension?.width && + val dimAreTheSame = localFileImageDimension.first.toFloat() == imageDimension?.width && localFileImageDimension.second.toFloat() == imageDimension?.height + + Log_OC.d( + "105127", + "areImageDimensionsSame field:[local|remote] -> " + + "width:[${localFileImageDimension.first.toFloat()}|${imageDimension?.width}], " + + "width:[${localFileImageDimension.second.toFloat()}|${imageDimension?.height}]," + + "dimAreTheSame:[$dimAreTheSame]" + ) + + return dimAreTheSame }