mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
feat(app): add HomeSearchFullScreen route and integrate search functionality in HomeScreen
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ fun AppScreen(
|
||||
onProfileClick = {},
|
||||
onSettingsClick = {},
|
||||
onLogoutClick = viewModel::logout,
|
||||
onSearchClick = viewModel::openSearch,
|
||||
selectedTab = selectedTab,
|
||||
onTabSelected = onTabSelected,
|
||||
modifier = Modifier.fillMaxSize()
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -251,6 +251,10 @@ class AppViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun openSearch() {
|
||||
navigationManager.navigate(Route.HomeSearchRoute)
|
||||
}
|
||||
|
||||
fun logout() {
|
||||
viewModelScope.launch {
|
||||
userSessionRepository.setLoggedIn(false)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user