Continue dagger setup...

This commit is contained in:
ganfra
2022-12-15 17:50:25 +01:00
parent b7f84f65a8
commit 8620a86333
17 changed files with 44 additions and 24 deletions

View File

@@ -120,7 +120,7 @@ dependencies {
implementation(project(":features:login"))
implementation(project(":features:roomlist"))
implementation(project(":features:messages"))
implementation(project(":libraries:daggerscopes"))
implementation(project(":libraries:di"))
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.2.0")
implementation(libs.compose.destinations)

View File

@@ -5,8 +5,8 @@ import androidx.startup.AppInitializer
import io.element.android.x.core.di.DaggerComponentOwner
import io.element.android.x.di.DaggerAppComponent
import io.element.android.x.initializer.CoilInitializer
import io.element.android.x.initializer.MatrixInitializer
import io.element.android.x.initializer.MavericksInitializer
import io.element.android.x.initializer.TimberInitializer
import io.element.android.x.matrix.MatrixInstance
import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.MainScope
@@ -20,10 +20,10 @@ class ElementXApplication : Application(), DaggerComponentOwner {
override fun onCreate() {
super.onCreate()
daggerComponent = DaggerAppComponent.factory().create(this)
daggerComponent = DaggerAppComponent.factory().create(applicationContext)
MatrixInstance.init(this, applicationScope)
AppInitializer.getInstance(this).apply {
initializeComponent(TimberInitializer::class.java)
initializeComponent(MatrixInitializer::class.java)
initializeComponent(CoilInitializer::class.java)
initializeComponent(MavericksInitializer::class.java)
}

View File

@@ -1,6 +1,6 @@
package io.element.android.x.di
import android.app.Application
import android.content.Context
import com.squareup.anvil.annotations.MergeComponent
import dagger.BindsInstance
import dagger.Component
@@ -11,6 +11,6 @@ interface AppComponent {
@Component.Factory
interface Factory {
fun create(@BindsInstance application: Application): AppComponent
fun create(@ApplicationContext @BindsInstance context: Context): AppComponent
}
}

View File

@@ -5,10 +5,8 @@ import androidx.startup.Initializer
import coil.Coil
import coil.ImageLoader
import coil.ImageLoaderFactory
import io.element.android.x.core.di.DaggerComponentOwner
import io.element.android.x.core.di.bindings
import io.element.android.x.di.AppBindings
import io.element.android.x.di.AppComponent
class CoilInitializer : Initializer<Unit> {
@@ -16,7 +14,7 @@ class CoilInitializer : Initializer<Unit> {
Coil.setImageLoader(ElementImageLoaderFactory(context))
}
override fun dependencies(): MutableList<Class<out Initializer<*>>> = mutableListOf()
override fun dependencies(): List<Class<out Initializer<*>>> = emptyList()
}
private class ElementImageLoaderFactory(

View File

@@ -0,0 +1,23 @@
package io.element.android.x.initializer
import android.content.Context
import androidx.startup.Initializer
import com.airbnb.mvrx.Mavericks
import io.element.android.x.matrix.tracing.TracingConfigurations
import io.element.android.x.matrix.tracing.setupTracing
import io.element.android.x.sdk.matrix.BuildConfig
class MatrixInitializer : Initializer<Unit> {
override fun create(context: Context) {
if (BuildConfig.DEBUG) {
setupTracing(TracingConfigurations.debug)
} else {
setupTracing(TracingConfigurations.release)
}
}
override fun dependencies(): List<Class<out Initializer<*>>> = emptyList()
}

View File

@@ -10,7 +10,7 @@ class MavericksInitializer : Initializer<Unit> {
Mavericks.initialize(context)
}
override fun dependencies(): MutableList<Class<out Initializer<*>>> = mutableListOf()
override fun dependencies(): List<Class<out Initializer<*>>> = listOf()
}

View File

@@ -4,11 +4,12 @@ import android.content.Context
import androidx.startup.Initializer
import timber.log.Timber
class TimberInitializer: Initializer<Unit> {
class TimberInitializer : Initializer<Unit> {
override fun create(context: Context) {
Timber.plant(Timber.DebugTree())
}
override fun dependencies(): MutableList<Class<out Initializer<*>>> = mutableListOf()
override fun dependencies(): List<Class<out Initializer<*>>> =
listOf(TimberInitializer::class.java)
}

View File

@@ -0,0 +1,5 @@
package io.element.android.x.di
import javax.inject.Qualifier
@Qualifier annotation class ApplicationContext

View File

@@ -14,7 +14,7 @@ anvil {
dependencies {
api(project(":libraries:rustsdk"))
implementation(project(":libraries:daggerscopes"))
implementation(project(":libraries:di"))
implementation(project(":libraries:core"))
implementation(libs.timber)
implementation("net.java.dev.jna:jna:5.12.1@aar")

View File

@@ -1,8 +1,9 @@
package io.element.android.x.matrix
import android.app.Application
import android.content.Context
import coil.ComponentRegistry
import io.element.android.x.core.coroutine.CoroutineDispatchers
import io.element.android.x.di.ApplicationContext
import io.element.android.x.di.AppScope
import io.element.android.x.di.SingleIn
import io.element.android.x.matrix.media.MediaFetcher
@@ -26,7 +27,7 @@ import javax.inject.Inject
@SingleIn(AppScope::class)
class Matrix @Inject constructor(
private val coroutineScope: CoroutineScope,
context: Application,
@ApplicationContext context: Context,
) {
private val coroutineDispatchers = CoroutineDispatchers(
io = Dispatchers.IO,

View File

@@ -2,9 +2,6 @@ package io.element.android.x.matrix
import android.annotation.SuppressLint
import android.app.Application
import io.element.android.x.matrix.tracing.TracingConfigurations
import io.element.android.x.matrix.tracing.setupTracing
import io.element.android.x.sdk.matrix.BuildConfig
import kotlinx.coroutines.CoroutineScope
@@ -13,11 +10,6 @@ object MatrixInstance {
private lateinit var instance: Matrix
fun init(context: Application, coroutineScope: CoroutineScope) {
if (BuildConfig.DEBUG) {
setupTracing(TracingConfigurations.debug)
} else {
setupTracing(TracingConfigurations.release)
}
instance = Matrix(coroutineScope, context)
}

View File

@@ -28,6 +28,6 @@ include(":features:login")
include(":features:roomlist")
include(":features:messages")
include(":libraries:designsystem")
include(":libraries:daggerscopes")
include(":libraries:di")
include(":anvilannotations")
include(":anvilcodegen")