Skip to content

Commit 0da5f6f

Browse files
committed
fix(conflict-resolve): skip auto upload file path check
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 24bca06 commit 0da5f6f

5 files changed

Lines changed: 35 additions & 13 deletions

File tree

app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,12 @@ interface BackgroundJobManager {
131131

132132
fun startNotificationJob(subject: String, signature: String)
133133
fun startAccountRemovalJob(accountName: String, remoteWipe: Boolean)
134-
fun startFilesUploadJob(user: User, uploadIds: LongArray, showSameFileAlreadyExistsNotification: Boolean)
134+
fun startFilesUploadJob(
135+
user: User,
136+
uploadIds: LongArray,
137+
showSameFileAlreadyExistsNotification: Boolean,
138+
skipAutoUploadCheck: Boolean = false
139+
)
135140
fun getFileUploads(user: User): LiveData<List<JobInfo>>
136141
fun cancelFilesUploadJob(user: User)
137142
fun isStartFileUploadJobScheduled(accountName: String): Boolean

app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,12 @@ internal class BackgroundJobManagerImpl(
622622
* and cannot be determined directly from the account name or a single function
623623
* within the worker.
624624
*/
625-
override fun startFilesUploadJob(user: User, uploadIds: LongArray, showSameFileAlreadyExistsNotification: Boolean) {
625+
override fun startFilesUploadJob(
626+
user: User,
627+
uploadIds: LongArray,
628+
showSameFileAlreadyExistsNotification: Boolean,
629+
skipAutoUploadCheck: Boolean
630+
) {
626631
defaultDispatcherScope.launch {
627632
val batchSize = FileUploadHelper.MAX_FILE_COUNT
628633
val batches = uploadIds.toList().chunked(batchSize)
@@ -637,6 +642,7 @@ internal class BackgroundJobManagerImpl(
637642
FileUploadWorker.SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION,
638643
showSameFileAlreadyExistsNotification
639644
)
645+
.putBoolean(FileUploadWorker.SKIP_AUTO_UPLOAD_CHECK, skipAutoUploadCheck)
640646
.putString(FileUploadWorker.ACCOUNT, user.accountName)
641647
.putInt(FileUploadWorker.TOTAL_UPLOAD_SIZE, uploadIds.size)
642648

app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadHelper.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -449,16 +449,14 @@ class FileUploadHelper {
449449
}
450450
}
451451

452+
@JvmOverloads
452453
fun uploadUpdatedFile(
453454
user: User,
454-
existingFiles: Array<OCFile?>?,
455+
existingFiles: Array<OCFile?>,
455456
behaviour: Int,
456-
nameCollisionPolicy: NameCollisionPolicy
457+
nameCollisionPolicy: NameCollisionPolicy,
458+
skipAutoUploadCheck: Boolean = false
457459
) {
458-
if (existingFiles == null) {
459-
return
460-
}
461-
462460
Log_OC.d(this, "upload updated file")
463461

464462
val uploads = existingFiles.map { file ->
@@ -496,7 +494,12 @@ class FileUploadHelper {
496494
}
497495
}
498496
val uploadIds: LongArray = uploads.filterNotNull().map { it.uploadId }.toLongArray()
499-
backgroundJobManager.startFilesUploadJob(user, uploadIds, true)
497+
backgroundJobManager.startFilesUploadJob(
498+
user,
499+
uploadIds,
500+
true,
501+
skipAutoUploadCheck
502+
)
500503
}
501504

502505
/**

app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class FileUploadWorker(
8080
const val CURRENT_BATCH_INDEX = "batch_index"
8181
const val TOTAL_UPLOAD_SIZE = "total_upload_size"
8282
const val SHOW_SAME_FILE_ALREADY_EXISTS_NOTIFICATION = "show_same_file_already_exists_notification"
83-
83+
const val SKIP_AUTO_UPLOAD_CHECK = "skip_auto_upload_check"
8484
private const val BATCH_SIZE = 100
8585

8686
const val EXTRA_ACCOUNT_NAME = "ACCOUNT_NAME"
@@ -234,6 +234,8 @@ class FileUploadWorker(
234234
return@withContext Result.failure()
235235
}
236236

237+
val skipAutoUploadCheck = inputData.getBoolean(SKIP_AUTO_UPLOAD_CHECK, false)
238+
237239
val user = optionalUser.get()
238240
val previouslyUploadedFileSize = currentBatchIndex * FileUploadHelper.MAX_FILE_COUNT
239241
val uploads = uploadsStorageManager.getUploadsByIds(uploadIds, accountName)
@@ -245,7 +247,7 @@ class FileUploadWorker(
245247
for ((index, upload) in uploads.withIndex()) {
246248
ensureActive()
247249

248-
if (isBelongToAnySyncedFolder(upload, syncFolderHelper, syncedFolders)) {
250+
if (!skipAutoUploadCheck && isBelongToAnySyncedFolder(upload, syncFolderHelper, syncedFolders)) {
249251
Log_OC.d(TAG, "skipping upload, will be handled by AutoUploadWorker: ${upload.localPath}")
250252
uploadsStorageManager.uploadDao.deleteByRemotePathAndAccountName(
251253
remotePath = upload.remotePath,
@@ -445,7 +447,7 @@ class FileUploadWorker(
445447
if (accountName != null && remotePath != null) {
446448
val key: String = FileUploadHelper.buildRemoteName(accountName, remotePath)
447449
val boundListener = FileUploadHelper.mBoundListeners[key]
448-
val filename = currentUploadFileOperation?.fileName ?: ""
450+
val filename = currentUploadFileOperation.fileName ?: ""
449451

450452
boundListener?.onTransferProgress(
451453
progressRate,

app/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,13 @@ class ConflictsResolveActivity :
150150

151151
private fun handleFile(file: OCFile?, upload: OCUpload?, user: User, policy: NameCollisionPolicy) {
152152
upload?.let { uploadHelper.removeFileUpload(it.remotePath, it.accountName) }
153-
uploadHelper.uploadUpdatedFile(user, arrayOf(file), localBehaviour, policy)
153+
uploadHelper.uploadUpdatedFile(
154+
user,
155+
arrayOf(file),
156+
localBehaviour,
157+
policy,
158+
skipAutoUploadCheck = true
159+
)
154160
}
155161

156162
private suspend fun keepServer(file: OCFile?, upload: OCUpload?, user: User) {

0 commit comments

Comments
 (0)