From 63e2d5cdac0566260d7e47058e78aac688fca8b3 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 10 Dec 2023 18:44:32 +0100 Subject: [PATCH] Run plugin queries on worker thread --- .../de/mm20/launcher2/files/providers/PluginFileProvider.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/files/src/main/java/de/mm20/launcher2/files/providers/PluginFileProvider.kt b/data/files/src/main/java/de/mm20/launcher2/files/providers/PluginFileProvider.kt index 06568fff..e07fa9ac 100644 --- a/data/files/src/main/java/de/mm20/launcher2/files/providers/PluginFileProvider.kt +++ b/data/files/src/main/java/de/mm20/launcher2/files/providers/PluginFileProvider.kt @@ -15,14 +15,16 @@ import de.mm20.launcher2.plugin.contracts.PluginContract import de.mm20.launcher2.plugin.contracts.SearchPluginContract import de.mm20.launcher2.search.File import kotlinx.collections.immutable.persistentMapOf +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withContext import kotlin.coroutines.resume class PluginFileProvider( private val context: Context, private val pluginAuthority: String, ) : FileProvider { - override suspend fun search(query: String): List { + override suspend fun search(query: String): List = withContext(Dispatchers.IO) { val uri = Uri.Builder() .scheme("content") .authority(pluginAuthority) @@ -31,7 +33,7 @@ class PluginFileProvider( .build() val cancellationSignal = CancellationSignal() - return suspendCancellableCoroutine { + return@withContext suspendCancellableCoroutine { it.invokeOnCancellation { cancellationSignal.cancel() }