Explorar o código

Merge pull request #13471 from nextcloud/bugfix/observe-worker-state

BugFix - Observe Worker State
Andy Scherzinger hai 11 meses
pai
achega
87b2e81cde

+ 2 - 2
app/src/main/java/com/nextcloud/client/jobs/download/FileDownloadWorker.kt

@@ -156,11 +156,11 @@ class FileDownloadWorker(
     }
 
     private fun setWorkerState(user: User?) {
-        WorkerStateLiveData.instance().setWorkState(WorkerState.Download(user, currentDownload))
+        WorkerStateLiveData.instance().setWorkState(WorkerState.DownloadStarted(user, currentDownload))
     }
 
     private fun setIdleWorkerState() {
-        WorkerStateLiveData.instance().setWorkState(WorkerState.Idle(getCurrentFile()))
+        WorkerStateLiveData.instance().setWorkState(WorkerState.DownloadFinished(getCurrentFile()))
     }
 
     private fun removePendingDownload(accountName: String?) {

+ 5 - 2
app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt

@@ -102,6 +102,9 @@ class FileUploadWorker(
             val result = retrievePagesBySortingUploadsByID()
             backgroundJobManager.logEndOfWorker(BackgroundJobManagerImpl.formatClassTag(this::class), result)
             notificationManager.dismissNotification()
+            if (result == Result.success()) {
+                setIdleWorkerState()
+            }
             result
         } catch (t: Throwable) {
             Log_OC.e(TAG, "Error caught at FileUploadWorker $t")
@@ -120,11 +123,11 @@ class FileUploadWorker(
     }
 
     private fun setWorkerState(user: User?, uploads: List<OCUpload>) {
-        WorkerStateLiveData.instance().setWorkState(WorkerState.Upload(user, uploads))
+        WorkerStateLiveData.instance().setWorkState(WorkerState.UploadStarted(user, uploads))
     }
 
     private fun setIdleWorkerState() {
-        WorkerStateLiveData.instance().setWorkState(WorkerState.Idle(currentUploadFileOperation?.file))
+        WorkerStateLiveData.instance().setWorkState(WorkerState.UploadFinished(currentUploadFileOperation?.file))
     }
 
     @Suppress("ReturnCount")

+ 4 - 3
app/src/main/java/com/nextcloud/model/WorkerState.kt

@@ -13,7 +13,8 @@ import com.owncloud.android.db.OCUpload
 import com.owncloud.android.operations.DownloadFileOperation
 
 sealed class WorkerState {
-    data class Idle(var currentFile: OCFile?) : WorkerState()
-    data class Download(var user: User?, var currentDownload: DownloadFileOperation?) : WorkerState()
-    data class Upload(var user: User?, var uploads: List<OCUpload>) : WorkerState()
+    data class DownloadFinished(var currentFile: OCFile?) : WorkerState()
+    data class DownloadStarted(var user: User?, var currentDownload: DownloadFileOperation?) : WorkerState()
+    data class UploadFinished(var currentFile: OCFile?) : WorkerState()
+    data class UploadStarted(var user: User?, var uploads: List<OCUpload>) : WorkerState()
 }

+ 4 - 5
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -35,7 +35,6 @@ import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Parcelable;
-import android.provider.Settings;
 import android.text.TextUtils;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -98,7 +97,6 @@ import com.owncloud.android.ui.asynctasks.CheckAvailableSpaceTask;
 import com.owncloud.android.ui.asynctasks.FetchRemoteFileTask;
 import com.owncloud.android.ui.asynctasks.GetRemoteFileTask;
 import com.owncloud.android.ui.dialog.SendShareDialog;
-import com.owncloud.android.ui.dialog.setupEncryption.SetupEncryptionDialogFragment;
 import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
 import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment;
 import com.owncloud.android.ui.events.SearchEvent;
@@ -158,7 +156,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import kotlin.Unit;
 
 import static com.owncloud.android.datamodel.OCFile.PATH_SEPARATOR;
-import static com.owncloud.android.ui.dialog.setupEncryption.SetupEncryptionDialogFragment.SETUP_ENCRYPTION_DIALOG_TAG;
 import static com.owncloud.android.utils.PermissionUtil.PERMISSION_CHOICE_DIALOG_TAG;
 
 /**
@@ -1593,11 +1590,13 @@ public class FileDisplayActivity extends FileActivity
 
     private void observeWorkerState() {
         WorkerStateLiveData.Companion.instance().observe(this, state -> {
-            if (state instanceof WorkerState.Download) {
+            if (state instanceof WorkerState.DownloadStarted) {
                 Log_OC.d(TAG, "Download worker started");
                 handleDownloadWorkerState();
-            } else if (state instanceof WorkerState.Idle) {
+            } else if (state instanceof WorkerState.DownloadFinished) {
                 fileDownloadProgressListener = null;
+            } else if (state instanceof WorkerState.UploadFinished) {
+                refreshList();
             }
         });
     }

+ 3 - 4
app/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -16,7 +16,6 @@ import android.accounts.AccountManagerCallback;
 import android.accounts.AccountManagerFuture;
 import android.accounts.OperationCanceledException;
 import android.content.Intent;
-import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.Handler;
 import android.view.MenuItem;
@@ -460,10 +459,10 @@ public class ManageAccountsActivity extends FileActivity implements UserListAdap
 
     private void observeWorkerState() {
         WorkerStateLiveData.Companion.instance().observe(this, state -> {
-            if (state instanceof WorkerState.Download) {
+            if (state instanceof WorkerState.DownloadStarted) {
                 Log_OC.d(TAG, "Download worker started");
-                workerAccountName = ((WorkerState.Download) state).getUser().getAccountName();
-                workerCurrentDownload = ((WorkerState.Download) state).getCurrentDownload();
+                workerAccountName = ((WorkerState.DownloadStarted) state).getUser().getAccountName();
+                workerCurrentDownload = ((WorkerState.DownloadStarted) state).getCurrentDownload();
             }
         });
     }

+ 1 - 2
app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -34,7 +34,6 @@ import com.nextcloud.model.WorkerStateLiveData;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.UploadListLayoutBinding;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.datamodel.SyncedFolder;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
 import com.owncloud.android.datamodel.UploadsStorageManager;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
@@ -140,7 +139,7 @@ public class UploadListActivity extends FileActivity {
 
     private void observeWorkerState() {
         WorkerStateLiveData.Companion.instance().observe(this, state -> {
-            if (state instanceof WorkerState.Upload) {
+            if (state instanceof WorkerState.UploadStarted) {
                 Log_OC.d(TAG, "Upload worker started");
                 handleUploadWorkerState();
             }

+ 3 - 3
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.kt

@@ -279,7 +279,7 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR
     private fun observeWorkerState() {
         WorkerStateLiveData.instance().observe(this) { state: WorkerState? ->
             when (state) {
-                is WorkerState.Download -> {
+                is WorkerState.DownloadStarted -> {
                     Log_OC.d(TAG, "Download worker started")
                     isDownloadWorkStarted = true
 
@@ -288,7 +288,7 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR
                     }
                 }
 
-                is WorkerState.Idle -> {
+                is WorkerState.DownloadFinished -> {
                     Log_OC.d(TAG, "Download worker stopped")
                     isDownloadWorkStarted = false
 
@@ -298,7 +298,7 @@ class PreviewImageActivity : FileActivity(), FileFragment.ContainerActivity, OnR
                 }
 
                 else -> {
-                    Log_OC.d(TAG, "Download worker stopped")
+                    Log_OC.d(TAG, "Worker stopped")
                     isDownloadWorkStarted = false
                 }
             }