Tweak code
This commit is contained in:
parent
6dd88b796e
commit
7869f1a388
|
@ -31,14 +31,15 @@ import it.vfsfitvnm.vimusic.ui.screens.searchRoute
|
|||
import it.vfsfitvnm.vimusic.ui.screens.searchresult.SearchResultScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.settings.SettingsScreen
|
||||
import it.vfsfitvnm.vimusic.ui.screens.settingsRoute
|
||||
import it.vfsfitvnm.vimusic.utils.*
|
||||
import it.vfsfitvnm.vimusic.utils.homeScreenTabIndexKey
|
||||
import it.vfsfitvnm.vimusic.utils.pauseSearchHistoryKey
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
|
||||
@ExperimentalFoundationApi
|
||||
@ExperimentalAnimationApi
|
||||
@Composable
|
||||
fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
|
||||
val context = LocalContext.current
|
||||
|
||||
val saveableStateHolder = rememberSaveableStateHolder()
|
||||
|
||||
RouteHandler(
|
||||
|
@ -52,6 +53,7 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
|
|||
initialState.route == searchResultRoute && targetState.route == searchRoute -> defaultUnstacking
|
||||
else -> defaultStill
|
||||
}
|
||||
|
||||
else -> defaultStill
|
||||
}
|
||||
}
|
||||
|
@ -84,15 +86,19 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
|
|||
}
|
||||
|
||||
searchRoute { initialTextInput ->
|
||||
val context = LocalContext.current
|
||||
|
||||
SearchScreen(
|
||||
initialTextInput = initialTextInput,
|
||||
onSearch = { query ->
|
||||
pop()
|
||||
searchResultRoute(query)
|
||||
|
||||
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) query {
|
||||
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) {
|
||||
query {
|
||||
Database.insert(SearchQuery(query = query))
|
||||
}
|
||||
}
|
||||
},
|
||||
onViewPlaylist = onPlaylistUrl
|
||||
)
|
||||
|
@ -125,18 +131,22 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
|
|||
onPlaylistClick = { playlistRoute(it) },
|
||||
onSearchClick = { searchRoute("") }
|
||||
)
|
||||
|
||||
1 -> HomeSongs(
|
||||
onSearchClick = { searchRoute("") }
|
||||
)
|
||||
|
||||
2 -> HomePlaylists(
|
||||
onBuiltInPlaylist = { builtInPlaylistRoute(it) },
|
||||
onPlaylistClick = { localPlaylistRoute(it.id) },
|
||||
onSearchClick = { searchRoute("") }
|
||||
)
|
||||
|
||||
3 -> HomeArtistList(
|
||||
onArtistClick = { artistRoute(it.id) },
|
||||
onSearchClick = { searchRoute("") }
|
||||
)
|
||||
|
||||
4 -> HomeAlbums(
|
||||
onAlbumClick = { albumRoute(it.id) },
|
||||
onSearchClick = { searchRoute("") }
|
||||
|
|
|
@ -58,7 +58,6 @@ import it.vfsfitvnm.vimusic.ui.components.themed.FloatingActionsContainerWithScr
|
|||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.*
|
||||
import it.vfsfitvnm.vimusic.utils.align
|
||||
import it.vfsfitvnm.vimusic.utils.center
|
||||
import it.vfsfitvnm.vimusic.utils.medium
|
||||
|
@ -67,6 +66,8 @@ import it.vfsfitvnm.vimusic.utils.secondary
|
|||
import it.vfsfitvnm.innertube.Innertube
|
||||
import it.vfsfitvnm.innertube.models.bodies.SearchSuggestionsBody
|
||||
import it.vfsfitvnm.innertube.requests.searchSuggestions
|
||||
import it.vfsfitvnm.vimusic.utils.pauseSearchHistoryKey
|
||||
import it.vfsfitvnm.vimusic.utils.preferences
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
|
@ -90,11 +91,13 @@ fun OnlineSearch(
|
|||
stateSaver = listSaver(SearchQuerySaver),
|
||||
key1 = textFieldValue.text
|
||||
) {
|
||||
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) {
|
||||
Database.queries("%${textFieldValue.text}%")
|
||||
.flowOn(Dispatchers.IO)
|
||||
.distinctUntilChanged { old, new -> old.size == new.size }
|
||||
.collect { value = it }
|
||||
}
|
||||
}
|
||||
|
||||
var suggestionsResult by rememberSaveable(stateSaver = resultSaver(autoSaver<List<String>?>())) {
|
||||
mutableStateOf(null)
|
||||
|
@ -188,7 +191,7 @@ fun OnlineSearch(
|
|||
)
|
||||
}
|
||||
|
||||
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) items(
|
||||
items(
|
||||
items = history,
|
||||
key = SearchQuery::id
|
||||
) { searchQuery ->
|
||||
|
|
|
@ -35,7 +35,11 @@ import it.vfsfitvnm.vimusic.query
|
|||
import it.vfsfitvnm.vimusic.service.PlayerMediaBrowserService
|
||||
import it.vfsfitvnm.vimusic.ui.components.themed.Header
|
||||
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
|
||||
import it.vfsfitvnm.vimusic.utils.*
|
||||
import it.vfsfitvnm.vimusic.utils.isIgnoringBatteryOptimizations
|
||||
import it.vfsfitvnm.vimusic.utils.isInvincibilityEnabledKey
|
||||
import it.vfsfitvnm.vimusic.utils.pauseSearchHistoryKey
|
||||
import it.vfsfitvnm.vimusic.utils.produceSaveableState
|
||||
import it.vfsfitvnm.vimusic.utils.rememberPreference
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
|
@ -77,10 +81,7 @@ fun OtherSettings() {
|
|||
isIgnoringBatteryOptimizations = context.isIgnoringBatteryOptimizations
|
||||
}
|
||||
|
||||
var pauseSearchHistory by rememberPreference(
|
||||
pauseSearchHistoryKey,
|
||||
false
|
||||
)
|
||||
var pauseSearchHistory by rememberPreference(pauseSearchHistoryKey, false)
|
||||
|
||||
val queriesCount by produceSaveableState(initialValue = 0, stateSaver = autoSaver()) {
|
||||
Database.queriesCount()
|
||||
|
@ -113,6 +114,28 @@ fun OtherSettings() {
|
|||
|
||||
SettingsGroupSpacer()
|
||||
|
||||
SettingsEntryGroupText(title = "SEARCH HISTORY")
|
||||
|
||||
SwitchSettingEntry(
|
||||
title = "Pause search history",
|
||||
text = "Neither save new searched queries nor show history",
|
||||
isChecked = pauseSearchHistory,
|
||||
onCheckedChange = { pauseSearchHistory = it }
|
||||
)
|
||||
|
||||
SettingsEntry(
|
||||
title = "Clear search history",
|
||||
text = if (queriesCount > 0) {
|
||||
"Delete $queriesCount search queries"
|
||||
} else {
|
||||
"History is empty"
|
||||
},
|
||||
isEnabled = queriesCount > 0,
|
||||
onClick = { query(Database::clearQueries) }
|
||||
)
|
||||
|
||||
SettingsGroupSpacer()
|
||||
|
||||
SettingsEntryGroupText(title = "SERVICE LIFETIME")
|
||||
|
||||
ImportantSettingsDescription(text = "If battery optimizations are applied, the playback notification can suddenly disappear when paused.")
|
||||
|
@ -163,25 +186,5 @@ fun OtherSettings() {
|
|||
isChecked = isInvincibilityEnabled,
|
||||
onCheckedChange = { isInvincibilityEnabled = it }
|
||||
)
|
||||
|
||||
SettingsEntryGroupText(title = "SEARCH HISTORY")
|
||||
|
||||
SwitchSettingEntry(
|
||||
title = "Pause search history",
|
||||
text = "Neither save new searched queries nor show already existing items in the history",
|
||||
isChecked = pauseSearchHistory,
|
||||
onCheckedChange = { pauseSearchHistory = it }
|
||||
)
|
||||
|
||||
SettingsEntry(
|
||||
title = "Clear search history",
|
||||
text = if (queriesCount > 0) {
|
||||
"Delete $queriesCount search queries"
|
||||
} else {
|
||||
"History is empty"
|
||||
},
|
||||
isEnabled = queriesCount > 0,
|
||||
onClick = { query(Database::clearQueries) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue