all: move all Hilt processing to app module

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2021-02-20 14:08:59 +05:30
parent cff16d17b5
commit 027e3410d8
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
9 changed files with 29 additions and 18 deletions

View file

@ -1,15 +1,12 @@
plugins { plugins {
id("com.android.library") id("com.android.library")
kotlin("android") kotlin("android")
kotlin("kapt")
`lobsters-plugin` `lobsters-plugin`
} }
dependencies { dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
api(Dependencies.ThirdParty.Retrofit.lib) api(Dependencies.ThirdParty.Retrofit.lib)
implementation(project(":database")) implementation(project(":database"))
implementation(Dependencies.AndroidX.Hilt.dagger)
implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect) implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect)
implementation(Dependencies.ThirdParty.Retrofit.moshi) implementation(Dependencies.ThirdParty.Retrofit.moshi)
testImplementation(Dependencies.Kotlin.Coroutines.core) testImplementation(Dependencies.Kotlin.Coroutines.core)

View file

@ -1,31 +1,39 @@
package dev.msfjarvis.lobsters.data.api package dev.msfjarvis.lobsters.data.api
import dev.msfjarvis.lobsters.injection.ApiModule import com.squareup.moshi.Moshi
import dev.msfjarvis.lobsters.injection.MoshiModule
import dev.msfjarvis.lobsters.util.TestUtils import dev.msfjarvis.lobsters.util.TestUtils
import dev.zacsweers.moshix.reflect.MetadataKotlinJsonAdapterFactory
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import mockwebserver3.Dispatcher import mockwebserver3.Dispatcher
import mockwebserver3.MockResponse import mockwebserver3.MockResponse
import mockwebserver3.MockWebServer import mockwebserver3.MockWebServer
import mockwebserver3.RecordedRequest import mockwebserver3.RecordedRequest
import okhttp3.OkHttpClient
import org.junit.AfterClass import org.junit.AfterClass
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.BeforeClass import org.junit.BeforeClass
import org.junit.Test import org.junit.Test
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
import retrofit2.create
class LobstersApiTest { class LobstersApiTest {
companion object { companion object {
private val webServer = MockWebServer() private val webServer = MockWebServer()
private val apiData = TestUtils.getJson("hottest.json") private val apiData = TestUtils.getJson("hottest.json")
private val okHttp = ApiModule.provideClient() private val moshi = Moshi.Builder()
private val retrofit = ApiModule.provideRetrofit( .add(MetadataKotlinJsonAdapterFactory())
{ okHttp }, .build()
{ MoshiModule.provideMoshi() }, private val okHttp = OkHttpClient.Builder()
"http://localhost:8080/" .build()
) private val retrofit = Retrofit.Builder()
private val apiClient = ApiModule.provideApi(retrofit) .client(okHttp)
.baseUrl("http://localhost:8080/")
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
private val apiClient = retrofit.create<LobstersApi>()
@JvmStatic @JvmStatic
@BeforeClass @BeforeClass

View file

@ -47,6 +47,9 @@ dependencies {
implementation(Dependencies.Kotlin.Coroutines.android) implementation(Dependencies.Kotlin.Coroutines.android)
implementation(Dependencies.ThirdParty.accompanist) implementation(Dependencies.ThirdParty.accompanist)
implementation(Dependencies.ThirdParty.Moshi.lib) implementation(Dependencies.ThirdParty.Moshi.lib)
implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect)
implementation(Dependencies.ThirdParty.Retrofit.moshi)
implementation(Dependencies.ThirdParty.SQLDelight.androidDriver)
testImplementation(Dependencies.Testing.junit) testImplementation(Dependencies.Testing.junit)
androidTestImplementation(Dependencies.AndroidX.Compose.activity) androidTestImplementation(Dependencies.AndroidX.Compose.activity)
androidTestImplementation(Dependencies.Testing.daggerHilt) androidTestImplementation(Dependencies.Testing.daggerHilt)

View file

@ -1,6 +1,7 @@
package dev.msfjarvis.lobsters.injection package dev.msfjarvis.lobsters.injection
import android.content.Context import android.content.Context
import com.squareup.moshi.JsonAdapter
import com.squareup.sqldelight.android.AndroidSqliteDriver import com.squareup.sqldelight.android.AndroidSqliteDriver
import com.squareup.sqldelight.db.SqlDriver import com.squareup.sqldelight.db.SqlDriver
import dagger.Module import dagger.Module
@ -11,6 +12,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent import dagger.hilt.components.SingletonComponent
import dev.msfjarvis.lobsters.data.local.LobstersPost import dev.msfjarvis.lobsters.data.local.LobstersPost
import dev.msfjarvis.lobsters.database.LobstersDatabase import dev.msfjarvis.lobsters.database.LobstersDatabase
import dev.msfjarvis.lobsters.model.Submitter
import dev.msfjarvis.lobsters.model.SubmitterAdapter import dev.msfjarvis.lobsters.model.SubmitterAdapter
import dev.msfjarvis.lobsters.model.TagsAdapter import dev.msfjarvis.lobsters.model.TagsAdapter
import javax.inject.Singleton import javax.inject.Singleton
@ -19,6 +21,12 @@ import javax.inject.Singleton
@InstallIn(SingletonComponent::class) @InstallIn(SingletonComponent::class)
object DatabaseModule { object DatabaseModule {
@Provides
@Reusable
fun providesSubmitterAdapter(jsonAdapter: JsonAdapter<Submitter>): SubmitterAdapter {
return SubmitterAdapter(jsonAdapter)
}
@Provides @Provides
@Reusable @Reusable
fun providesTagsAdapter(): TagsAdapter { fun providesTagsAdapter(): TagsAdapter {

View file

@ -1,17 +1,13 @@
plugins { plugins {
id("com.android.library") id("com.android.library")
kotlin("android") kotlin("android")
kotlin("kapt")
id("com.squareup.sqldelight") id("com.squareup.sqldelight")
`lobsters-plugin` `lobsters-plugin`
} }
dependencies { dependencies {
kapt(Dependencies.AndroidX.Hilt.daggerCompiler)
implementation(Dependencies.AndroidX.Hilt.dagger)
implementation(Dependencies.ThirdParty.Moshi.lib) implementation(Dependencies.ThirdParty.Moshi.lib)
implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect) implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect)
implementation(Dependencies.ThirdParty.SQLDelight.androidDriver)
testImplementation(Dependencies.Kotlin.Coroutines.core) testImplementation(Dependencies.Kotlin.Coroutines.core)
testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver) testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver)
testImplementation(Dependencies.Testing.junit) testImplementation(Dependencies.Testing.junit)

View file

@ -2,9 +2,8 @@ package dev.msfjarvis.lobsters.model
import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonAdapter
import com.squareup.sqldelight.ColumnAdapter import com.squareup.sqldelight.ColumnAdapter
import javax.inject.Inject
class SubmitterAdapter @Inject constructor(private val submitterJsonAdapter: JsonAdapter<Submitter>) : class SubmitterAdapter(private val submitterJsonAdapter: JsonAdapter<Submitter>) :
ColumnAdapter<Submitter, String> { ColumnAdapter<Submitter, String> {
override fun decode(databaseValue: String): Submitter { override fun decode(databaseValue: String): Submitter {