From d42657b0a50e81e4a27b6bd5636939bf92bfd813 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 11 Sep 2020 23:35:58 +0530 Subject: [PATCH] app: switch to Hilt for dependency injection Signed-off-by: Harsh Shandilya --- .../java/dev/msfjarvis/todo/Application.kt | 7 ++----- .../java/dev/msfjarvis/todo/MainActivity.kt | 9 +++++++-- .../main/java/dev/msfjarvis/todo/di/Graph.kt | 19 ------------------ .../msfjarvis/todo/di/PersistenceModule.kt | 20 +++++++++++++++++++ 4 files changed, 29 insertions(+), 26 deletions(-) delete mode 100644 app/src/main/java/dev/msfjarvis/todo/di/Graph.kt create mode 100644 app/src/main/java/dev/msfjarvis/todo/di/PersistenceModule.kt diff --git a/app/src/main/java/dev/msfjarvis/todo/Application.kt b/app/src/main/java/dev/msfjarvis/todo/Application.kt index c0c267f0..e42a64c1 100644 --- a/app/src/main/java/dev/msfjarvis/todo/Application.kt +++ b/app/src/main/java/dev/msfjarvis/todo/Application.kt @@ -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) - } } diff --git a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt index c5d0f85e..973fc5e8 100644 --- a/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/todo/MainActivity.kt @@ -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, diff --git a/app/src/main/java/dev/msfjarvis/todo/di/Graph.kt b/app/src/main/java/dev/msfjarvis/todo/di/Graph.kt deleted file mode 100644 index c13ded68..00000000 --- a/app/src/main/java/dev/msfjarvis/todo/di/Graph.kt +++ /dev/null @@ -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() - } -} diff --git a/app/src/main/java/dev/msfjarvis/todo/di/PersistenceModule.kt b/app/src/main/java/dev/msfjarvis/todo/di/PersistenceModule.kt new file mode 100644 index 00000000..28974b7b --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/todo/di/PersistenceModule.kt @@ -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() + } +}