Swapped ViewModel injection for the standard VM connection to easily access application context

This commit is contained in:
Arty Bishop committed 2019-10-30 17:56:06 +00:00
1 parent d530eb9031
commit 4e7325d08f
3 files changed
+8 -27

No files matched your search

@@ -1,13 +1,11 @@
package com.rtbishop.lookingsat
import android.content.Context
import androidx.lifecycle.ViewModelProvider
import com.rtbishop.lookingsat.api.RemoteDataSource
import com.rtbishop.lookingsat.api.TransmittersApi
import com.rtbishop.lookingsat.db.LocalDataSource
import com.rtbishop.lookingsat.db.TransmittersDatabase
import com.rtbishop.lookingsat.repo.Repository
import com.rtbishop.lookingsat.vm.ViewModelFactory
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
@@ -32,11 +30,7 @@ object Injector {
return LocalDataSource(dao)
}
private fun provideRepository(context: Context): Repository {
fun provideRepository(context: Context): Repository {
return Repository(provideLocalDataSource(context), provideRemoteDataSource())
}
private fun provideViewModelFactory(context: Context): ViewModelProvider.Factory {
return ViewModelFactory(context, provideRepository(context))
}
}
@@ -1,7 +1,11 @@
package com.rtbishop.lookingsat.vm
import android.content.Context
import androidx.lifecycle.ViewModel
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import com.rtbishop.lookingsat.Injector
import com.rtbishop.lookingsat.repo.Repository
class MainViewModel(private val context: Context, private val repository: Repository) : ViewModel()
class MainViewModel(application: Application) : AndroidViewModel(application) {
private var repository: Repository = Injector.provideRepository(application)
}
@@ -1,17 +0,0 @@
package com.rtbishop.lookingsat.vm
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.rtbishop.lookingsat.repo.Repository
class ViewModelFactory(private val context: Context, private val repository: Repository) :
ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MainViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return MainViewModel(context.applicationContext, repository) as T
}
throw IllegalArgumentException("Unknown ViewModel")
}
}