src: add hilt and update hilt modules

Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
This commit is contained in:
Aditya Wasan 2021-01-31 17:51:21 +05:30
parent 9c4c0b1e56
commit 9e943c82b9
No known key found for this signature in database
GPG key ID: 6D6DF3BF15DE79B5
5 changed files with 36 additions and 10 deletions

View file

@ -1,19 +1,31 @@
package dev.msfjarvis.lobsters.injection
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.squareup.moshi.adapter
import dagger.Module
import dagger.Provides
import dagger.Reusable
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import dev.msfjarvis.lobsters.model.Submitter
import dev.zacsweers.moshix.reflect.MetadataKotlinJsonAdapterFactory
@Module
@InstallIn(SingletonComponent::class)
object MoshiModule {
@Provides
@Reusable
fun provideMoshi(): Moshi {
return Moshi.Builder()
.add(MetadataKotlinJsonAdapterFactory())
.build()
}
@OptIn(ExperimentalStdlibApi::class)
@Provides
@Reusable
fun provideSubmitterJsonAdapter(moshi: Moshi): JsonAdapter<Submitter> {
return moshi.adapter()
}
}

View file

@ -44,7 +44,6 @@ dependencies {
implementation(Dependencies.Kotlin.Coroutines.android)
implementation(Dependencies.ThirdParty.accompanist)
implementation(Dependencies.ThirdParty.Moshi.lib)
implementation(Dependencies.ThirdParty.SQLDelight.androidDriver)
testImplementation(Dependencies.Testing.junit)
androidTestImplementation(Dependencies.Testing.daggerHilt)
androidTestImplementation(Dependencies.Testing.uiTest)

View file

@ -1,13 +1,17 @@
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)

View file

@ -5,6 +5,7 @@ import com.squareup.sqldelight.android.AndroidSqliteDriver
import com.squareup.sqldelight.db.SqlDriver
import dagger.Module
import dagger.Provides
import dagger.Reusable
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
@ -18,6 +19,12 @@ import javax.inject.Singleton
@InstallIn(SingletonComponent::class)
object DatabaseModule {
@Provides
@Reusable
fun providesTagsAdapter(): TagsAdapter {
return TagsAdapter()
}
@Provides
@Singleton
fun providesSqlDriver(@ApplicationContext context: Context): SqlDriver {
@ -26,7 +33,14 @@ object DatabaseModule {
@Provides
@Singleton
fun providesLobstersDatabase(sqlDriver: SqlDriver): LobstersDatabase {
return LobstersDatabase(sqlDriver, LobstersPost.Adapter(SubmitterAdapter(), TagsAdapter()))
fun providesLobstersDatabase(
sqlDriver: SqlDriver,
submitterAdapter: SubmitterAdapter,
tagsAdapter: TagsAdapter
): LobstersDatabase {
return LobstersDatabase(
sqlDriver,
LobstersPost.Adapter(submitterAdapter, tagsAdapter)
)
}
}

View file

@ -1,14 +1,11 @@
package dev.msfjarvis.lobsters.model
import com.squareup.moshi.Moshi
import com.squareup.moshi.adapter
import com.squareup.moshi.JsonAdapter
import com.squareup.sqldelight.ColumnAdapter
import dev.zacsweers.moshix.reflect.MetadataKotlinJsonAdapterFactory
import javax.inject.Inject
@OptIn(ExperimentalStdlibApi::class)
class SubmitterAdapter : ColumnAdapter<Submitter, String> {
private val moshi = Moshi.Builder().add(MetadataKotlinJsonAdapterFactory()).build()
private val submitterJsonAdapter = moshi.adapter<Submitter>()
class SubmitterAdapter @Inject constructor(private val submitterJsonAdapter: JsonAdapter<Submitter>) :
ColumnAdapter<Submitter, String> {
override fun decode(databaseValue: String): Submitter {
return submitterJsonAdapter.fromJson(databaseValue)!!