From b35ffb327e02a92d7c9f3980740c7387b08ffcc6 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 18 Sep 2022 15:19:45 +0200 Subject: [PATCH] Fix: Handling search query in Main --- .../fdroid/ui/activities/MainActivityX.kt | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt b/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt index 7066cf68..20b5137b 100644 --- a/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt +++ b/src/main/kotlin/com/machiav3lli/fdroid/ui/activities/MainActivityX.kt @@ -15,10 +15,9 @@ import androidx.compose.material.icons.rounded.Sync import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource @@ -45,6 +44,10 @@ import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty import com.machiav3lli.fdroid.utility.isDarkTheme import com.machiav3lli.fdroid.utility.setCustomTheme import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.launch import kotlin.properties.Delegates @@ -63,8 +66,12 @@ class MainActivityX : AppCompatActivity() { } private lateinit var powerManager: PowerManager + private val cScope: CoroutineScope = CoroutineScope(Dispatchers.Default) val syncConnection = Connection(SyncService::class.java) + private val _searchQuery = MutableSharedFlow() + val searchQuery = _searchQuery.asSharedFlow() + val db get() = (application as MainApplication).db @@ -92,9 +99,13 @@ class MainActivityX : AppCompatActivity() { else -> isDarkTheme } ) { - var searchQuery by remember() { mutableStateOf("") } // TODO link query to the current Page/VM + val query by searchQuery.collectAsState(initial = "") val navController = rememberAnimatedNavController() + SideEffect { + cScope.launch { _searchQuery.emit("") } + } + Scaffold( containerColor = Color.Transparent, contentColor = MaterialTheme.colorScheme.onBackground, @@ -104,12 +115,14 @@ class MainActivityX : AppCompatActivity() { title = stringResource(id = R.string.application_name), ) { ExpandableSearchAction( - query = searchQuery, + query = query, onClose = { - searchQuery = "" + cScope.launch { _searchQuery.emit("") } }, - onQueryChanged = { query -> - if (query != searchQuery) searchQuery = query + onQueryChanged = { newQuery -> + if (newQuery != query) { + cScope.launch { _searchQuery.emit(newQuery) } + } } ) TopBarAction(icon = Icons.Rounded.Sync) {