mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 23:47:02 +05:30
all: move all Hilt processing to app module
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
cff16d17b5
commit
027e3410d8
9 changed files with 29 additions and 18 deletions
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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 {
|
|
@ -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)
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue