diff --git a/app/src/main/java/com/london/app/navigation/graph/mainNavGraph.kt b/app/src/main/java/com/london/app/navigation/graph/mainNavGraph.kt index ce5d1a5c0..3c1efa79d 100644 --- a/app/src/main/java/com/london/app/navigation/graph/mainNavGraph.kt +++ b/app/src/main/java/com/london/app/navigation/graph/mainNavGraph.kt @@ -46,8 +46,8 @@ import com.london.presentation.feature.home.toprated.TopRatedScreen import com.london.presentation.feature.home.trending.actor.TrendingActorsScreen import com.london.presentation.feature.home.trending.movie.TrendingMoviesScreen import com.london.presentation.feature.home.trending.tvshow.TrendingTvShowsScreen -import com.london.presentation.feature.list.savedlist.ListScreen -import com.london.presentation.feature.list.viewitems.ViewListItemsScreen +import com.london.presentation.feature.list.savedlist.ListsScreen +import com.london.presentation.feature.list.details.MovieListDetailsScreen import com.london.presentation.feature.reviews.ReviewsScreen import com.london.presentation.feature.search.SearchScreen import com.london.presentation.navigation.Screen.Account @@ -170,13 +170,13 @@ private fun NavGraphBuilder.continueWatchingNavGraph(navController: NavHostContr private fun NavGraphBuilder.onListNavGraph(navController: NavHostController) = with(navController) { appComposable { - ListScreen( + ListsScreen( onNavigateToListDetails = ::navigateToListDetails, onNavigateToLogin = { navigateToLogin(source = Lists()) }, ) } appComposable { - ViewListItemsScreen( + MovieListDetailsScreen( onNavigateBack = ::navigateUp, onNavigateToMovieDetails = ::navigateToMovieDetails, ) diff --git a/presentation/src/main/java/com/london/presentation/shared/BackgroundGradient.kt b/designSystem/src/main/java/com/london/designsystem/component/BackgroundGradient.kt similarity index 97% rename from presentation/src/main/java/com/london/presentation/shared/BackgroundGradient.kt rename to designSystem/src/main/java/com/london/designsystem/component/BackgroundGradient.kt index d72b1f346..e5884ac4d 100644 --- a/presentation/src/main/java/com/london/presentation/shared/BackgroundGradient.kt +++ b/designSystem/src/main/java/com/london/designsystem/component/BackgroundGradient.kt @@ -1,4 +1,4 @@ -package com.london.presentation.shared +package com.london.designsystem.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box diff --git a/designSystem/src/main/java/com/london/designsystem/component/EmptyLayout.kt b/designSystem/src/main/java/com/london/designsystem/component/EmptyLayout.kt index 42459d685..0c02b0851 100644 --- a/designSystem/src/main/java/com/london/designsystem/component/EmptyLayout.kt +++ b/designSystem/src/main/java/com/london/designsystem/component/EmptyLayout.kt @@ -4,6 +4,7 @@ import androidx.annotation.DrawableRes import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement.Center +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth @@ -11,6 +12,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale @@ -25,31 +27,38 @@ fun EmptyLayout( modifier: Modifier = Modifier, @DrawableRes image: Int? = null ) { - Column( - modifier = modifier - .fillMaxSize() - .background(NovixTheme.colors.surface), - horizontalAlignment = CenterHorizontally, - verticalArrangement = Center - ) { - image?.let { - Image( - painter = painterResource(id = it), - contentDescription = "Search Icon", - modifier = Modifier - .size(128.dp) - .align(CenterHorizontally), - contentScale = ContentScale.Fit + Box { + BackgroundGradient( + modifier = Modifier + .align(Alignment.TopStart) + ) + + Column( + modifier = modifier + .fillMaxSize() + .background(NovixTheme.colors.surface), + horizontalAlignment = CenterHorizontally, + verticalArrangement = Center + ) { + image?.let { + Image( + painter = painterResource(id = it), + contentDescription = "Search Icon", + modifier = Modifier + .size(128.dp) + .align(CenterHorizontally), + contentScale = ContentScale.Fit + ) + } + + Text( + text = text, + style = NovixTheme.typography.body.small, + color = NovixTheme.colors.body, + textAlign = TextAlign.Center, + modifier = Modifier.fillMaxWidth() ) } - - Text( - text = text, - style = NovixTheme.typography.body.small, - color = NovixTheme.colors.body, - textAlign = TextAlign.Center, - modifier = Modifier.fillMaxWidth() - ) } } @@ -60,23 +69,30 @@ fun EmptyLayout( imageContent: (@Composable () -> Unit)? = null, additionalContent: (@Composable () -> Unit)? = null ) { - Column( - modifier = modifier - .fillMaxWidth() - .background(NovixTheme.colors.surface), - horizontalAlignment = CenterHorizontally, - verticalArrangement = Center - ) { - imageContent?.let { it() } - - Text( - text = text, - style = NovixTheme.typography.body.small, - color = NovixTheme.colors.body, - textAlign = TextAlign.Center, - modifier = Modifier.padding(horizontal = 48.dp, vertical = 12.dp) + Box { + BackgroundGradient( + modifier = Modifier + .align(Alignment.TopStart) ) - additionalContent?.let { it() } + Column( + modifier = modifier + .fillMaxWidth() + .background(NovixTheme.colors.surface), + horizontalAlignment = CenterHorizontally, + verticalArrangement = Center + ) { + imageContent?.invoke() + + Text( + text = text, + style = NovixTheme.typography.body.small, + color = NovixTheme.colors.body, + textAlign = TextAlign.Center, + modifier = Modifier.padding(horizontal = 48.dp, vertical = 12.dp) + ) + + additionalContent?.invoke() + } } } diff --git a/presentation/src/main/java/com/london/presentation/feature/account/AccountScreen.kt b/presentation/src/main/java/com/london/presentation/feature/account/AccountScreen.kt index e67a9282e..ee250fcb0 100644 --- a/presentation/src/main/java/com/london/presentation/feature/account/AccountScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/account/AccountScreen.kt @@ -23,7 +23,7 @@ import com.london.presentation.feature.account.bottomsheet.LanguageBottomSheet import com.london.presentation.feature.account.bottomsheet.LogoutBottomSheet import com.london.presentation.feature.account.components.LoggedInContent import com.london.presentation.feature.account.components.NotLoggedInContent -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.utils.Listen import com.london.presentation.utils.navBarBottomPadding diff --git a/presentation/src/main/java/com/london/presentation/feature/account/rating/MyRatingScreen.kt b/presentation/src/main/java/com/london/presentation/feature/account/rating/MyRatingScreen.kt index 28d796d5b..338f4e25c 100644 --- a/presentation/src/main/java/com/london/presentation/feature/account/rating/MyRatingScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/account/rating/MyRatingScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.london.designsystem.component.BackgroundGradient import com.london.designsystem.component.NovixChip import com.london.designsystem.component.TopBar import com.london.designsystem.snackbar.SnackBarData @@ -28,7 +29,6 @@ import com.london.designsystem.theme.ThemePreviews import com.london.designsystem.utils.string import com.london.domain.entity.shared.MediaType import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid diff --git a/presentation/src/main/java/com/london/presentation/feature/authentication/login/LoginScreen.kt b/presentation/src/main/java/com/london/presentation/feature/authentication/login/LoginScreen.kt index fca756035..a50c4bbb3 100644 --- a/presentation/src/main/java/com/london/presentation/feature/authentication/login/LoginScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/authentication/login/LoginScreen.kt @@ -31,6 +31,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.london.designsystem.component.BackgroundGradient import com.london.designsystem.component.Icon import com.london.designsystem.component.OutlinedTextField import com.london.designsystem.component.Text @@ -42,7 +43,6 @@ import com.london.designsystem.snackbar.rememberSnackBarController import com.london.designsystem.theme.NovixTheme import com.london.designsystem.utils.string import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.utils.Listen import com.london.designsystem.R as dsR diff --git a/presentation/src/main/java/com/london/presentation/feature/category/main/CategoriesScreen.kt b/presentation/src/main/java/com/london/presentation/feature/category/main/CategoriesScreen.kt index c6260235f..e1a3c8393 100644 --- a/presentation/src/main/java/com/london/presentation/feature/category/main/CategoriesScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/category/main/CategoriesScreen.kt @@ -32,7 +32,7 @@ import com.london.designsystem.component.TopBar import com.london.designsystem.theme.ThemePreviews import com.london.designsystem.utils.string import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.MediaCategory import com.london.presentation.shared.genre.MovieGenreUi import com.london.presentation.shared.genre.TvShowGenreUi diff --git a/presentation/src/main/java/com/london/presentation/feature/category/movie/MovieCategoryScreen.kt b/presentation/src/main/java/com/london/presentation/feature/category/movie/MovieCategoryScreen.kt index 3a0c7b8dc..0d0f08e9c 100644 --- a/presentation/src/main/java/com/london/presentation/feature/category/movie/MovieCategoryScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/category/movie/MovieCategoryScreen.kt @@ -19,7 +19,7 @@ import androidx.paging.compose.collectAsLazyPagingItems import com.london.designsystem.component.TopBar import com.london.designsystem.theme.ThemePreviews import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid diff --git a/presentation/src/main/java/com/london/presentation/feature/category/tvshow/TvShowCategoryScreen.kt b/presentation/src/main/java/com/london/presentation/feature/category/tvshow/TvShowCategoryScreen.kt index 2831224bb..6f8f57359 100644 --- a/presentation/src/main/java/com/london/presentation/feature/category/tvshow/TvShowCategoryScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/category/tvshow/TvShowCategoryScreen.kt @@ -19,7 +19,7 @@ import androidx.paging.compose.collectAsLazyPagingItems import com.london.designsystem.component.TopBar import com.london.designsystem.theme.ThemePreviews import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid import com.london.presentation.utils.Listen diff --git a/presentation/src/main/java/com/london/presentation/feature/details/actor/ActorDetailsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/actor/ActorDetailsScreen.kt index 6dd35adb6..7cf22fb54 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/actor/ActorDetailsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/actor/ActorDetailsScreen.kt @@ -52,7 +52,7 @@ import com.london.designsystem.component.button.ErrorImage import com.london.designsystem.theme.NovixTheme import com.london.domain.entity.actor.ActorMediaItems import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.CustomBackDropImagePager import com.london.presentation.shared.HomeCard import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet diff --git a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/gallery/ActorsGalleryScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/gallery/ActorsGalleryScreen.kt index 128fde706..2f8d5643d 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/gallery/ActorsGalleryScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/gallery/ActorsGalleryScreen.kt @@ -30,7 +30,7 @@ import com.london.designsystem.component.TopBar import com.london.designsystem.component.button.ErrorImage import com.london.designsystem.theme.NovixTheme import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.item.ImageView import com.london.presentation.utils.Listen diff --git a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/topmoviespicks/TopMoviesPicksScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/topmoviespicks/TopMoviesPicksScreen.kt index 9a77121ca..281d7bea4 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/topmoviespicks/TopMoviesPicksScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/topmoviespicks/TopMoviesPicksScreen.kt @@ -15,7 +15,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.london.designsystem.component.TopBar import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet import com.london.presentation.shared.buildscreen.BuildScreen diff --git a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/toptvshowspicks/TopTvShowsPicksScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/toptvshowspicks/TopTvShowsPicksScreen.kt index 226b42681..a08b0ec9c 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/actor/info/toptvshowspicks/TopTvShowsPicksScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/actor/info/toptvshowspicks/TopTvShowsPicksScreen.kt @@ -15,7 +15,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.london.designsystem.component.TopBar import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid diff --git a/presentation/src/main/java/com/london/presentation/feature/details/movie/MovieDetailsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/movie/MovieDetailsScreen.kt index e8f76a237..7fcdb1db4 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/movie/MovieDetailsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/movie/MovieDetailsScreen.kt @@ -67,7 +67,7 @@ import com.london.presentation.R.drawable import com.london.presentation.R.string.more_like_this import com.london.presentation.R.string.overview import com.london.presentation.R.string.view_reviews -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.CustomBackDropImagePager import com.london.presentation.shared.HomeCard import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet diff --git a/presentation/src/main/java/com/london/presentation/feature/details/tvshow/episode/EpisodeDetailScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/tvshow/episode/EpisodeDetailScreen.kt index 47bc76ca7..f4de38cd1 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/tvshow/episode/EpisodeDetailScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/tvshow/episode/EpisodeDetailScreen.kt @@ -48,7 +48,7 @@ import com.london.designsystem.snackbar.rememberSnackBarController import com.london.designsystem.theme.NovixTheme import com.london.designsystem.utils.string import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.CustomBackDropImagePager import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen diff --git a/presentation/src/main/java/com/london/presentation/feature/details/tvshow/info/TvShowDetailScreen.kt b/presentation/src/main/java/com/london/presentation/feature/details/tvshow/info/TvShowDetailScreen.kt index 63cd8e62f..b49c2ea09 100644 --- a/presentation/src/main/java/com/london/presentation/feature/details/tvshow/info/TvShowDetailScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/details/tvshow/info/TvShowDetailScreen.kt @@ -66,7 +66,7 @@ import com.london.designsystem.utils.string import com.london.domain.entity.shared.MediaType import com.london.domain.entity.tvshow.cast.TvShowCastMember import com.london.domain.entity.tvshow.episode.Episodes -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.CustomBackDropImagePager import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen diff --git a/presentation/src/main/java/com/london/presentation/feature/home/HomeScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/HomeScreen.kt index ac5f1b0df..41010bb24 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/HomeScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/HomeScreen.kt @@ -53,7 +53,7 @@ import com.london.presentation.feature.home.trending.TrendingSection import com.london.presentation.feature.home.upcoming.UpcomingMovieItem import com.london.presentation.feature.home.upcoming.UpcomingSectionTitle import com.london.presentation.feature.home.upcoming.UpcomingStickyHeader -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet import com.london.presentation.shared.buildscreen.NetworkErrorScreen import com.london.presentation.shared.shimmer.CarousalShimmerEffect diff --git a/presentation/src/main/java/com/london/presentation/feature/home/continuewatching/ContinueWatchingScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/continuewatching/ContinueWatchingScreen.kt index 05806cd0b..30aa0817b 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/continuewatching/ContinueWatchingScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/continuewatching/ContinueWatchingScreen.kt @@ -4,15 +4,12 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.navigationBarsPadding -import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle @@ -20,7 +17,7 @@ import com.london.designsystem.component.TopBar import com.london.designsystem.theme.NovixTheme import com.london.domain.entity.movie.Movie import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.MediaCategory import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet diff --git a/presentation/src/main/java/com/london/presentation/feature/home/toprated/TopRatedScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/toprated/TopRatedScreen.kt index f522e02a3..981c1a48b 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/toprated/TopRatedScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/toprated/TopRatedScreen.kt @@ -34,7 +34,7 @@ import com.london.designsystem.component.TabLayout import com.london.designsystem.component.TopBar import com.london.designsystem.theme.NovixTheme import com.london.designsystem.utils.string -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.HomeCard import com.london.presentation.shared.MediaCategory import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet diff --git a/presentation/src/main/java/com/london/presentation/feature/home/trending/actor/TrendingActorsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/trending/actor/TrendingActorsScreen.kt index 3843eb0f4..74c65513e 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/trending/actor/TrendingActorsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/trending/actor/TrendingActorsScreen.kt @@ -19,7 +19,7 @@ import androidx.paging.compose.collectAsLazyPagingItems import com.london.designsystem.component.TopBar import com.london.designsystem.theme.NovixTheme import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.ActorLazyVerticalColumn import com.london.presentation.utils.Listen diff --git a/presentation/src/main/java/com/london/presentation/feature/home/trending/movie/TrendingMoviesScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/trending/movie/TrendingMoviesScreen.kt index b46a50ecd..aa08457e9 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/trending/movie/TrendingMoviesScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/trending/movie/TrendingMoviesScreen.kt @@ -24,7 +24,7 @@ import androidx.paging.compose.collectAsLazyPagingItems import com.london.designsystem.component.TopBar import com.london.designsystem.theme.NovixTheme import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid diff --git a/presentation/src/main/java/com/london/presentation/feature/home/trending/tvshow/TrendingTvShowsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/home/trending/tvshow/TrendingTvShowsScreen.kt index 111ccca91..2c13a76ec 100644 --- a/presentation/src/main/java/com/london/presentation/feature/home/trending/tvshow/TrendingTvShowsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/home/trending/tvshow/TrendingTvShowsScreen.kt @@ -24,7 +24,7 @@ import androidx.paging.compose.collectAsLazyPagingItems import com.london.designsystem.component.TopBar import com.london.designsystem.theme.NovixTheme import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid import com.london.presentation.shared.genre.GenresSection diff --git a/presentation/src/main/java/com/london/presentation/feature/list/bottomsheets/DeleteListBottomSheet.kt b/presentation/src/main/java/com/london/presentation/feature/list/bottomsheets/DeleteListBottomSheet.kt index 79ae15c04..ec3f806d0 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/bottomsheets/DeleteListBottomSheet.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/bottomsheets/DeleteListBottomSheet.kt @@ -30,13 +30,13 @@ import com.london.designsystem.theme.NovixTheme import com.london.designsystem.utils.painter import com.london.designsystem.utils.string import com.london.presentation.R -import com.london.presentation.feature.list.viewitems.ViewListItemsContract +import com.london.presentation.feature.list.details.MovieListDetailsContract import kotlinx.coroutines.launch @Composable fun DeleteListBottomSheet( isSheetVisible: Boolean, - contract: ViewListItemsContract, + contract: MovieListDetailsContract, modifier: Modifier = Modifier, sheetState: SheetState = rememberModalBottomSheetState(), ) { diff --git a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsContract.kt b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsContract.kt similarity index 77% rename from presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsContract.kt rename to presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsContract.kt index 6cbbaf74c..a4e807561 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsContract.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsContract.kt @@ -1,6 +1,6 @@ -package com.london.presentation.feature.list.viewitems +package com.london.presentation.feature.list.details -interface ViewListItemsContract { +interface MovieListDetailsContract { fun onBackClick() fun onRetryClick() fun onDeleteClick() diff --git a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsScreen.kt similarity index 91% rename from presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsScreen.kt rename to presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsScreen.kt index 5ebb9e9e7..ae6a5655f 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsScreen.kt @@ -1,4 +1,4 @@ -package com.london.presentation.feature.list.viewitems +package com.london.presentation.feature.list.details import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -23,25 +23,25 @@ import com.london.designsystem.theme.ThemePreviews import com.london.designsystem.utils.string import com.london.presentation.R import com.london.presentation.feature.list.bottomsheets.DeleteListBottomSheet -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.container.MediaLazyVerticalGrid import com.london.presentation.utils.Listen @Composable -fun ViewListItemsScreen( +fun MovieListDetailsScreen( onNavigateBack: () -> Unit, onNavigateToMovieDetails: (Int) -> Unit, - viewModel: ViewItemsViewModel = hiltViewModel() + viewModel: MovieListDetailsViewModel = hiltViewModel() ) { val state by viewModel.state.collectAsStateWithLifecycle() val effect by viewModel.effect.collectAsState(null) effect?.Listen { currentEffect -> when (currentEffect) { - ViewItemsEffect.NavigateBack -> onNavigateBack() - is ViewItemsEffect.NavigationMovieDetails -> + MovieListEffect.NavigateBack -> onNavigateBack() + is MovieListEffect.NavigationMovieDetails -> onNavigateToMovieDetails(currentEffect.id) } } @@ -54,8 +54,8 @@ fun ViewListItemsScreen( @Composable private fun Content( - state: ViewItemsUiState, - contract: ViewListItemsContract, + state: MovieListUiState, + contract: MovieListDetailsContract, ) { val listItems = state.listItems.collectAsLazyPagingItems() val snackBarController = rememberSnackBarController() @@ -148,8 +148,8 @@ private fun Content( private fun Preview() { NovixTheme { Content( - state = ViewItemsUiState(), - contract = object : ViewListItemsContract { + state = MovieListUiState(), + contract = object : MovieListDetailsContract { override fun onBackClick() {} override fun onRetryClick() {} override fun onDeleteClick() {} diff --git a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsViewModel.kt b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsViewModel.kt similarity index 89% rename from presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsViewModel.kt rename to presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsViewModel.kt index cde1f0a1c..e523a283e 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsViewModel.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListDetailsViewModel.kt @@ -1,4 +1,4 @@ -package com.london.presentation.feature.list.viewitems +package com.london.presentation.feature.list.details import androidx.lifecycle.SavedStateHandle import androidx.paging.PagingData @@ -15,13 +15,13 @@ import kotlinx.coroutines.flow.Flow import javax.inject.Inject @HiltViewModel -class ViewItemsViewModel @Inject constructor( +class MovieListDetailsViewModel @Inject constructor( savedStateHandle: SavedStateHandle, private val manageGetMovieUseCase: ManageGetMovieUseCase, private val manageMovieListUseCase: ManageMovieListUseCase, private val getMovieListNameUseCase: GetMovieListNameUseCase -) : BaseViewModel(ViewItemsUiState()), - ViewListItemsContract { +) : BaseViewModel(MovieListUiState()), + MovieListDetailsContract { private val args = savedStateHandle.getArgs() private val listId = args?.listId ?: 0 @@ -36,7 +36,7 @@ class ViewItemsViewModel @Inject constructor( } override fun onBackClick() { - emitEffect(ViewItemsEffect.NavigateBack) + emitEffect(MovieListEffect.NavigateBack) } override fun onRetryClick() { @@ -44,9 +44,8 @@ class ViewItemsViewModel @Inject constructor( fetchMovieListDetails(listId) } - override fun onDeleteClick() { - updateState { copy(isDeleteBottomSheetVisible = true) } - } + override fun onDeleteClick() = updateState { copy(isDeleteBottomSheetVisible = true) } + override fun onConfirmDelete() { tryToExecute( @@ -55,7 +54,7 @@ class ViewItemsViewModel @Inject constructor( onCompleted = { updateState { copy(isDeleteBottomSheetVisible = false) } }, onError = { updateState { copy(isSnackBarErrorVisible = true, error = it) } }, onSuccess = { - emitEffect(ViewItemsEffect.NavigateBack) + emitEffect(MovieListEffect.NavigateBack) updateState { copy(isListSnackBarSuccess = true) } } ) @@ -63,7 +62,7 @@ class ViewItemsViewModel @Inject constructor( override fun onMovieClick(id: Int) { resetSnackBarsState() - emitEffect(ViewItemsEffect.NavigationMovieDetails(id)) + emitEffect(MovieListEffect.NavigationMovieDetails(id)) } override fun onRemoveMovieClick(id: Int) { diff --git a/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListEffect.kt b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListEffect.kt new file mode 100644 index 000000000..154d4ba39 --- /dev/null +++ b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListEffect.kt @@ -0,0 +1,6 @@ +package com.london.presentation.feature.list.details + +interface MovieListEffect { + object NavigateBack : MovieListEffect + data class NavigationMovieDetails(val id: Int) : MovieListEffect +} diff --git a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsUiState.kt b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListUiState.kt similarity index 87% rename from presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsUiState.kt rename to presentation/src/main/java/com/london/presentation/feature/list/details/MovieListUiState.kt index 612379494..b18295255 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsUiState.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/details/MovieListUiState.kt @@ -1,4 +1,4 @@ -package com.london.presentation.feature.list.viewitems +package com.london.presentation.feature.list.details import androidx.paging.PagingData import com.london.domain.entity.movie.Movie @@ -6,7 +6,7 @@ import com.london.presentation.shared.base.ErrorState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow -data class ViewItemsUiState( +data class MovieListUiState( val listTitle: String = "", val error: ErrorState? = null, val isLoading: Boolean = false, diff --git a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListUiState.kt b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListUiState.kt index e6101cf60..f8c16a82d 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListUiState.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListUiState.kt @@ -12,6 +12,7 @@ data class ListUiState( val error: ErrorState? = null, val isLoading: Boolean = false, val isSnackBarSuccessVisible: Boolean = false, + val isSnackBarErrorVisible: Boolean = false, val items: Flow> = flow {}, val addListSheetState: AddSheetState = AddSheetState(), ) diff --git a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListViewModel.kt b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListViewModel.kt index e1a23572a..02377e28c 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListViewModel.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListViewModel.kt @@ -10,6 +10,7 @@ import com.london.domain.usecase.movielist.ManageMovieListUseCase import com.london.presentation.navigation.Screen import com.london.presentation.navigation.getArgs import com.london.presentation.shared.base.BaseViewModel +import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.base.createPagingSourceFlow import dagger.hilt.android.lifecycle.HiltViewModel import jakarta.inject.Inject @@ -33,9 +34,7 @@ class ListViewModel @Inject constructor( setAddListSheetVisible(args?.createList ?: false) } - override fun onRetry() = - fetchSavedLists() - + override fun onRetry() = fetchSavedLists() override fun onFabClick() = setAddListSheetVisible(true) @@ -49,28 +48,35 @@ class ListViewModel @Inject constructor( override fun onListNameChanged(listName: TextFieldValue) = updateState { copy(addListSheetState = addListSheetState.copy(listName = listName)) } - override fun resetSnackBarErrorState() = updateState { copy(error = null) } + override fun resetSnackBarErrorState() = updateState { copy(isSnackBarErrorVisible = false) } override fun resetSnackBarSuccessState() = updateState { copy(isSnackBarSuccessVisible = false) } override fun onAddList(listName: String) { tryToExecute( - onStart = { updateState { copy(isSnackBarSuccessVisible = false, isLoading = true) } }, + onStart = { updateState { copy(isLoading = true) } }, block = { manageMovieListUseCase.createMovieList(listName) }, - onError = { updateState { copy(error = it, isLoading = false) } }, + onError = { error -> handleAddListFail(error) }, onSuccess = { handleAddListSuccess() } ) } + private fun handleAddListFail(error: ErrorState) { + updateState { + copy( + error = error, + isLoading = false, + isSnackBarErrorVisible = true + ) + } + } + private fun handleAddListSuccess() { - setAddListSheetVisible(false) updateState { copy( isSnackBarSuccessVisible = true, isLoading = false, - addListSheetState = addListSheetState.copy( - listName = TextFieldValue(""), - ) + addListSheetState = AddSheetState() ) } fetchSavedLists() @@ -87,11 +93,7 @@ class ListViewModel @Inject constructor( } private fun createListsPagingSource(): Flow> = - createPagingSourceFlow { _, pageNumber -> - manageGetMovieUseCase.getAllMovieLists( - pageNumber - ) - } + createPagingSourceFlow { _, pageNumber -> manageGetMovieUseCase.getAllMovieLists(pageNumber) } private fun checkUserLoginStatus(onResult: (Boolean) -> Unit = {}) { tryToExecute( diff --git a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListScreen.kt b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListsScreen.kt similarity index 70% rename from presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListScreen.kt rename to presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListsScreen.kt index aeb9dd9fb..fc8cbfec7 100644 --- a/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/list/savedlist/ListsScreen.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxScope +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize @@ -16,6 +17,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll @@ -30,12 +32,12 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.scale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.paging.compose.collectAsLazyPagingItems +import com.london.designsystem.component.BackgroundGradient import com.london.designsystem.component.EmptyLayout import com.london.designsystem.component.Icon import com.london.designsystem.component.Text @@ -46,13 +48,11 @@ import com.london.designsystem.snackbar.SnackBarData import com.london.designsystem.snackbar.SnackBarType import com.london.designsystem.snackbar.rememberSnackBarController import com.london.designsystem.theme.NovixTheme -import com.london.designsystem.theme.ThemePreviews import com.london.designsystem.utils.painter import com.london.designsystem.utils.string import com.london.domain.entity.movie.MovieList import com.london.presentation.R import com.london.presentation.feature.list.bottomsheets.AddListBottomSheet -import com.london.presentation.shared.BackgroundGradient import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.utils.Listen @@ -60,7 +60,7 @@ import com.london.presentation.utils.navBarBottomPadding import com.london.presentation.utils.toLocalizedNumbers @Composable -fun ListScreen( +fun ListsScreen( onNavigateToLogin: () -> Unit, onNavigateToListDetails: (Int) -> Unit, viewModel: ListViewModel = hiltViewModel() @@ -101,7 +101,7 @@ private fun Content( isError = state.error is ErrorState.NoInternet, pagingFlow = pagingItems, isGuest = state.isGuest, - guestContent = { NoListFoundAsGuest(onLoginClick = contract::onLoginClick) }, + guestContent = { GuestContent(onLoginClick = contract::onLoginClick) }, emptyContent = { EmptyList( contract = contract, @@ -116,25 +116,22 @@ private fun Content( .align(Alignment.TopStart) ) - LazyColumn( - modifier = Modifier.fillMaxSize(), - verticalArrangement = Arrangement.spacedBy(8.dp), - contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp) + Column( + modifier = Modifier.padding(horizontal = 16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) ) { + TopBar( + title = stringResource(R.string.my_saved_lists), + modifier = Modifier.padding(vertical = 12.dp) + ) - stickyHeader { - TopBar( - title = stringResource(R.string.my_saved_lists), - modifier = Modifier.padding(vertical = 12.dp) - ) - } - items(pagingItems.itemCount) { index -> - val item = pagingItems[index] - item?.let { - SavedListItemRow( - itemUi = item, - onCountClick = contract::onListClick - ) + LazyColumn( + modifier = Modifier.fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(8.dp), + contentPadding = PaddingValues(vertical = 8.dp) + ) { + items(pagingItems.itemSnapshotList) { item -> + item?.let { MovieListCard(movieList = item, onListClick = contract::onListClick) } } } } @@ -146,7 +143,7 @@ private fun Content( addListSheetState = state.addListSheetState ) - if (state.error != null) { + if (state.isSnackBarErrorVisible) { snackBarController.showSnackBar( SnackBarData( message = R.string.list_add_fail.string, @@ -169,17 +166,6 @@ private fun Content( } } -@Composable -private fun ScreenScaffold( - onFabClick: (() -> Unit)? = null, - content: @Composable () -> Unit, -) { - Box(modifier = Modifier.fillMaxSize()) { - content() - onFabClick?.let { ListFAB(onFabClick) } - } -} - @Composable fun BoxScope.ListFAB( onFabClick: () -> Unit @@ -196,15 +182,15 @@ fun BoxScope.ListFAB( } @Composable -private fun SavedListItemRow( - itemUi: MovieList, - onCountClick: (Int) -> Unit +private fun MovieListCard( + movieList: MovieList, + onListClick: (Int) -> Unit ) { Row( modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(12.dp)) - .clickable { onCountClick(itemUi.id) } + .clickable { onListClick(movieList.id) } .background(NovixTheme.colors.surface) .border( width = 1.dp, @@ -215,23 +201,18 @@ private fun SavedListItemRow( .zIndex(2f) ) { Text( - text = itemUi.name, + text = movieList.name, style = NovixTheme.typography.title.medium, color = NovixTheme.colors.title, maxLines = 1, - modifier = Modifier - .weight(1f) - ) - ItemCount( - itemUi = itemUi, + modifier = Modifier.weight(1f) ) + ItemCount(count = movieList.moviesCount) } } @Composable -private fun ItemCount( - itemUi: MovieList, -) { +private fun ItemCount(count: Int) { Row( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp), @@ -241,7 +222,7 @@ private fun ItemCount( .padding(horizontal = 8.dp, vertical = 4.dp) ) { Text( - text = itemUi.moviesCount.toLocalizedNumbers(), + text = count.toLocalizedNumbers(), style = NovixTheme.typography.label.small, color = NovixTheme.colors.primary, ) @@ -258,62 +239,65 @@ private fun EmptyList( contract: ListContract, addListSheetState: AddSheetState ) { - ScreenScaffold( - onFabClick = contract::onFabClick - ) { - Box( - modifier = Modifier - .fillMaxSize() - .verticalScroll(rememberScrollState()) - ) { - EmptyLayout( - modifier = Modifier - .padding(horizontal = 16.dp) - .align(Alignment.Center), - text = stringResource(R.string.no_lists), - imageContent = { - BlurredImage(imageId = R.drawable.ic_no_saved_list_yet) - }, - ) - } + Box(modifier = Modifier.fillMaxSize()) { + TopBar( + title = R.string.my_saved_lists.string, + modifier = Modifier.padding(vertical = 12.dp, horizontal = 16.dp) + ) - AddListBottomSheet( - addListInteractions = contract, - addListSheetState = addListSheetState + EmptyLayout( + modifier = Modifier + .padding(horizontal = 16.dp) + .align(Alignment.Center) + .verticalScroll(rememberScrollState()), + text = stringResource(R.string.list_empty), + imageContent = { + BlurredImage(imageId = R.drawable.ic_no_saved_list_yet) + }, ) + + ListFAB(contract::onFabClick) } + + AddListBottomSheet( + addListInteractions = contract, + addListSheetState = addListSheetState + ) } @Composable -private fun NoListFoundAsGuest( +private fun GuestContent( onLoginClick: () -> Unit, modifier: Modifier = Modifier ) { - ScreenScaffold { - Box( - modifier = Modifier.fillMaxSize() - ) { - EmptyLayout( - modifier = modifier - .padding(horizontal = 16.dp) - .align(Alignment.Center), - text = stringResource(R.string.login_to_create_list), - imageContent = { - BlurredImage(imageId = R.drawable.ic_no_saved_list_as_guest) - }, - additionalContent = { - OutlineButton( - text = stringResource(R.string.login), - hasLabel = true, - icon = null, - hasIcon = false, - isLoading = false, - onClick = onLoginClick, - modifier = Modifier.padding(top = 16.dp) - ) - } - ) - } + Box( + modifier = Modifier.fillMaxSize() + ) { + TopBar( + title = R.string.my_lists.string, + modifier = Modifier.padding(vertical = 12.dp, horizontal = 16.dp) + ) + + EmptyLayout( + modifier = modifier + .padding(horizontal = 16.dp) + .align(Alignment.Center), + text = stringResource(R.string.login_to_create_list), + imageContent = { + BlurredImage(imageId = R.drawable.ic_no_saved_list_as_guest) + }, + additionalContent = { + OutlineButton( + text = stringResource(R.string.login), + hasLabel = true, + icon = null, + hasIcon = false, + isLoading = false, + onClick = onLoginClick, + modifier = Modifier.padding(top = 16.dp) + ) + } + ) } } @@ -338,7 +322,7 @@ private fun BlurredImage(@DrawableRes imageId: Int) { } else { Image( modifier = Modifier - .scale(2.1f) + .scale(2f) .size(23.dp) .align(Alignment.BottomCenter), painter = R.drawable.ellipse_pre_blurred.painter, @@ -346,23 +330,10 @@ private fun BlurredImage(@DrawableRes imageId: Int) { ) } Image( - painter = painterResource(id = imageId), + painter = imageId.painter, contentDescription = "List Image", modifier = Modifier .size(128.dp), ) } } - -@Composable -@Preview -@ThemePreviews -private fun Preview() { - NovixTheme { - val state = ListUiState() - Content( - state = state, - contract = defaultContractList() - ) - } -} diff --git a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsEffect.kt b/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsEffect.kt deleted file mode 100644 index 860e5131a..000000000 --- a/presentation/src/main/java/com/london/presentation/feature/list/viewitems/ViewItemsEffect.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.london.presentation.feature.list.viewitems - -interface ViewItemsEffect { - object NavigateBack : ViewItemsEffect - data class NavigationMovieDetails(val id: Int) : ViewItemsEffect -} diff --git a/presentation/src/main/java/com/london/presentation/feature/reviews/ReviewsScreen.kt b/presentation/src/main/java/com/london/presentation/feature/reviews/ReviewsScreen.kt index ba4fd7f11..c59b7e90e 100644 --- a/presentation/src/main/java/com/london/presentation/feature/reviews/ReviewsScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/reviews/ReviewsScreen.kt @@ -43,7 +43,7 @@ import com.london.designsystem.component.button.ErrorImage import com.london.designsystem.theme.NovixTheme import com.london.domain.entity.review.Review import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.buildscreen.BuildScreen import com.london.presentation.shared.item.ImageView import com.london.presentation.shared.item.RatingItem diff --git a/presentation/src/main/java/com/london/presentation/feature/search/SearchScreen.kt b/presentation/src/main/java/com/london/presentation/feature/search/SearchScreen.kt index 28456a83e..77d88a828 100644 --- a/presentation/src/main/java/com/london/presentation/feature/search/SearchScreen.kt +++ b/presentation/src/main/java/com/london/presentation/feature/search/SearchScreen.kt @@ -60,7 +60,7 @@ import com.london.domain.entity.recent.RecentViewed import com.london.domain.entity.shared.MediaType import com.london.domain.entity.shared.MediaType.Companion.isMovie import com.london.presentation.R -import com.london.presentation.shared.BackgroundGradient +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.shared.HomeCard import com.london.presentation.shared.base.ErrorState import com.london.presentation.shared.bookmarkSheet.BookmarkBottomSheet diff --git a/presentation/src/main/java/com/london/presentation/shared/buildscreen/LoadingScreen.kt b/presentation/src/main/java/com/london/presentation/shared/buildscreen/LoadingScreen.kt index 83da668f5..d671696ea 100644 --- a/presentation/src/main/java/com/london/presentation/shared/buildscreen/LoadingScreen.kt +++ b/presentation/src/main/java/com/london/presentation/shared/buildscreen/LoadingScreen.kt @@ -6,6 +6,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.london.designsystem.component.CircularLoading +import com.london.designsystem.component.BackgroundGradient @Composable fun LoadingScreen() { @@ -13,6 +14,11 @@ fun LoadingScreen() { modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { + BackgroundGradient( + modifier = Modifier + .align(Alignment.TopStart) + ) + CircularLoading() } } diff --git a/presentation/src/main/java/com/london/presentation/shared/buildscreen/NetworkErrorScreen.kt b/presentation/src/main/java/com/london/presentation/shared/buildscreen/NetworkErrorScreen.kt index 6a51293a2..5a3ccefc5 100644 --- a/presentation/src/main/java/com/london/presentation/shared/buildscreen/NetworkErrorScreen.kt +++ b/presentation/src/main/java/com/london/presentation/shared/buildscreen/NetworkErrorScreen.kt @@ -18,6 +18,7 @@ import com.london.designsystem.component.Text import com.london.designsystem.component.TopBar import com.london.designsystem.component.button.OutlineButton import com.london.designsystem.theme.NovixTheme +import com.london.designsystem.component.BackgroundGradient import com.london.presentation.R @Composable @@ -30,6 +31,11 @@ fun NetworkErrorScreen( modifier .padding(horizontal = 16.dp) ) { + BackgroundGradient( + modifier = Modifier + .align(Alignment.TopStart) + ) + if (onBack != null) { TopBar( onBackClick = onBack, diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index 21cc538ce..4bac14905 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -9,7 +9,7 @@ - What you want to watch? + What to watch? Born from Nova, Made for Flix. Celebrities Top Rated @@ -62,8 +62,8 @@ No saved lists yet, tap + to create one No lists available for this item\nCreate one now - Please log in to create and manage your lists - Please log in to save to lists + Please login to create and manage your lists + Please login to save to lists @@ -110,12 +110,12 @@ - Log In + Login Password Forgot Password? Username - Log in to your account + Login to your account Continue as Guest Don\'t have an account? @@ -127,13 +127,13 @@ My Account - Please log in to access your account details and features + Please login to access your account details and features Watching History User Profile Change Password - Log Out + Logout Are you sure you want to continue?