Skip to content

Commit 3ca6324

Browse files
authored
Merge pull request #30 from CodandoTV/feature/25_list_streams_with_network
[ISSUE-25] - List Streams using Network Module
2 parents a1e7b95 + 0adf2b0 commit 3ca6324

File tree

19 files changed

+193
-163
lines changed

19 files changed

+193
-163
lines changed

app/src/main/java/com/codandotv/streamplayerapp/MainActivity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.codandotv.streamplayerapp.core_navigation.helper.currentRoute
1616
import com.codandotv.streamplayerapp.core_navigation.routes.SplashRoutes
1717
import com.codandotv.streamplayerapp.core_shared_ui.theme.StreamPlayerTheme
1818
import com.codandotv.streamplayerapp.navigation.NavigationGraph
19+
1920
class MainActivity : ComponentActivity() {
2021
override fun onCreate(savedInstanceState: Bundle?) {
2122
super.onCreate(savedInstanceState)

app/src/main/java/com/codandotv/streamplayerapp/di/AppModule.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.codandotv.streamplayerapp.di
22

33
import android.content.res.Resources
44
import com.codandotv.streamplayerapp.core_networking.di.NetworkModule
5+
import com.codandotv.streamplayerapp.feature_list_streams.di.ListStreamModule
56
import org.koin.android.ext.koin.androidContext
67
import org.koin.dsl.module
78

@@ -12,5 +13,5 @@ object AppModule {
1213
}
1314

1415

15-
val list = module + NetworkModule.module
16+
val list = module + NetworkModule.module + ListStreamModule.module
1617
}

buildSrc/src/main/java/Dependencies.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,15 @@ object Dependencies {
102102
)
103103
}
104104

105-
object Koin {
105+
object Koin : GroupLibs {
106106
const val koin = "io.insert-koin:koin-android:${Versions.koin}"
107+
const val compose = "io.insert-koin:koin-androidx-compose:${Versions.koin}"
108+
109+
override val list: List<String>
110+
get() = listOf(
111+
koin,
112+
compose
113+
)
107114
}
108115

109116
object Retrofit : GroupLibs {

feature-list-streams/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ android {
1414
implementation(project(Dependencies.Module.core_networking))
1515
implementation(project(Dependencies.Module.core_shared_ui))
1616
implementation(project(Dependencies.Module.core_navigation))
17-
implementation(Dependencies.Koin.koin)
17+
Dependencies.Koin.list.forEach { implementation(it) }
1818
Dependencies.Retrofit.list.forEach { implementation(it) }
1919
Dependencies.Kotlin.list.forEach { implementation(it) }
2020
Dependencies.Support.list.forEach { implementation(it) }

feature-list-streams/src/main/AndroidManifest.xml

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,29 @@
11
package com.codandotv.streamplayerapp.feature_list_streams.data
22

3-
import com.codandotv.streamplayerapp.core_networking.handleError.toFlow
43
import com.codandotv.streamplayerapp.core_networking.handleError.toResult
54
import com.codandotv.streamplayerapp.feature_list_streams.domain.model.ListStream
65
import com.codandotv.streamplayerapp.feature_list_streams.domain.toListStream
76
import kotlinx.coroutines.flow.Flow
8-
import kotlinx.coroutines.flow.map
7+
import kotlinx.coroutines.flow.flow
98

109
interface ListStreamRepository {
11-
suspend fun getMovies(): Flow<ListStream>
10+
suspend fun getMovies(): Flow<List<ListStream>>
1211
}
1312

1413
class 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
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package com.codandotv.streamplayerapp.feature_list_streams.data
22

33
import com.codandotv.streamplayerapp.core_networking.handleError.NetworkResponse
4+
import com.codandotv.streamplayerapp.feature_list_streams.data.model.GenresResponse
45
import com.codandotv.streamplayerapp.feature_list_streams.data.model.ListStreamResponse
56
import retrofit2.http.GET
7+
import retrofit2.http.Query
68

79
interface ListStreamService {
8-
@GET("3/movie/76341")
9-
suspend fun getMovies() : NetworkResponse<ListStreamResponse>
10+
@GET("3/discover/movie")
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
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
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+
)
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.codandotv.streamplayerapp.feature_list_streams.data.model
22

3-
data class ListStreamResponse(
3+
data class StreamResponse(
44
val title : String,
5-
val overview : String
5+
val overview : String,
6+
val poster_path: String,
7+
)
8+
data class ListStreamResponse(
9+
val results: List<StreamResponse>
610
)

feature-list-streams/src/main/java/com/codandotv/streamplayerapp/feature_list_streams/di/ListStreamModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.codandotv.streamplayerapp.feature_list_streams.domain.ListStreamAnaly
77
import com.codandotv.streamplayerapp.feature_list_streams.domain.ListStreamAnalyticsImpl
88
import com.codandotv.streamplayerapp.feature_list_streams.domain.ListStreamUseCase
99
import com.codandotv.streamplayerapp.feature_list_streams.domain.ListStreamUseCaseImpl
10-
import com.codandotv.streamplayerapp.feature_list_streams.presentation.ListStreamViewModel
10+
import com.codandotv.streamplayerapp.feature_list_streams.presentation.screens.ListStreamViewModel
1111
import com.codandotv.streamplayerapp.feature_list_streams.presentation.ListStreamUiModelImpl
1212
import com.codandotv.streamplayerapp.feature_list_streams.presentation.ListStreamUimodel
1313
import org.koin.androidx.viewmodel.dsl.viewModel

0 commit comments

Comments
 (0)