Tweak code

This commit is contained in:
vfsfitvnm 2022-10-16 17:43:29 +02:00
parent 6dd88b796e
commit 7869f1a388
3 changed files with 52 additions and 36 deletions

View file

@ -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("") }

View file

@ -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 ->

View file

@ -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) }
)
}
}