Browse Source

get rid of repeated codes in WorkManagerExtensions

Signed-off-by: Jonas Mayer <jonas.a.mayer@gmx.net>
Jonas Mayer 1 year ago
parent
commit
68629ea603

+ 10 - 22
app/src/main/java/com/nextcloud/utils/extensions/WorkManagerExtensions.kt

@@ -13,36 +13,24 @@ import com.google.common.util.concurrent.ListenableFuture
 import com.owncloud.android.lib.common.utils.Log_OC
 import java.util.concurrent.ExecutionException
 
-fun WorkManager.isWorkScheduled(tag: String): Boolean {
-    val statuses: ListenableFuture<List<WorkInfo>> = this.getWorkInfosByTag(tag)
-    var workInfoList: List<WorkInfo> = emptyList()
+private const val TAG = "WorkManager"
 
-    try {
-        workInfoList = statuses.get()
-    } catch (e: ExecutionException) {
-        Log_OC.d("Worker", "ExecutionException in isWorkScheduled: $e")
-    } catch (e: InterruptedException) {
-        Log_OC.d("Worker", "InterruptedException in isWorkScheduled: $e")
-    }
+fun WorkManager.isWorkRunning(tag: String): Boolean = checkWork(tag, listOf(WorkInfo.State.RUNNING))
 
-    return workInfoList.any {
-        it.state == WorkInfo.State.RUNNING || it.state == WorkInfo.State.ENQUEUED
-    }
-}
+fun WorkManager.isWorkScheduled(tag: String): Boolean =
+    checkWork(tag, listOf(WorkInfo.State.RUNNING, WorkInfo.State.ENQUEUED))
 
-fun WorkManager.isWorkRunning(tag: String): Boolean {
-    val statuses: ListenableFuture<List<WorkInfo>> = this.getWorkInfosByTag(tag)
+private fun WorkManager.checkWork(tag: String, stateConditions: List<WorkInfo.State>): Boolean {
+    val statuses: ListenableFuture<List<WorkInfo>> = getWorkInfosByTag(tag)
     var workInfoList: List<WorkInfo> = emptyList()
 
     try {
         workInfoList = statuses.get()
     } catch (e: ExecutionException) {
-        Log_OC.d("Worker", "ExecutionException in isWorkScheduled: $e")
+        Log_OC.d(TAG, "ExecutionException in checkWork: $e")
     } catch (e: InterruptedException) {
-        Log_OC.d("Worker", "InterruptedException in isWorkScheduled: $e")
+        Log_OC.d(TAG, "InterruptedException in checkWork: $e")
     }
 
-    return workInfoList.any {
-        it.state == WorkInfo.State.RUNNING
-    }
-}
+    return workInfoList.any { workInfo -> stateConditions.contains(workInfo.state) }
+}