Flow migration: remove Shortcuts process from main thread

This commit is contained in:
ganfra 2021-10-27 19:26:51 +02:00
parent b93e67ed11
commit da47bfde2b
4 changed files with 10 additions and 3 deletions

View file

@ -137,6 +137,6 @@ object VectorStaticModule {
@Provides
@JvmStatic
fun providesCoroutineDispatchers(): CoroutineDispatchers {
return CoroutineDispatchers(io = Dispatchers.IO)
return CoroutineDispatchers(io = Dispatchers.IO, computation = Dispatchers.Default)
}
}

View file

@ -19,4 +19,6 @@ package im.vector.app.core.dispatchers
import kotlinx.coroutines.CoroutineDispatcher
import javax.inject.Inject
data class CoroutineDispatchers @Inject constructor(val io: CoroutineDispatcher)
data class CoroutineDispatchers @Inject constructor(
val io: CoroutineDispatcher,
val computation: CoroutineDispatcher)

View file

@ -23,8 +23,11 @@ import androidx.core.content.getSystemService
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.lifecycle.asFlow
import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.dispatchers.CoroutineDispatchers
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import org.matrix.android.sdk.api.session.room.RoomSortOrder
@ -34,6 +37,7 @@ import javax.inject.Inject
class ShortcutsHandler @Inject constructor(
private val context: Context,
private val appDispatchers: CoroutineDispatchers,
private val shortcutCreator: ShortcutCreator,
private val activeSessionHolder: ActiveSessionHolder
) {
@ -67,6 +71,7 @@ class ShortcutsHandler @Inject constructor(
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
}
}
?.flowOn(appDispatchers.computation)
?.launchIn(coroutineScope)
?: Job()
}

View file

@ -42,7 +42,7 @@ class KeysExporterTest {
private val keysExporter = KeysExporter(
session = FakeSession(fakeCryptoService = cryptoService),
context = context.instance,
dispatchers = CoroutineDispatchers(Dispatchers.Unconfined)
dispatchers = CoroutineDispatchers(Dispatchers.Unconfined, Dispatchers.Unconfined)
)
@Before