mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Fix: Handling search query in Main
This commit is contained in:
parent
9f0698141f
commit
b35ffb327e
@ -15,10 +15,9 @@ import androidx.compose.material.icons.rounded.Sync
|
|||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
|
import androidx.compose.runtime.SideEffect
|
||||||
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
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.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.stringResource
|
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.isDarkTheme
|
||||||
import com.machiav3lli.fdroid.utility.setCustomTheme
|
import com.machiav3lli.fdroid.utility.setCustomTheme
|
||||||
import com.machiav3lli.fdroid.utility.showBatteryOptimizationDialog
|
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 kotlinx.coroutines.launch
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
@ -63,8 +66,12 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var powerManager: PowerManager
|
private lateinit var powerManager: PowerManager
|
||||||
|
private val cScope: CoroutineScope = CoroutineScope(Dispatchers.Default)
|
||||||
val syncConnection = Connection(SyncService::class.java)
|
val syncConnection = Connection(SyncService::class.java)
|
||||||
|
|
||||||
|
private val _searchQuery = MutableSharedFlow<String>()
|
||||||
|
val searchQuery = _searchQuery.asSharedFlow()
|
||||||
|
|
||||||
val db
|
val db
|
||||||
get() = (application as MainApplication).db
|
get() = (application as MainApplication).db
|
||||||
|
|
||||||
@ -92,9 +99,13 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
else -> isDarkTheme
|
else -> isDarkTheme
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
var searchQuery by remember() { mutableStateOf("") } // TODO link query to the current Page/VM
|
val query by searchQuery.collectAsState(initial = "")
|
||||||
val navController = rememberAnimatedNavController()
|
val navController = rememberAnimatedNavController()
|
||||||
|
|
||||||
|
SideEffect {
|
||||||
|
cScope.launch { _searchQuery.emit("") }
|
||||||
|
}
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
containerColor = Color.Transparent,
|
containerColor = Color.Transparent,
|
||||||
contentColor = MaterialTheme.colorScheme.onBackground,
|
contentColor = MaterialTheme.colorScheme.onBackground,
|
||||||
@ -104,12 +115,14 @@ class MainActivityX : AppCompatActivity() {
|
|||||||
title = stringResource(id = R.string.application_name),
|
title = stringResource(id = R.string.application_name),
|
||||||
) {
|
) {
|
||||||
ExpandableSearchAction(
|
ExpandableSearchAction(
|
||||||
query = searchQuery,
|
query = query,
|
||||||
onClose = {
|
onClose = {
|
||||||
searchQuery = ""
|
cScope.launch { _searchQuery.emit("") }
|
||||||
},
|
},
|
||||||
onQueryChanged = { query ->
|
onQueryChanged = { newQuery ->
|
||||||
if (query != searchQuery) searchQuery = query
|
if (newQuery != query) {
|
||||||
|
cScope.launch { _searchQuery.emit(newQuery) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
TopBarAction(icon = Icons.Rounded.Sync) {
|
TopBarAction(icon = Icons.Rounded.Sync) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user