refactor(di): migrate to Whetstone ApplicationScope

This commit is contained in:
Harsh Shandilya 2022-11-14 02:34:26 +05:30
parent 52562afbd1
commit 4a87682b68
No known key found for this signature in database
13 changed files with 33 additions and 18 deletions

View file

@ -13,6 +13,14 @@ plugins {
id("dev.msfjarvis.claw.kotlin-kapt") id("dev.msfjarvis.claw.kotlin-kapt")
id("dev.msfjarvis.claw.versioning-plugin") id("dev.msfjarvis.claw.versioning-plugin")
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.whetstone)
}
whetstone {
addOns {
compose.set(true)
workManager.set(true)
}
} }
android { android {

View file

@ -6,17 +6,17 @@
*/ */
package dev.msfjarvis.claw.android.injection package dev.msfjarvis.claw.android.injection
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.injection.scopes.AppScope
import dev.msfjarvis.claw.util.coroutines.DefaultDispatcherProvider import dev.msfjarvis.claw.util.coroutines.DefaultDispatcherProvider
import dev.msfjarvis.claw.util.coroutines.DispatcherProvider import dev.msfjarvis.claw.util.coroutines.DispatcherProvider
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
interface CoroutineDispatcherModule { interface CoroutineDispatcherModule {
@Binds fun DefaultDispatcherProvider.bind(): DispatcherProvider @Binds fun DefaultDispatcherProvider.bind(): DispatcherProvider

View file

@ -6,15 +6,15 @@
*/ */
package dev.msfjarvis.claw.android.injection package dev.msfjarvis.claw.android.injection
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.common.comments.HTMLConverter import dev.msfjarvis.claw.common.comments.HTMLConverter
import dev.msfjarvis.claw.injection.scopes.AppScope
import io.github.furstenheim.CopyDown import io.github.furstenheim.CopyDown
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
object HTMLConverterModule { object HTMLConverterModule {
@Provides @Provides

View file

@ -7,14 +7,14 @@
package dev.msfjarvis.claw.android.injection package dev.msfjarvis.claw.android.injection
import com.chimbori.crux.Crux import com.chimbori.crux.Crux
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.injection.scopes.AppScope
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
object MetadataExtractorModule { object MetadataExtractorModule {
@Provides @Provides
fun provideCrux( fun provideCrux(

View file

@ -7,11 +7,15 @@
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage") @file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")
plugins { plugins {
kotlin("jvm") kotlin("android")
id("dev.msfjarvis.claw.kotlin-library") id("dev.msfjarvis.claw.kotlin-common")
id("dev.msfjarvis.claw.android-library")
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.whetstone)
} }
android { namespace = "dev.msfjarvis.claw.api" }
anvil { generateDaggerFactories.set(true) } anvil { generateDaggerFactories.set(true) }
dependencies { dependencies {

View file

@ -6,20 +6,20 @@
*/ */
package dev.msfjarvis.claw.api.injection package dev.msfjarvis.claw.api.injection
import com.deliveryhero.whetstone.app.ApplicationScope
import com.slack.eithernet.ApiResultCallAdapterFactory import com.slack.eithernet.ApiResultCallAdapterFactory
import com.slack.eithernet.ApiResultConverterFactory import com.slack.eithernet.ApiResultConverterFactory
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.api.LobstersApi import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.injection.scopes.AppScope
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import retrofit2.Converter import retrofit2.Converter
import retrofit2.Retrofit import retrofit2.Retrofit
import retrofit2.create import retrofit2.create
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
object ApiModule { object ApiModule {
@Provides @Provides
fun provideRetrofit( fun provideRetrofit(

View file

@ -11,6 +11,7 @@ plugins {
id("dev.msfjarvis.claw.kotlin-common") id("dev.msfjarvis.claw.kotlin-common")
id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.android-library")
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.whetstone)
} }
anvil { generateDaggerFactories.set(true) } anvil { generateDaggerFactories.set(true) }

View file

@ -11,6 +11,7 @@ plugins {
id("dev.msfjarvis.claw.kotlin-common") id("dev.msfjarvis.claw.kotlin-common")
id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.android-library")
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.whetstone)
} }
anvil { generateDaggerFactories.set(true) } anvil { generateDaggerFactories.set(true) }

View file

@ -8,6 +8,7 @@ package dev.msfjarvis.claw.core.injection
import android.content.Context import android.content.Context
import android.net.TrafficStats import android.net.TrafficStats
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
@ -16,7 +17,6 @@ import dagger.multibindings.IntoSet
import dev.msfjarvis.claw.core.network.DelegatingSocketFactory import dev.msfjarvis.claw.core.network.DelegatingSocketFactory
import dev.msfjarvis.claw.core.network.NapierLogger import dev.msfjarvis.claw.core.network.NapierLogger
import dev.msfjarvis.claw.core.network.UserAgentInterceptor import dev.msfjarvis.claw.core.network.UserAgentInterceptor
import dev.msfjarvis.claw.injection.scopes.AppScope
import java.net.Socket import java.net.Socket
import javax.net.SocketFactory import javax.net.SocketFactory
import okhttp3.Cache import okhttp3.Cache
@ -25,7 +25,7 @@ import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor import okhttp3.logging.HttpLoggingInterceptor
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
interface OkHttpModule { interface OkHttpModule {
@Binds fun NapierLogger.bindLogger(): HttpLoggingInterceptor.Logger @Binds fun NapierLogger.bindLogger(): HttpLoggingInterceptor.Logger

View file

@ -6,19 +6,19 @@
*/ */
package dev.msfjarvis.claw.core.injection package dev.msfjarvis.claw.core.injection
import com.deliveryhero.whetstone.app.ApplicationScope
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.multibindings.IntoSet import dagger.multibindings.IntoSet
import dev.msfjarvis.claw.injection.scopes.AppScope
import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import okhttp3.MediaType import okhttp3.MediaType
import retrofit2.Converter import retrofit2.Converter
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
object RetrofitModule { object RetrofitModule {
@OptIn(ExperimentalSerializationApi::class) @OptIn(ExperimentalSerializationApi::class)

View file

@ -7,14 +7,14 @@
package dev.msfjarvis.claw.core.logging package dev.msfjarvis.claw.core.logging
import android.app.Application import android.app.Application
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesMultibinding import com.squareup.anvil.annotations.ContributesMultibinding
import dev.msfjarvis.claw.core.injection.AppPlugin import dev.msfjarvis.claw.core.injection.AppPlugin
import dev.msfjarvis.claw.injection.scopes.AppScope
import io.github.aakira.napier.DebugAntilog import io.github.aakira.napier.DebugAntilog
import io.github.aakira.napier.Napier import io.github.aakira.napier.Napier
import javax.inject.Inject import javax.inject.Inject
@ContributesMultibinding(AppScope::class) @ContributesMultibinding(ApplicationScope::class)
class NapierPlugin @Inject constructor() : AppPlugin { class NapierPlugin @Inject constructor() : AppPlugin {
override fun apply(application: Application) { override fun apply(application: Application) {
Napier.base(DebugAntilog()) Napier.base(DebugAntilog())

View file

@ -12,6 +12,7 @@ plugins {
id("dev.msfjarvis.claw.kotlin-common") id("dev.msfjarvis.claw.kotlin-common")
id("dev.msfjarvis.claw.android-library") id("dev.msfjarvis.claw.android-library")
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.whetstone)
} }
anvil { generateDaggerFactories.set(true) } anvil { generateDaggerFactories.set(true) }

View file

@ -9,16 +9,16 @@ package dev.msfjarvis.claw.database.injection
import android.content.Context import android.content.Context
import app.cash.sqldelight.adapter.primitive.IntColumnAdapter import app.cash.sqldelight.adapter.primitive.IntColumnAdapter
import app.cash.sqldelight.driver.android.AndroidSqliteDriver import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import com.deliveryhero.whetstone.app.ApplicationScope
import com.squareup.anvil.annotations.ContributesTo import com.squareup.anvil.annotations.ContributesTo
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dev.msfjarvis.claw.database.LobstersDatabase import dev.msfjarvis.claw.database.LobstersDatabase
import dev.msfjarvis.claw.database.local.SavedPost import dev.msfjarvis.claw.database.local.SavedPost
import dev.msfjarvis.claw.database.model.TagsAdapter import dev.msfjarvis.claw.database.model.TagsAdapter
import dev.msfjarvis.claw.injection.scopes.AppScope
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(ApplicationScope::class)
object DatabaseModule { object DatabaseModule {
private const val LOBSTERS_DATABASE_NAME = "SavedPosts.db" private const val LOBSTERS_DATABASE_NAME = "SavedPosts.db"