Skip to content

Commit

Permalink
feat(hilt): adds basic dependency injection (#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
kikin81 authored May 17, 2024
1 parent c92616b commit 1a393db
Show file tree
Hide file tree
Showing 8 changed files with 95 additions and 11 deletions.
31 changes: 20 additions & 11 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
alias(libs.plugins.detekt)
alias(libs.plugins.sortDependencies)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
Expand Down Expand Up @@ -51,24 +54,30 @@ android {
}

dependencies {
ksp(libs.hilt.compiler)

lintChecks(libs.slack.compose.lint)

implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.core.splashscreen)
implementation(libs.androidx.datastore.preferences)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.material3)
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.text.google.fonts)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.text.google.fonts)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.core.splashscreen)
implementation(libs.androidx.datastore.preferences)
implementation(libs.androidx.material3)
lintChecks(libs.slack.compose.lint)
implementation(libs.hilt)

debugImplementation(libs.androidx.ui.test.manifest)
debugImplementation(libs.androidx.ui.tooling)

testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools">

<application
android:name=".BacklogApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package us.kikin.android.gamingbacklog

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class BacklogApplication: Application() {
}
16 changes: 16 additions & 0 deletions app/src/main/java/us/kikin/android/gamingbacklog/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package us.kikin.android.gamingbacklog

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
Expand All @@ -13,15 +14,30 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.core.view.WindowCompat
import androidx.lifecycle.lifecycleScope
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import us.kikin.android.gamingbacklog.domain.usecase.AppEntryUseCases
import us.kikin.android.gamingbacklog.presentation.onboarding.OnboardingScreen
import us.kikin.android.gamingbacklog.ui.theme.AppTheme
import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : ComponentActivity() {

@Inject
lateinit var appEntryUseCases: AppEntryUseCases

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
installSplashScreen()
enableEdgeToEdge()
lifecycleScope.launch {
appEntryUseCases.readAppEntry().collect {
Log.d("Test", it.toString())
}
}
setContent {
AppTheme {
Box(modifier = Modifier.background(color = MaterialTheme.colorScheme.background)) {
Expand Down
34 changes: 34 additions & 0 deletions app/src/main/java/us/kikin/android/gamingbacklog/di/AppModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package us.kikin.android.gamingbacklog.di

import android.app.Application
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import us.kikin.android.gamingbacklog.data.manager.LocalUserManagerImpl
import us.kikin.android.gamingbacklog.domain.manager.LocalUserManager
import us.kikin.android.gamingbacklog.domain.usecase.AppEntryUseCases
import us.kikin.android.gamingbacklog.domain.usecase.ReadAppEntry
import us.kikin.android.gamingbacklog.domain.usecase.SaveAppEntry
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Provides
@Singleton
fun provideLocalUserManager(
application: Application
): LocalUserManager = LocalUserManagerImpl(application)


@Provides
@Singleton
fun provideAppEntryUseCases(
localUserManager: LocalUserManager
): AppEntryUseCases = AppEntryUseCases(
readAppEntry = ReadAppEntry(localUserManager),
saveAppEntry = SaveAppEntry(localUserManager)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package us.kikin.android.gamingbacklog.domain.usecase

data class AppEntryUseCases(
val readAppEntry: ReadAppEntry,
val saveAppEntry: SaveAppEntry,
)
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.jetbrains.kotlin.android) apply false
alias(libs.plugins.detekt) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.sortDependencies)
}
7 changes: 7 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ espressoCore = "3.5.1"
lifecycleRuntimeKtx = "2.8.0"
activityCompose = "1.9.0"
composeBom = "2024.05.00"
hilt = "2.51.1"
ksp = "1.9.24-1.0.20"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
Expand All @@ -28,8 +30,13 @@ slack-compose-lint = { group = "com.slack.lint.compose", name = "compose-lint-ch
androidx-ui-text-google-fonts = { group = "androidx.compose.ui", name = "ui-text-google-fonts", version = "1.6.7" }
androidx-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version = "1.0.1" }
androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version = "1.1.1" }
hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "hilt" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
detekt = { id = "io.gitlab.arturbosch.detekt", version = "1.23.6" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
sortDependencies = { id = "com.squareup.sort-dependencies", version = "0.6"}
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

0 comments on commit 1a393db

Please sign in to comment.