app: switch to Hilt for dependency injection

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-09-11 23:35:58 +05:30
parent 57f7a72d8d
commit d42657b0a5
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
4 changed files with 29 additions and 26 deletions

View file

@ -1,11 +1,8 @@
package dev.msfjarvis.todo
import android.app.Application
import dev.msfjarvis.todo.di.Graph
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class Application : Application() {
override fun onCreate() {
super.onCreate()
Graph.provide(this)
}
}

View file

@ -26,20 +26,25 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp
import androidx.ui.tooling.preview.Preview
import dagger.hilt.android.AndroidEntryPoint
import dev.msfjarvis.todo.compose.utils.IconResource
import dev.msfjarvis.todo.data.model.TodoItem
import dev.msfjarvis.todo.di.Graph
import dev.msfjarvis.todo.data.source.TodoDatabase
import dev.msfjarvis.todo.ui.TodoRowItem
import dev.msfjarvis.todo.ui.TodoTheme
import kotlinx.coroutines.launch
import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var database: TodoDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TodoTheme {
val coroutineScope = rememberCoroutineScope()
val itemsDao = Graph.database.todoItemsDao()
val itemsDao = database.todoItemsDao()
val items by itemsDao.getAllItems().collectAsState(initial = emptyList())
TodoApp(
items,

View file

@ -1,19 +0,0 @@
package dev.msfjarvis.todo.di
import android.content.Context
import androidx.room.Room
import dev.msfjarvis.todo.data.source.TodoDatabase
/**
* Rudimentary DI container to initialize singletons, will be switched to Hilt when architecture becomes
* a focus again.
*/
object Graph {
lateinit var database: TodoDatabase
fun provide(context: Context) {
database = Room.databaseBuilder(context, TodoDatabase::class.java, "data.db")
.fallbackToDestructiveMigration().build()
}
}

View file

@ -0,0 +1,20 @@
package dev.msfjarvis.todo.di
import android.content.Context
import androidx.room.Room
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dev.msfjarvis.todo.data.source.TodoDatabase
@InstallIn(SingletonComponent::class)
@Module
object PersistenceModule {
@Provides
fun provideItemsDatabase(@ApplicationContext context: Context): TodoDatabase {
return Room.databaseBuilder(context, TodoDatabase::class.java, "data.db")
.fallbackToDestructiveMigration().build()
}
}