feat(app): add HomeSearchFullScreen route and integrate search functionality in HomeScreen

This commit is contained in:
2026-05-02 12:23:25 +02:00
parent cff0b60b31
commit 44219d00d8
5 changed files with 28 additions and 44 deletions

View File

@@ -5,6 +5,7 @@ import hu.bbara.purefin.ui.screen.library.LibraryScreen
import hu.bbara.purefin.ui.screen.login.LoginScreen
import hu.bbara.purefin.ui.screen.AppScreen
import hu.bbara.purefin.ui.screen.episode.EpisodeScreen
import hu.bbara.purefin.ui.screen.home.components.search.HomeSearchFullScreen
import hu.bbara.purefin.ui.screen.movie.MovieScreen
import hu.bbara.purefin.ui.screen.series.SeriesScreen
@@ -12,6 +13,9 @@ fun EntryProviderScope<Route>.appRouteEntryBuilder() {
entry<Route.Home> {
AppScreen()
}
entry<Route.HomeSearchRoute> {
HomeSearchFullScreen()
}
entry<Route.MovieRoute> {
MovieScreen(movie = it.item)
}

View File

@@ -77,6 +77,7 @@ fun AppScreen(
onProfileClick = {},
onSettingsClick = {},
onLogoutClick = viewModel::logout,
onSearchClick = viewModel::openSearch,
selectedTab = selectedTab,
onTabSelected = onTabSelected,
modifier = Modifier.fillMaxSize()

View File

@@ -1,26 +1,18 @@
package hu.bbara.purefin.ui.screen.home
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import hu.bbara.purefin.ui.model.LibraryUiModel
import hu.bbara.purefin.ui.model.MediaUiModel
import hu.bbara.purefin.ui.screen.AppBottomBar
import hu.bbara.purefin.ui.screen.home.components.HomeContent
import hu.bbara.purefin.ui.screen.home.components.HomeTopBar
import hu.bbara.purefin.ui.screen.home.components.search.HomeSearchOverlay
import java.util.UUID
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeScreen(
libraries: List<LibraryUiModel>,
@@ -35,12 +27,11 @@ fun HomeScreen(
onProfileClick: () -> Unit,
onSettingsClick: () -> Unit,
onLogoutClick: () -> Unit,
onSearchClick: () -> Unit,
selectedTab: Int,
onTabSelected: (Int) -> Unit,
modifier: Modifier = Modifier
) {
var isSearchVisible by rememberSaveable { mutableStateOf(false) }
Scaffold(
modifier = modifier
.fillMaxSize(),
@@ -48,7 +39,7 @@ fun HomeScreen(
contentColor = MaterialTheme.colorScheme.onBackground,
topBar = {
HomeTopBar(
onSearchClick = { isSearchVisible = true },
onSearchClick = onSearchClick,
onProfileClick = onProfileClick,
onSettingsClick = onSettingsClick,
onLogoutClick = onLogoutClick
@@ -61,7 +52,6 @@ fun HomeScreen(
)
}
) { innerPadding ->
Box(modifier = Modifier.fillMaxSize()) {
HomeContent(
libraries = libraries,
libraryContent = libraryContent,
@@ -75,23 +65,5 @@ fun HomeScreen(
onBrowseLibrariesClick = { onTabSelected(1) },
modifier = Modifier.padding(innerPadding)
)
HomeSearchOverlay(
visible = isSearchVisible,
topPadding = innerPadding.calculateTopPadding(),
onDismiss = { isSearchVisible = false },
onMovieSelected = {
isSearchVisible = false
//TODO use MediaUiModel as well
//onMovieSelected(it)
},
onSeriesSelected = {
isSearchVisible = false
//onSeriesSelected(it)
},
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
)
}
}
}

View File

@@ -251,6 +251,10 @@ class AppViewModel @Inject constructor(
}
}
fun openSearch() {
navigationManager.navigate(Route.HomeSearchRoute)
}
fun logout() {
viewModelScope.launch {
userSessionRepository.setLoggedIn(false)

View File

@@ -8,6 +8,9 @@ sealed interface Route : NavKey {
@Serializable
data object Home : Route
@Serializable
data object HomeSearchRoute : Route
@Serializable
data class MovieRoute(val item: MovieDto) : Route