From cb2123de17d98183f074039b485bef902722895d Mon Sep 17 00:00:00 2001 From: knighthat Date: Sun, 29 Sep 2024 18:04:51 -0500 Subject: [PATCH] #3779 --- .../kotlin/it/fast4x/rimusic/ui/screens/AppNavigation.kt | 6 ++++-- .../ui/screens/searchresult/SearchResultScreen.kt | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/AppNavigation.kt b/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/AppNavigation.kt index a9be01a71..e46a8e8cb 100644 --- a/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/AppNavigation.kt +++ b/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/AppNavigation.kt @@ -79,6 +79,8 @@ import it.fast4x.rimusic.utils.preferences import it.fast4x.rimusic.utils.rememberPreference import it.fast4x.rimusic.utils.thumbnailRoundnessKey import it.fast4x.rimusic.utils.transitionEffectKey +import java.net.URLEncoder +import java.nio.charset.StandardCharsets @androidx.annotation.OptIn(UnstableApi::class) @OptIn(ExperimentalFoundationApi::class, ExperimentalAnimationApi::class, @@ -380,7 +382,8 @@ fun AppNavigation( onViewPlaylist = {}, //pop = popDestination, onSearch = { query -> - navController.navigate(route = "${NavRoutes.searchResults.name}/$query") + val uriSafe = URLEncoder.encode( query, StandardCharsets.UTF_8.toString() ) + navController.navigate(route = "${NavRoutes.searchResults.name}/$uriSafe") if (!context.preferences.getBoolean(pauseSearchHistoryKey, false)) { it.fast4x.rimusic.query { @@ -402,7 +405,6 @@ fun AppNavigation( ) ) { navBackStackEntry -> val query = navBackStackEntry.arguments?.getString("query") ?: "" - SearchResultScreen( navController = navController, playerEssential = playerEssential, diff --git a/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/searchresult/SearchResultScreen.kt b/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/searchresult/SearchResultScreen.kt index c7f4d014e..d2842bd05 100644 --- a/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/searchresult/SearchResultScreen.kt +++ b/composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/searchresult/SearchResultScreen.kt @@ -38,6 +38,7 @@ import it.fast4x.innertube.requests.albumPage import it.fast4x.innertube.requests.searchPage import it.fast4x.innertube.utils.from import it.fast4x.rimusic.Database +import it.fast4x.rimusic.EXPLICIT_PREFIX import it.fast4x.rimusic.LocalPlayerServiceBinder import it.fast4x.rimusic.R import it.fast4x.rimusic.enums.NavRoutes @@ -56,7 +57,6 @@ import it.fast4x.rimusic.ui.items.AlbumItem import it.fast4x.rimusic.ui.items.AlbumItemPlaceholder import it.fast4x.rimusic.ui.items.ArtistItem import it.fast4x.rimusic.ui.items.ArtistItemPlaceholder -import it.fast4x.rimusic.EXPLICIT_PREFIX import it.fast4x.rimusic.ui.items.PlaylistItem import it.fast4x.rimusic.ui.items.PlaylistItemPlaceholder import it.fast4x.rimusic.ui.items.SongItem @@ -86,6 +86,8 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import me.knighthat.uiType +import java.net.URLDecoder +import java.nio.charset.StandardCharsets @ExperimentalMaterialApi @ExperimentalTextApi @@ -98,7 +100,8 @@ import me.knighthat.uiType fun SearchResultScreen( navController: NavController, playerEssential: @Composable () -> Unit = {}, - query: String, onSearchAgain: () -> Unit + query: String, + onSearchAgain: () -> Unit ) { val context = LocalContext.current val binder = LocalPlayerServiceBinder.current @@ -122,7 +125,7 @@ fun SearchResultScreen( host { val headerContent: @Composable (textButton: (@Composable () -> Unit)?) -> Unit = { Header( - title = query, + title = URLDecoder.decode( query, StandardCharsets.UTF_8.toString() ), modifier = Modifier .pointerInput(Unit) { detectTapGestures {