Skip to content

Commit 81e5de6

Browse files
committed
better thread management
Signed-off-by: alperozturk <[email protected]>
1 parent 2cc4e10 commit 81e5de6

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

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

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.nextcloud.utils.extensions.minPlural
2424
import com.nextcloud.utils.extensions.setVisibleIf
2525
import com.owncloud.android.R
2626
import com.owncloud.android.databinding.InternalTwoWaySyncLayoutBinding
27+
import com.owncloud.android.lib.common.utils.Log_OC
2728
import com.owncloud.android.ui.adapter.InternalTwoWaySyncAdapter
2829
import kotlinx.coroutines.Dispatchers
2930
import kotlinx.coroutines.launch
@@ -36,6 +37,8 @@ class InternalTwoWaySyncActivity :
3637
DrawerActivity(),
3738
Injectable,
3839
InternalTwoWaySyncAdapter.InternalTwoWaySyncAdapterOnUpdate {
40+
private val tag = "InternalTwoWaySyncActivity"
41+
3942
@Inject
4043
lateinit var backgroundJobManager: BackgroundJobManager
4144

@@ -105,21 +108,28 @@ class InternalTwoWaySyncActivity :
105108
}
106109
}
107110

111+
@Suppress("TooGenericExceptionCaught")
108112
private fun disableTwoWaySyncAndWorkers() {
109113
lifecycleScope.launch(Dispatchers.IO) {
110-
backgroundJobManager.cancelTwoWaySyncJob()
114+
try {
115+
backgroundJobManager.cancelTwoWaySyncJob()
111116

112-
val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(user.get())
113-
folders.forEach { folder ->
114-
FileDownloadWorker.cancelOperation(user.get().accountName, folder.fileId)
115-
backgroundJobManager.cancelFilesDownloadJob(user.get(), folder.fileId)
117+
val currentUser = user.get()
116118

117-
folder.internalFolderSyncTimestamp = -1L
118-
fileDataStorageManager.saveFile(folder)
119-
}
119+
val folders = fileDataStorageManager.getInternalTwoWaySyncFolders(currentUser)
120+
folders.forEach { folder ->
121+
FileDownloadWorker.cancelOperation(currentUser.accountName, folder.fileId)
122+
backgroundJobManager.cancelFilesDownloadJob(currentUser, folder.fileId)
123+
124+
folder.internalFolderSyncTimestamp = -1L
125+
fileDataStorageManager.saveFile(folder)
126+
}
120127

121-
launch(Dispatchers.Main) {
122-
internalTwoWaySyncAdapter.update()
128+
withContext(Dispatchers.Main) {
129+
internalTwoWaySyncAdapter.update()
130+
}
131+
} catch (e: Exception) {
132+
Log_OC.d(tag, "Error caught at disableTwoWaySyncAndWorkers: $e")
123133
}
124134
}
125135
}
@@ -202,14 +212,12 @@ class InternalTwoWaySyncActivity :
202212
}
203213

204214
private fun checkDisableForAllFoldersMenuButtonVisibility() {
205-
lifecycleScope.launch(Dispatchers.Main) {
215+
lifecycleScope.launch {
206216
val folderSize = withContext(Dispatchers.IO) {
207217
fileDataStorageManager.getInternalTwoWaySyncFolders(user.get()).size
208218
}
209219

210-
launch(Dispatchers.Main) {
211-
checkDisableForAllFoldersMenuButtonVisibility(preferences.isTwoWaySyncEnabled, folderSize)
212-
}
220+
checkDisableForAllFoldersMenuButtonVisibility(preferences.isTwoWaySyncEnabled, folderSize)
213221
}
214222
}
215223

0 commit comments

Comments
 (0)