From 09d4b16945a75899a34a56b2c7e6a46db0ed4299 Mon Sep 17 00:00:00 2001 From: Saptak Manna Date: Sat, 26 Apr 2025 18:45:07 +0530 Subject: [PATCH 1/2] Add Dagger Hilt for Dependency Injection and Setup ApiModule --- app/build.gradle.kts | 4 ++++ .../java/com/notifier/app/GithubNotifierApp.kt | 7 +++++++ .../main/java/com/notifier/app/MainActivity.kt | 2 ++ .../main/java/com/notifier/app/di/ApiModule.kt | 18 ++++++++++++++++++ build.gradle.kts | 2 ++ gradle/libs.versions.toml | 6 ++++++ 6 files changed, 39 insertions(+) create mode 100644 app/src/main/java/com/notifier/app/GithubNotifierApp.kt create mode 100644 app/src/main/java/com/notifier/app/di/ApiModule.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 08dc095..f652653 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,6 +3,8 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.ksp) + alias(libs.plugins.dagger.hilt) } android { @@ -58,6 +60,8 @@ dependencies { implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation(libs.bundles.ktor) + implementation(libs.dagger.hilt) + ksp(libs.dagger.hilt.compiler) testImplementation(libs.junit) testImplementation(libs.truth) diff --git a/app/src/main/java/com/notifier/app/GithubNotifierApp.kt b/app/src/main/java/com/notifier/app/GithubNotifierApp.kt new file mode 100644 index 0000000..10061b4 --- /dev/null +++ b/app/src/main/java/com/notifier/app/GithubNotifierApp.kt @@ -0,0 +1,7 @@ +package com.notifier.app + +import android.app.Application +import dagger.hilt.android.HiltAndroidApp + +@HiltAndroidApp +class GithubNotifierApp : Application() diff --git a/app/src/main/java/com/notifier/app/MainActivity.kt b/app/src/main/java/com/notifier/app/MainActivity.kt index 39a7f1e..5f178ef 100644 --- a/app/src/main/java/com/notifier/app/MainActivity.kt +++ b/app/src/main/java/com/notifier/app/MainActivity.kt @@ -12,7 +12,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import com.notifier.app.ui.theme.GitHubNotifierTheme +import dagger.hilt.android.AndroidEntryPoint +@AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/notifier/app/di/ApiModule.kt b/app/src/main/java/com/notifier/app/di/ApiModule.kt new file mode 100644 index 0000000..e4dd221 --- /dev/null +++ b/app/src/main/java/com/notifier/app/di/ApiModule.kt @@ -0,0 +1,18 @@ +package com.notifier.app.di + +import com.notifier.app.core.data.networking.HttpClientFactory +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import io.ktor.client.HttpClient +import io.ktor.client.engine.cio.CIO + +@Module +@InstallIn(SingletonComponent::class) +object ApiModule { + @Provides + fun provideHttpClient(): HttpClient { + return HttpClientFactory.create(CIO.create()) + } +} diff --git a/build.gradle.kts b/build.gradle.kts index 5c98ad0..d0ec41f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,4 +3,6 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.compose) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.dagger.hilt) apply false } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d984e08..c35a32c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,6 +12,8 @@ ktor = "3.1.2" truth = "1.1.3" kotlinxCoroutinesTest = "1.10.1" mockk = "1.13.8" +ksp = "2.0.21-1.0.27" +dagger-hilt = "2.56.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -37,12 +39,16 @@ ktor-client-mock = { module = "io.ktor:ktor-client-mock", version.ref = "ktor" } truth = { group = "com.google.truth", name = "truth", version.ref = "truth" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" } mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" } +dagger-hilt = { group = "com.google.dagger", name = "hilt-android", version.ref = "dagger-hilt" } +dagger-hilt-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "dagger-hilt" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "dagger-hilt" } [bundles] ktor = [ From ba276b292e65030d41238b23c352d3a1fd6ae6c1 Mon Sep 17 00:00:00 2001 From: Saptak Manna Date: Sat, 26 Apr 2025 19:39:28 +0530 Subject: [PATCH 2/2] Add application name to AndroidManifest.xml --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d64faa5..20fcb03 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools">