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.searchresult.SearchResultScreen
import it.vfsfitvnm.vimusic.ui.screens.settings.SettingsScreen import it.vfsfitvnm.vimusic.ui.screens.settings.SettingsScreen
import it.vfsfitvnm.vimusic.ui.screens.settingsRoute 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 @ExperimentalFoundationApi
@ExperimentalAnimationApi @ExperimentalAnimationApi
@Composable @Composable
fun HomeScreen(onPlaylistUrl: (String) -> Unit) { fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
val context = LocalContext.current
val saveableStateHolder = rememberSaveableStateHolder() val saveableStateHolder = rememberSaveableStateHolder()
RouteHandler( RouteHandler(
@ -52,6 +53,7 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
initialState.route == searchResultRoute && targetState.route == searchRoute -> defaultUnstacking initialState.route == searchResultRoute && targetState.route == searchRoute -> defaultUnstacking
else -> defaultStill else -> defaultStill
} }
else -> defaultStill else -> defaultStill
} }
} }
@ -84,14 +86,18 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
} }
searchRoute { initialTextInput -> searchRoute { initialTextInput ->
val context = LocalContext.current
SearchScreen( SearchScreen(
initialTextInput = initialTextInput, initialTextInput = initialTextInput,
onSearch = { query -> onSearch = { query ->
pop() pop()
searchResultRoute(query) searchResultRoute(query)
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) query { if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) {
Database.insert(SearchQuery(query = query)) query {
Database.insert(SearchQuery(query = query))
}
} }
}, },
onViewPlaylist = onPlaylistUrl onViewPlaylist = onPlaylistUrl
@ -125,18 +131,22 @@ fun HomeScreen(onPlaylistUrl: (String) -> Unit) {
onPlaylistClick = { playlistRoute(it) }, onPlaylistClick = { playlistRoute(it) },
onSearchClick = { searchRoute("") } onSearchClick = { searchRoute("") }
) )
1 -> HomeSongs( 1 -> HomeSongs(
onSearchClick = { searchRoute("") } onSearchClick = { searchRoute("") }
) )
2 -> HomePlaylists( 2 -> HomePlaylists(
onBuiltInPlaylist = { builtInPlaylistRoute(it) }, onBuiltInPlaylist = { builtInPlaylistRoute(it) },
onPlaylistClick = { localPlaylistRoute(it.id) }, onPlaylistClick = { localPlaylistRoute(it.id) },
onSearchClick = { searchRoute("") } onSearchClick = { searchRoute("") }
) )
3 -> HomeArtistList( 3 -> HomeArtistList(
onArtistClick = { artistRoute(it.id) }, onArtistClick = { artistRoute(it.id) },
onSearchClick = { searchRoute("") } onSearchClick = { searchRoute("") }
) )
4 -> HomeAlbums( 4 -> HomeAlbums(
onAlbumClick = { albumRoute(it.id) }, onAlbumClick = { albumRoute(it.id) },
onSearchClick = { searchRoute("") } 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.Header
import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton import it.vfsfitvnm.vimusic.ui.components.themed.SecondaryTextButton
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance
import it.vfsfitvnm.vimusic.utils.*
import it.vfsfitvnm.vimusic.utils.align import it.vfsfitvnm.vimusic.utils.align
import it.vfsfitvnm.vimusic.utils.center import it.vfsfitvnm.vimusic.utils.center
import it.vfsfitvnm.vimusic.utils.medium 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.Innertube
import it.vfsfitvnm.innertube.models.bodies.SearchSuggestionsBody import it.vfsfitvnm.innertube.models.bodies.SearchSuggestionsBody
import it.vfsfitvnm.innertube.requests.searchSuggestions 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.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
@ -90,10 +91,12 @@ fun OnlineSearch(
stateSaver = listSaver(SearchQuerySaver), stateSaver = listSaver(SearchQuerySaver),
key1 = textFieldValue.text key1 = textFieldValue.text
) { ) {
Database.queries("%${textFieldValue.text}%") if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) {
.flowOn(Dispatchers.IO) Database.queries("%${textFieldValue.text}%")
.distinctUntilChanged { old, new -> old.size == new.size } .flowOn(Dispatchers.IO)
.collect { value = it } .distinctUntilChanged { old, new -> old.size == new.size }
.collect { value = it }
}
} }
var suggestionsResult by rememberSaveable(stateSaver = resultSaver(autoSaver<List<String>?>())) { var suggestionsResult by rememberSaveable(stateSaver = resultSaver(autoSaver<List<String>?>())) {
@ -188,7 +191,7 @@ fun OnlineSearch(
) )
} }
if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) items( items(
items = history, items = history,
key = SearchQuery::id key = SearchQuery::id
) { searchQuery -> ) { searchQuery ->

View file

@ -35,7 +35,11 @@ import it.vfsfitvnm.vimusic.query
import it.vfsfitvnm.vimusic.service.PlayerMediaBrowserService import it.vfsfitvnm.vimusic.service.PlayerMediaBrowserService
import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.vfsfitvnm.vimusic.ui.components.themed.Header
import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance 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.Dispatchers
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
@ -77,10 +81,7 @@ fun OtherSettings() {
isIgnoringBatteryOptimizations = context.isIgnoringBatteryOptimizations isIgnoringBatteryOptimizations = context.isIgnoringBatteryOptimizations
} }
var pauseSearchHistory by rememberPreference( var pauseSearchHistory by rememberPreference(pauseSearchHistoryKey, false)
pauseSearchHistoryKey,
false
)
val queriesCount by produceSaveableState(initialValue = 0, stateSaver = autoSaver()) { val queriesCount by produceSaveableState(initialValue = 0, stateSaver = autoSaver()) {
Database.queriesCount() Database.queriesCount()
@ -113,6 +114,28 @@ fun OtherSettings() {
SettingsGroupSpacer() 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") SettingsEntryGroupText(title = "SERVICE LIFETIME")
ImportantSettingsDescription(text = "If battery optimizations are applied, the playback notification can suddenly disappear when paused.") ImportantSettingsDescription(text = "If battery optimizations are applied, the playback notification can suddenly disappear when paused.")
@ -163,25 +186,5 @@ fun OtherSettings() {
isChecked = isInvincibilityEnabled, isChecked = isInvincibilityEnabled,
onCheckedChange = { isInvincibilityEnabled = it } 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) }
)
} }
} }