aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt')
-rw-r--r--app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt b/app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt
new file mode 100644
index 0000000..8cb4947
--- /dev/null
+++ b/app/src/main/java/moe/yuuta/workmode/suspend/AsyncSuspender.kt
@@ -0,0 +1,27 @@
+package moe.yuuta.workmode.suspend
+
+import android.content.Context
+import moe.yuuta.workmode.async.Async
+import moe.yuuta.workmode.async.Callback
+import moe.yuuta.workmode.async.Runnable
+import moe.yuuta.workmode.async.Stoppable
+
+/**
+ * An async suspender which wraps suspend tasks and run them in the background
+ */
+class AsyncSuspender(private val mContext: Context) {
+ fun suspend(packageNames: Array<String>, suspended: Boolean, callback: Callback<Array<String>>): Stoppable =
+ Async.beginTask(object : Runnable<Array<String>> {
+ override fun run(): Array<String> = Suspender(mContext).suspend(packageNames, suspended)
+ }, callback)
+
+ fun isSuspended(packageNames: Array<String>, callback: Callback<Boolean>): Stoppable =
+ Async.beginTask(object : Runnable<Boolean> {
+ override fun run(): Boolean = Suspender(mContext).isSuspended(packageNames)
+ }, callback)
+
+ fun applyFromSettings(callback: Callback<Unit>): Stoppable =
+ Async.beginTask(object : Runnable<Unit> {
+ override fun run(): Unit = Suspender(mContext).applyFromSettings()
+ }, callback)
+} \ No newline at end of file