diff options
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.kt | 27 |
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 |