Skip to content

Commit

Permalink
Merge pull request #180 from chikoski/main
Browse files Browse the repository at this point in the history
[JetStream] Fixing an crash issue and warnings due to deprecated component usage
  • Loading branch information
chikoski authored Jun 12, 2024
2 parents 00af306 + cff9bfc commit b503b7b
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,4 @@

package com.google.jetstream.data.entities

import androidx.compose.runtime.Immutable

@Deprecated("This data class is deprecated as strong skip mode is enabled.")
@Immutable
data class MovieCategoryList(
val value: List<MovieCategory> = emptyList()
) : List<MovieCategory> by value
typealias MovieCategoryList = List<MovieCategory>
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,4 @@

package com.google.jetstream.data.entities

import androidx.compose.runtime.Immutable

@Deprecated("This data class is deprecated as strong skip mode is enabled.")
@Immutable
data class MovieList(
val value: List<Movie> = emptyList()
) : List<Movie> by value
typealias MovieList = List<Movie>
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
package com.google.jetstream.data.repositories

import com.google.jetstream.data.entities.MovieCategoryDetails
import com.google.jetstream.data.entities.MovieCategoryList
import com.google.jetstream.data.entities.MovieDetails
import com.google.jetstream.data.entities.MovieList
import com.google.jetstream.data.entities.MovieReviewsAndRatings
Expand All @@ -41,27 +40,27 @@ class MovieRepositoryImpl @Inject constructor(
) : MovieRepository {

override fun getFeaturedMovies() = flow {
val list = MovieList(movieDataSource.getFeaturedMovieList())
val list = movieDataSource.getFeaturedMovieList()
emit(list)
}

override fun getTrendingMovies(): Flow<MovieList> = flow {
val list = MovieList(movieDataSource.getTrendingMovieList())
val list = movieDataSource.getTrendingMovieList()
emit(list)
}

override fun getTop10Movies(): Flow<MovieList> = flow {
val list = MovieList(movieDataSource.getTop10MovieList())
val list = movieDataSource.getTop10MovieList()
emit(list)
}

override fun getNowPlayingMovies(): Flow<MovieList> = flow {
val list = MovieList(movieDataSource.getNowPlayingMovieList())
val list = movieDataSource.getNowPlayingMovieList()
emit(list)
}

override fun getMovieCategories() = flow {
val list = MovieCategoryList(movieCategoryDataSource.getMovieCategoryList())
val list = movieCategoryDataSource.getMovieCategoryList()
emit(list)
}

Expand All @@ -74,7 +73,7 @@ class MovieRepositoryImpl @Inject constructor(
return MovieCategoryDetails(
id = category.id,
name = category.name,
movies = MovieList(movieList)
movies = movieList
)
}

Expand Down Expand Up @@ -103,7 +102,7 @@ class MovieRepositoryImpl @Inject constructor(
originalLanguage = "English",
budget = "$15M",
revenue = "$40M",
similarMovies = MovieList(similarMovieList),
similarMovies = similarMovieList,
reviewsAndRatings = listOf(
MovieReviewsAndRatings(
reviewerName = FreshTomatoes,
Expand All @@ -122,39 +121,38 @@ class MovieRepositoryImpl @Inject constructor(
}

override suspend fun searchMovies(query: String): MovieList {
val filtered = movieDataSource.getMovieList().filter {
return movieDataSource.getMovieList().filter {
it.name.contains(other = query, ignoreCase = true)
}
return MovieList(filtered)
}

override fun getMoviesWithLongThumbnail() = flow {
val list = movieDataSource.getMovieList(ThumbnailType.Long)
emit(MovieList(list))
emit(list)
}

override fun getMovies(): Flow<MovieList> = flow {
val list = movieDataSource.getMovieList()
emit(MovieList(list))
emit(list)
}

override fun getPopularFilmsThisWeek(): Flow<MovieList> = flow {
val list = movieDataSource.getPopularFilmThisWeek()
emit(MovieList(list))
emit(list)
}

override fun getTVShows(): Flow<MovieList> = flow {
val list = tvDataSource.getTvShowList()
emit(MovieList(list))
emit(list)
}

override fun getBingeWatchDramas(): Flow<MovieList> = flow {
val list = tvDataSource.getBingeWatchDramaList()
emit(MovieList(list))
emit(list)
}

override fun getFavouriteMovies(): Flow<MovieList> = flow {
val list = movieDataSource.getFavoriteMovieList()
emit(MovieList(list))
emit(list)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusProperties
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.focusRestorer
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.geometry.Offset
Expand All @@ -57,14 +58,13 @@ import androidx.tv.material3.Text
import com.google.jetstream.data.entities.Movie
import com.google.jetstream.data.entities.MovieList
import com.google.jetstream.presentation.screens.dashboard.rememberChildPadding
import com.google.jetstream.presentation.utils.createInitialFocusRestorerModifiers
import com.google.jetstream.presentation.utils.ifElse

enum class ItemDirection(val aspectRatio: Float) {
Vertical(10.5f / 16f),
Horizontal(16f / 9f);
}

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun MoviesRow(
movieList: MovieList,
Expand All @@ -81,6 +81,8 @@ fun MoviesRow(
showIndexOverImage: Boolean = false,
onMovieSelected: (movie: Movie) -> Unit = {}
) {
val (lazyRow, firstItem) = remember { FocusRequester.createRefs() }

Column(
modifier = modifier.focusGroup()
) {
Expand All @@ -97,28 +99,32 @@ fun MoviesRow(
targetState = movieList,
label = "",
) { movieState ->
val focusRestorerModifiers = createInitialFocusRestorerModifiers()

LazyRow(
modifier = Modifier
.then(focusRestorerModifiers.parentModifier),
contentPadding = PaddingValues(
start = startPadding,
end = endPadding,
),
horizontalArrangement = Arrangement.spacedBy(20.dp),
modifier = Modifier
.focusRequester(lazyRow)
.focusRestorer {
firstItem
}
) {
itemsIndexed(movieState, key = { _, movie -> movie.id }) { index, movie ->
val itemModifier = if (index == 0) {
Modifier.focusRequester(firstItem)
} else {
Modifier
}
MoviesRowItem(
modifier = Modifier
.ifElse(
index == 0,
focusRestorerModifiers.childModifier
)
.weight(1f),
modifier = itemModifier.weight(1f),
index = index,
itemDirection = itemDirection,
onMovieSelected = onMovieSelected,
onMovieSelected = {
lazyRow.saveFocusedChild()
onMovieSelected(it)
},
movie = movie,
showItemTitle = showItemTitle,
showIndexOverImage = showIndexOverImage
Expand Down Expand Up @@ -147,6 +153,8 @@ fun ImmersiveListMoviesRow(
onMovieSelected: (Movie) -> Unit = {},
onMovieFocused: (Movie) -> Unit = {}
) {
val (lazyRow, firstItem) = remember { FocusRequester.createRefs() }

Column(
modifier = modifier.focusGroup()
) {
Expand All @@ -165,21 +173,33 @@ fun ImmersiveListMoviesRow(
label = "",
) { movieState ->
LazyRow(
modifier = Modifier.focusRestorer(),
contentPadding = PaddingValues(start = startPadding, end = endPadding),
horizontalArrangement = Arrangement.spacedBy(20.dp)
horizontalArrangement = Arrangement.spacedBy(20.dp),
modifier = Modifier
.focusRequester(lazyRow)
.focusRestorer {
firstItem
}
) {
itemsIndexed(
movieState,
key = { _, movie ->
movie.id
}
) { index, movie ->
val itemModifier = if (index == 0) {
Modifier.focusRequester(firstItem)
} else {
Modifier
}
MoviesRowItem(
modifier = Modifier.weight(1f),
modifier = itemModifier.weight(1f),
index = index,
itemDirection = itemDirection,
onMovieSelected = onMovieSelected,
onMovieSelected = {
lazyRow.saveFocusedChild()
onMovieSelected(it)
},
onMovieFocused = onMovieFocused,
movie = movie,
showItemTitle = showItemTitle,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class FavouriteScreenViewModel @Inject constructor(
val filtered = movieList.filterIndexed { index, _ ->
idList.contains(index)
}
FavouriteScreenUiState.Ready(MovieList(filtered), filterList)
FavouriteScreenUiState.Ready(filtered, filterList)
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class SearchScreenViewModel @Inject constructor(
val searchState = internalSearchState.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5_000),
initialValue = SearchState.Done(MovieList())
initialValue = SearchState.Done(emptyList())
)
}

Expand Down

0 comments on commit b503b7b

Please sign in to comment.