diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 3cf41d4e..f2ac69ff 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -1,15 +1,12 @@ plugins { id("com.android.library") kotlin("android") - kotlin("kapt") `lobsters-plugin` } dependencies { - kapt(Dependencies.AndroidX.Hilt.daggerCompiler) api(Dependencies.ThirdParty.Retrofit.lib) implementation(project(":database")) - implementation(Dependencies.AndroidX.Hilt.dagger) implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect) implementation(Dependencies.ThirdParty.Retrofit.moshi) testImplementation(Dependencies.Kotlin.Coroutines.core) diff --git a/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt index c6fe7042..8ece55f3 100644 --- a/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt +++ b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt @@ -1,31 +1,39 @@ package dev.msfjarvis.lobsters.data.api -import dev.msfjarvis.lobsters.injection.ApiModule -import dev.msfjarvis.lobsters.injection.MoshiModule +import com.squareup.moshi.Moshi import dev.msfjarvis.lobsters.util.TestUtils +import dev.zacsweers.moshix.reflect.MetadataKotlinJsonAdapterFactory import kotlinx.coroutines.runBlocking import mockwebserver3.Dispatcher import mockwebserver3.MockResponse import mockwebserver3.MockWebServer import mockwebserver3.RecordedRequest +import okhttp3.OkHttpClient import org.junit.AfterClass import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.BeforeClass import org.junit.Test +import retrofit2.Retrofit +import retrofit2.converter.moshi.MoshiConverterFactory +import retrofit2.create class LobstersApiTest { companion object { private val webServer = MockWebServer() private val apiData = TestUtils.getJson("hottest.json") - private val okHttp = ApiModule.provideClient() - private val retrofit = ApiModule.provideRetrofit( - { okHttp }, - { MoshiModule.provideMoshi() }, - "http://localhost:8080/" - ) - private val apiClient = ApiModule.provideApi(retrofit) + private val moshi = Moshi.Builder() + .add(MetadataKotlinJsonAdapterFactory()) + .build() + private val okHttp = OkHttpClient.Builder() + .build() + private val retrofit = Retrofit.Builder() + .client(okHttp) + .baseUrl("http://localhost:8080/") + .addConverterFactory(MoshiConverterFactory.create(moshi)) + .build() + private val apiClient = retrofit.create() @JvmStatic @BeforeClass diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c61d32fd..ef7c6eb1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -47,6 +47,9 @@ dependencies { implementation(Dependencies.Kotlin.Coroutines.android) implementation(Dependencies.ThirdParty.accompanist) implementation(Dependencies.ThirdParty.Moshi.lib) + implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect) + implementation(Dependencies.ThirdParty.Retrofit.moshi) + implementation(Dependencies.ThirdParty.SQLDelight.androidDriver) testImplementation(Dependencies.Testing.junit) androidTestImplementation(Dependencies.AndroidX.Compose.activity) androidTestImplementation(Dependencies.Testing.daggerHilt) diff --git a/api/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt b/app/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt similarity index 100% rename from api/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt rename to app/src/main/java/dev/msfjarvis/lobsters/injection/ApiModule.kt diff --git a/api/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt b/app/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt similarity index 100% rename from api/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt rename to app/src/main/java/dev/msfjarvis/lobsters/injection/BaseUrlQualifier.kt diff --git a/database/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt b/app/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt similarity index 83% rename from database/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt rename to app/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt index 96dee0fe..b0f461be 100644 --- a/database/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/injection/DatabaseModule.kt @@ -1,6 +1,7 @@ package dev.msfjarvis.lobsters.injection import android.content.Context +import com.squareup.moshi.JsonAdapter import com.squareup.sqldelight.android.AndroidSqliteDriver import com.squareup.sqldelight.db.SqlDriver import dagger.Module @@ -11,6 +12,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import dev.msfjarvis.lobsters.data.local.LobstersPost import dev.msfjarvis.lobsters.database.LobstersDatabase +import dev.msfjarvis.lobsters.model.Submitter import dev.msfjarvis.lobsters.model.SubmitterAdapter import dev.msfjarvis.lobsters.model.TagsAdapter import javax.inject.Singleton @@ -19,6 +21,12 @@ import javax.inject.Singleton @InstallIn(SingletonComponent::class) object DatabaseModule { + @Provides + @Reusable + fun providesSubmitterAdapter(jsonAdapter: JsonAdapter): SubmitterAdapter { + return SubmitterAdapter(jsonAdapter) + } + @Provides @Reusable fun providesTagsAdapter(): TagsAdapter { diff --git a/api/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt b/app/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt similarity index 100% rename from api/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt rename to app/src/main/java/dev/msfjarvis/lobsters/injection/MoshiModule.kt diff --git a/database/build.gradle.kts b/database/build.gradle.kts index 305e3af6..e0f941a8 100644 --- a/database/build.gradle.kts +++ b/database/build.gradle.kts @@ -1,17 +1,13 @@ plugins { id("com.android.library") kotlin("android") - kotlin("kapt") id("com.squareup.sqldelight") `lobsters-plugin` } dependencies { - kapt(Dependencies.AndroidX.Hilt.daggerCompiler) - implementation(Dependencies.AndroidX.Hilt.dagger) implementation(Dependencies.ThirdParty.Moshi.lib) implementation(Dependencies.ThirdParty.Moshi.moshiMetadataReflect) - implementation(Dependencies.ThirdParty.SQLDelight.androidDriver) testImplementation(Dependencies.Kotlin.Coroutines.core) testImplementation(Dependencies.ThirdParty.SQLDelight.jvmDriver) testImplementation(Dependencies.Testing.junit) diff --git a/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt b/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt index 29f113cf..d89d282a 100644 --- a/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt +++ b/database/src/main/java/dev/msfjarvis/lobsters/model/SubmitterAdapter.kt @@ -2,9 +2,8 @@ package dev.msfjarvis.lobsters.model import com.squareup.moshi.JsonAdapter import com.squareup.sqldelight.ColumnAdapter -import javax.inject.Inject -class SubmitterAdapter @Inject constructor(private val submitterJsonAdapter: JsonAdapter) : +class SubmitterAdapter(private val submitterJsonAdapter: JsonAdapter) : ColumnAdapter { override fun decode(databaseValue: String): Submitter {