File tree Expand file tree Collapse file tree 8 files changed +46
-23
lines changed
feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature_list_streams Expand file tree Collapse file tree 8 files changed +46
-23
lines changed Original file line number Diff line number Diff line change 11package com.codandotv.streamplayerapp.feature_list_streams.data
22
3- import com.codandotv.streamplayerapp.core_networking.handleError.toFlow
43import com.codandotv.streamplayerapp.core_networking.handleError.toResult
54import com.codandotv.streamplayerapp.feature_list_streams.domain.model.ListStream
65import com.codandotv.streamplayerapp.feature_list_streams.domain.toListStream
76import kotlinx.coroutines.flow.Flow
8- import kotlinx.coroutines.flow.map
7+ import kotlinx.coroutines.flow.flow
98
109interface ListStreamRepository {
11- suspend fun getMovies (): Flow <ListStream >
10+ suspend fun getMovies (): Flow <List < ListStream > >
1211}
1312
1413class ListStreamRepositoryImpl (
1514 private val service : ListStreamService
1615) : ListStreamRepository {
1716
18- override suspend fun getMovies (): Flow <ListStream > =
19- service.getMovies()
20- .toFlow()
21- .map {
22- it.toListStream()
17+ override suspend fun getMovies (): Flow <List <ListStream >> {
18+ val genres = service.getGenres().toResult().getOrNull()
19+ return flow {
20+ val response = genres?.genres?.mapNotNull { genre ->
21+ service.getMovies(genre.id.toString())
22+ .toResult().getOrNull()?.toListStream(
23+ genre.name
24+ )
2325 }
26+ emit(response ? : emptyList())
27+ }
28+ }
2429}
Original file line number Diff line number Diff line change 11package com.codandotv.streamplayerapp.feature_list_streams.data
22
33import com.codandotv.streamplayerapp.core_networking.handleError.NetworkResponse
4+ import com.codandotv.streamplayerapp.feature_list_streams.data.model.GenresResponse
45import com.codandotv.streamplayerapp.feature_list_streams.data.model.ListStreamResponse
56import retrofit2.http.GET
7+ import retrofit2.http.Query
68
79interface ListStreamService {
810 @GET(" 3/discover/movie" )
9- suspend fun getMovies () : NetworkResponse <ListStreamResponse >
11+ suspend fun getMovies (@Query(" with_genres" ) genres : String ) : NetworkResponse <ListStreamResponse >
12+
13+ @GET(" 3/genre/movie/list" )
14+ suspend fun getGenres (): NetworkResponse <GenresResponse >
1015}
Original file line number Diff line number Diff line change 1+ package com.codandotv.streamplayerapp.feature_list_streams.data.model
2+
3+ data class GenreResponse (
4+ val id : Long ,
5+ val name : String
6+ )
7+
8+ data class GenresResponse (
9+ val genres : List <GenreResponse >
10+ )
Original file line number Diff line number Diff line change @@ -5,14 +5,13 @@ import com.codandotv.streamplayerapp.feature_list_streams.domain.model.ListStrea
55import kotlinx.coroutines.flow.Flow
66
77interface ListStreamUseCase {
8- suspend fun getMovies () : Flow <ListStream >
8+ suspend fun getMovies () : Flow <List < ListStream > >
99}
1010
1111class ListStreamUseCaseImpl (
1212 private val repository : ListStreamRepository
1313) : ListStreamUseCase {
14- override suspend fun getMovies (): Flow <ListStream > {
15- println (" >>>>>>> Curta o video!!!" )
14+ override suspend fun getMovies (): Flow <List <ListStream >> {
1615 return repository.getMovies()
1716 }
1817}
Original file line number Diff line number Diff line change @@ -4,8 +4,9 @@ import com.codandotv.streamplayerapp.feature_list_streams.data.model.ListStreamR
44import com.codandotv.streamplayerapp.feature_list_streams.domain.model.ListStream
55import com.codandotv.streamplayerapp.feature_list_streams.domain.model.Stream
66
7- fun ListStreamResponse.toListStream (): ListStream =
7+ fun ListStreamResponse.toListStream (genre : String ): ListStream =
88 ListStream (
9+ categoryName = genre,
910 streams = this .results.map {
1011 Stream (
1112 description = it.overview,
Original file line number Diff line number Diff line change @@ -6,5 +6,6 @@ data class Stream(
66 val posterPathUrl : String ,
77)
88data class ListStream (
9+ val categoryName : String ,
910 val streams : List <Stream >
1011)
Original file line number Diff line number Diff line change @@ -7,25 +7,25 @@ import com.codandotv.streamplayerapp.feature_list_streams.presentation.screens.L
77import com.codandotv.streamplayerapp.feature_list_streams.presentation.widgets.StreamsCardContent
88
99interface ListStreamUimodel {
10- fun convertToCardContent (listStream : ListStream ): ListStreamsUIState
10+ fun convertToCardContent (listStream : List < ListStream > ): ListStreamsUIState
1111}
1212
1313class ListStreamUiModelImpl (
1414 private val resources : Resources
1515) : ListStreamUimodel {
16- override fun convertToCardContent (listStream : ListStream ): ListStreamsUIState {
16+ override fun convertToCardContent (listStream : List < ListStream > ): ListStreamsUIState {
1717 return ListStreamsUIState (
18- carousels = listOf (
18+ carousels = listStream.map {
1919 CarouselData (
20- categoryName = " " ,
21- cards = listStream .streams.map {
20+ categoryName = it.categoryName ,
21+ cards = it .streams.map { stream ->
2222 StreamsCardContent (
23- contentDescription = it .name,
24- url = it .posterPathUrl
23+ contentDescription = stream .name,
24+ url = stream .posterPathUrl
2525 )
2626 }
2727 )
28- )
28+ }
2929 )
3030 }
3131}
Original file line number Diff line number Diff line change 11package com.codandotv.streamplayerapp.feature_list_streams.presentation.screens
22
3+ import androidx.compose.foundation.ScrollState
34import androidx.compose.foundation.background
45import androidx.compose.foundation.layout.Column
56import androidx.compose.foundation.layout.Spacer
67import androidx.compose.foundation.layout.fillMaxSize
78import androidx.compose.foundation.layout.height
8- import androidx.compose.foundation.layout.padding
9+ import androidx.compose.foundation.verticalScroll
910import androidx.compose.material3.MaterialTheme
1011import androidx.compose.runtime.Composable
1112import androidx.compose.runtime.remember
@@ -27,10 +28,11 @@ fun ListStreamsScreen(viewModel: ListStreamViewModel = koinViewModel()) {
2728 modifier = Modifier
2829 .background(MaterialTheme .colorScheme.background)
2930 .fillMaxSize()
31+ .verticalScroll(ScrollState (0 ))
3032 ) {
3133 uiState.value.carousels.forEach {
3234 StreamsCarousel (
33- title = " Category do Server " ,
35+ title = it.categoryName ,
3436 contentList = it.cards
3537 )
3638 }
You can’t perform that action at this time.
0 commit comments