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:login"))
implementation(project(":features:roomlist")) implementation(project(":features:roomlist"))
implementation(project(":features:messages")) implementation(project(":features:messages"))
implementation(project(":libraries:daggerscopes")) implementation(project(":libraries:di"))
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.2.0") coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.2.0")
implementation(libs.compose.destinations) 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.core.di.DaggerComponentOwner
import io.element.android.x.di.DaggerAppComponent import io.element.android.x.di.DaggerAppComponent
import io.element.android.x.initializer.CoilInitializer 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.MavericksInitializer
import io.element.android.x.initializer.TimberInitializer
import io.element.android.x.matrix.MatrixInstance import io.element.android.x.matrix.MatrixInstance
import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineName
import kotlinx.coroutines.MainScope import kotlinx.coroutines.MainScope
@@ -20,10 +20,10 @@ class ElementXApplication : Application(), DaggerComponentOwner {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
daggerComponent = DaggerAppComponent.factory().create(this) daggerComponent = DaggerAppComponent.factory().create(applicationContext)
MatrixInstance.init(this, applicationScope) MatrixInstance.init(this, applicationScope)
AppInitializer.getInstance(this).apply { AppInitializer.getInstance(this).apply {
initializeComponent(TimberInitializer::class.java) initializeComponent(MatrixInitializer::class.java)
initializeComponent(CoilInitializer::class.java) initializeComponent(CoilInitializer::class.java)
initializeComponent(MavericksInitializer::class.java) initializeComponent(MavericksInitializer::class.java)
} }

View File

@@ -1,6 +1,6 @@
package io.element.android.x.di package io.element.android.x.di
import android.app.Application import android.content.Context
import com.squareup.anvil.annotations.MergeComponent import com.squareup.anvil.annotations.MergeComponent
import dagger.BindsInstance import dagger.BindsInstance
import dagger.Component import dagger.Component
@@ -11,6 +11,6 @@ interface AppComponent {
@Component.Factory @Component.Factory
interface 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.Coil
import coil.ImageLoader import coil.ImageLoader
import coil.ImageLoaderFactory import coil.ImageLoaderFactory
import io.element.android.x.core.di.DaggerComponentOwner
import io.element.android.x.core.di.bindings import io.element.android.x.core.di.bindings
import io.element.android.x.di.AppBindings import io.element.android.x.di.AppBindings
import io.element.android.x.di.AppComponent
class CoilInitializer : Initializer<Unit> { class CoilInitializer : Initializer<Unit> {
@@ -16,7 +14,7 @@ class CoilInitializer : Initializer<Unit> {
Coil.setImageLoader(ElementImageLoaderFactory(context)) Coil.setImageLoader(ElementImageLoaderFactory(context))
} }
override fun dependencies(): MutableList<Class<out Initializer<*>>> = mutableListOf() override fun dependencies(): List<Class<out Initializer<*>>> = emptyList()
} }
private class ElementImageLoaderFactory( 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) 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 androidx.startup.Initializer
import timber.log.Timber import timber.log.Timber
class TimberInitializer: Initializer<Unit> { class TimberInitializer : Initializer<Unit> {
override fun create(context: Context) { override fun create(context: Context) {
Timber.plant(Timber.DebugTree()) 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 { dependencies {
api(project(":libraries:rustsdk")) api(project(":libraries:rustsdk"))
implementation(project(":libraries:daggerscopes")) implementation(project(":libraries:di"))
implementation(project(":libraries:core")) implementation(project(":libraries:core"))
implementation(libs.timber) implementation(libs.timber)
implementation("net.java.dev.jna:jna:5.12.1@aar") implementation("net.java.dev.jna:jna:5.12.1@aar")

View File

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

View File

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

View File

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