Skip to content

Commit cfcf349

Browse files
committed
fix: upload completion listener
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent 48a3130 commit cfcf349

File tree

4 files changed

+12
-39
lines changed

4 files changed

+12
-39
lines changed

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

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,17 @@ class FileUploadWorker(
142142

143143
val result = uploadFiles()
144144
backgroundJobManager.logEndOfWorker(workerName, result)
145-
notificationManager.dismissNotification()
146-
if (result == Result.success()) {
147-
setIdleWorkerState()
148-
}
149145
result
150146
} catch (t: Throwable) {
151-
Log_OC.e(TAG, "Error caught at FileUploadWorker $t")
152-
cleanup()
147+
Log_OC.e(TAG, "exception $t")
148+
currentUploadFileOperation?.cancel(null)
153149
Result.failure()
150+
} finally {
151+
// Ensure all database operations are complete before signaling completion
152+
uploadsStorageManager.notifyObserversNow()
153+
154+
notificationManager.dismissNotification()
155+
setIdleWorkerState()
154156
}
155157

156158
private suspend fun trySetForeground() {
@@ -198,20 +200,12 @@ class FileUploadWorker(
198200
.setSilent(true)
199201
.build()
200202

201-
private fun cleanup() {
202-
Log_OC.e(TAG, "FileUploadWorker stopped")
203-
204-
setIdleWorkerState()
205-
currentUploadFileOperation?.cancel(null)
206-
notificationManager.dismissNotification()
207-
}
208-
209203
private fun setWorkerState(user: User?) {
210204
WorkerStateObserver.send(WorkerState.FileUploadStarted(user))
211205
}
212206

213207
private fun setIdleWorkerState() {
214-
WorkerStateObserver.send(WorkerState.FileUploadCompleted(currentUploadFileOperation?.file))
208+
WorkerStateObserver.send(WorkerState.FileUploadCompleted)
215209
}
216210

217211
@Suppress("ReturnCount", "LongMethod", "DEPRECATION")

app/src/main/java/com/nextcloud/model/WorkerState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ sealed class WorkerState {
1818
data class FileDownloadCompleted(var currentFile: OCFile?) : WorkerState()
1919

2020
data class FileUploadStarted(var user: User?) : WorkerState()
21-
data class FileUploadCompleted(var currentFile: OCFile?) : WorkerState()
21+
object FileUploadCompleted : WorkerState()
2222

2323
data object OfflineOperationsCompleted : WorkerState()
2424
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1898,9 +1898,8 @@ class FileDisplayActivity :
18981898
}
18991899

19001900
is FileUploadCompleted -> {
1901-
state.currentFile?.let {
1902-
ocFileListFragment?.adapter?.insertFile(it)
1903-
}
1901+
Log_OC.d(TAG, "one or more files are uploaded")
1902+
listOfFilesFragment?.listDirectory(currentDir, MainApp.isOnlyOnDevice(), false)
19041903
}
19051904

19061905
is OfflineOperationsCompleted -> {

app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,24 +1057,4 @@ public void cleanup() {
10571057
ocFileListDelegate.cleanup();
10581058
helper.cleanup();
10591059
}
1060-
1061-
public void insertFile(@NonNull OCFile file) {
1062-
mFiles.add(file);
1063-
mFilesAll.add(file);
1064-
1065-
// Re-sort to maintain order
1066-
if (sortOrder != null) {
1067-
boolean foldersBeforeFiles = preferences.isSortFoldersBeforeFiles();
1068-
boolean favoritesFirst = preferences.isSortFavoritesFirst();
1069-
mFiles = sortOrder.sortCloudFiles(mFiles, foldersBeforeFiles, favoritesFirst);
1070-
}
1071-
1072-
// Find actual position and notify
1073-
int position = mFiles.indexOf(file);
1074-
if (shouldShowHeader()) {
1075-
position++;
1076-
}
1077-
1078-
notifyItemInserted(position);
1079-
}
10801060
}

0 commit comments

Comments
 (0)