Skip to content

Commit f2ff098

Browse files
committed
trying koin viewModel
1 parent 870e9f6 commit f2ff098

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

app/src/main/java/com/arctouch/codechallenge/App.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.arctouch.codechallenge
33
import android.app.Application
44
import com.arctouch.codechallenge.api.TmdbApi
55
import com.arctouch.codechallenge.data.Cache
6+
import com.arctouch.codechallenge.di.apiModule
67
import com.arctouch.codechallenge.di.viewModelModule
78
import io.reactivex.android.schedulers.AndroidSchedulers
89
import io.reactivex.schedulers.Schedulers
@@ -25,7 +26,7 @@ class App : Application() {
2526
startKoin {
2627
androidLogger()
2728
androidContext(this@App)
28-
modules(listOf(viewModelModule))
29+
modules(listOf(apiModule, viewModelModule))
2930
}
3031
api = createWebService()
3132
getGenres()

app/src/main/java/com/arctouch/codechallenge/di/ApiModule.kt

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import retrofit2.converter.moshi.MoshiConverterFactory
99

1010
val apiModule = module {
1111
single { createWebService() }
12+
single<TmbRepository> { TmbRepositoryImpl(get()) }
1213
}
1314

1415
fun createWebService(): TmdbApi {

app/src/main/java/com/arctouch/codechallenge/di/ViewModelModule.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import com.arctouch.codechallenge.ui.home.HomeViewModel
55
import org.koin.dsl.module
66

77
val viewModelModule = module {
8-
single { HomeViewModel() }
8+
single { HomeViewModel(get()) }
99
single { DetailsViewModel() }
1010
}

app/src/main/java/com/arctouch/codechallenge/ui/home/HomeViewModel.kt

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
77
import com.arctouch.codechallenge.App
88
import com.arctouch.codechallenge.data.Cache
9+
import com.arctouch.codechallenge.di.TmbRepository
910
import com.arctouch.codechallenge.model.Movie
1011
import com.arctouch.codechallenge.model.UpcomingMoviesResponse
1112
import kotlinx.coroutines.launch
13+
import org.koin.core.KoinComponent
14+
import org.koin.core.inject
1215

13-
class HomeViewModel : ViewModel() {
16+
class HomeViewModel(private val repository: TmbRepository) : ViewModel(), KoinComponent {
1417

15-
private val api = App.api
1618
private val _upcomingMovies = MutableLiveData<MutableList<Movie>>()
1719
val upcomingMovies: LiveData<MutableList<Movie>> = _upcomingMovies
1820
private val _searchLiveData = MutableLiveData<MutableList<Movie>>()
@@ -28,7 +30,7 @@ class HomeViewModel : ViewModel() {
2830
fun getUpComingMovies() {
2931
page = page.plus(1)
3032
viewModelScope.launch {
31-
val upcomingMoviesResponse = api.upcomingMovies(page = page)
33+
val upcomingMoviesResponse = repository.upcomingMovies(page = page)
3234
val moviesWithGenres = addGenres(upcomingMoviesResponse)
3335
val list = _upcomingMovies.value
3436
list?.addAll(moviesWithGenres)
@@ -38,7 +40,7 @@ class HomeViewModel : ViewModel() {
3840

3941
fun searchMovies(query: String) {
4042
viewModelScope.launch {
41-
val upcomingMoviesResponse = api.getMoviesByName(query)
43+
val upcomingMoviesResponse = repository.getMoviesByName(query)
4244
val moviesWithGenres = addGenres(upcomingMoviesResponse)
4345
_searchLiveData.postValue(moviesWithGenres.toMutableList())
4446
}

0 commit comments

Comments
 (0)