Skip to content

Commit 1edb79b

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

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
@@ -1917,9 +1917,8 @@ class FileDisplayActivity :
19171917
}
19181918

19191919
is FileUploadCompleted -> {
1920-
state.currentFile?.let {
1921-
ocFileListFragment?.adapter?.insertFile(it)
1922-
}
1920+
Log_OC.d(TAG, "one or more files are uploaded")
1921+
listOfFilesFragment?.listDirectory(currentDir, MainApp.isOnlyOnDevice(), false)
19231922
}
19241923

19251924
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
@@ -1044,24 +1044,4 @@ public void cleanup() {
10441044
ocFileListDelegate.cleanup();
10451045
helper.cleanup();
10461046
}
1047-
1048-
public void insertFile(@NonNull OCFile file) {
1049-
mFiles.add(file);
1050-
mFilesAll.add(file);
1051-
1052-
// Re-sort to maintain order
1053-
if (sortOrder != null) {
1054-
boolean foldersBeforeFiles = preferences.isSortFoldersBeforeFiles();
1055-
boolean favoritesFirst = preferences.isSortFavoritesFirst();
1056-
mFiles = sortOrder.sortCloudFiles(mFiles, foldersBeforeFiles, favoritesFirst);
1057-
}
1058-
1059-
// Find actual position and notify
1060-
int position = mFiles.indexOf(file);
1061-
if (shouldShowHeader()) {
1062-
position++;
1063-
}
1064-
1065-
notifyItemInserted(position);
1066-
}
10671047
}

0 commit comments

Comments
 (0)