Эх сурвалжийг харах

better thread management

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 9 сар өмнө
parent
commit
81e5de6194

+ 22 - 14
app/src/main/java/com/owncloud/android/ui/activity/InternalTwoWaySyncActivity.kt

@@ -24,6 +24,7 @@ import com.nextcloud.utils.extensions.minPlural
 import com.nextcloud.utils.extensions.setVisibleIf
 import com.owncloud.android.R
 import com.owncloud.android.databinding.InternalTwoWaySyncLayoutBinding
+import com.owncloud.android.lib.common.utils.Log_OC
 import com.owncloud.android.ui.adapter.InternalTwoWaySyncAdapter
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -36,6 +37,8 @@ class InternalTwoWaySyncActivity :
     DrawerActivity(),
     Injectable,
     InternalTwoWaySyncAdapter.InternalTwoWaySyncAdapterOnUpdate {
+    private val tag = "InternalTwoWaySyncActivity"
+
     @Inject
     lateinit var backgroundJobManager: BackgroundJobManager
 
@@ -105,21 +108,28 @@ class InternalTwoWaySyncActivity :
         }
     }
 
+    @Suppress("TooGenericExceptionCaught")
     private fun disableTwoWaySyncAndWorkers() {
         lifecycleScope.launch(Dispatchers.IO) {
-            backgroundJobManager.cancelTwoWaySyncJob()
+            try {
+                backgroundJobManager.cancelTwoWaySyncJob()
 
-            val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user.get())
-            folders.forEach { folder ->
-                FileDownloadWorker.cancelOperation(user.get().accountName, folder.fileId)
-                backgroundJobManager.cancelFilesDownloadJob(user.get(), folder.fileId)
+                val currentUser = user.get()
 
-                folder.internalFolderSyncTimestamp = -1L
-                fileDataStorageManager.saveFile(folder)
-            }
+                val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(currentUser)
+                folders.forEach { folder ->
+                    FileDownloadWorker.cancelOperation(currentUser.accountName, folder.fileId)
+                    backgroundJobManager.cancelFilesDownloadJob(currentUser, folder.fileId)
+
+                    folder.internalFolderSyncTimestamp = -1L
+                    fileDataStorageManager.saveFile(folder)
+                }
 
-            launch(Dispatchers.Main) {
-                internalTwoWaySyncAdapter.update()
+                withContext(Dispatchers.Main) {
+                    internalTwoWaySyncAdapter.update()
+                }
+            } catch (e: Exception) {
+                Log_OC.d(tag, "Error caught at disableTwoWaySyncAndWorkers: $e")
             }
         }
     }
@@ -202,14 +212,12 @@ class InternalTwoWaySyncActivity :
     }
 
     private fun checkDisableForAllFoldersMenuButtonVisibility() {
-        lifecycleScope.launch(Dispatchers.Main) {
+        lifecycleScope.launch {
             val folderSize = withContext(Dispatchers.IO) {
                 fileDataStorageManager.getInternalTwoWaySyncFolders(user.get()).size
             }
 
-            launch(Dispatchers.Main) {
-                checkDisableForAllFoldersMenuButtonVisibility(preferences.isTwoWaySyncEnabled, folderSize)
-            }
+            checkDisableForAllFoldersMenuButtonVisibility(preferences.isTwoWaySyncEnabled, folderSize)
         }
     }