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.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("") }
|
||||||
|
|
|
@ -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 ->
|
||||||
|
|
|
@ -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) }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue