Some cleanup:
- Remove unnecessary `GlobalScope`. - Rename `Component` to `Graph`, `DaggerComponentOwner` to `DependencyInjectionGraphOwner`. - Rename component builders to factories, where necessary.
This commit is contained in:
parent
6a05e1b911
commit
08bbe3fdaa
20 changed files with 99 additions and 127 deletions
|
|
@ -9,17 +9,16 @@ package io.element.android.x
|
|||
|
||||
import android.app.Application
|
||||
import androidx.startup.AppInitializer
|
||||
import dev.zacsweers.metro.asContribution
|
||||
import dev.zacsweers.metro.createGraphFactory
|
||||
import io.element.android.features.cachecleaner.api.CacheCleanerInitializer
|
||||
import io.element.android.libraries.di.DaggerComponentOwner
|
||||
import io.element.android.x.di.AppComponent
|
||||
import io.element.android.x.di.globalGraph
|
||||
import io.element.android.libraries.di.DependencyInjectionGraphOwner
|
||||
import io.element.android.x.di.AppGraph
|
||||
import io.element.android.x.info.logApplicationInfo
|
||||
import io.element.android.x.initializer.CrashInitializer
|
||||
import io.element.android.x.initializer.PlatformInitializer
|
||||
|
||||
class ElementXApplication : Application(), DaggerComponentOwner {
|
||||
override val daggerComponent: AppComponent = globalGraph.asContribution<AppComponent.Factory>().create(this)
|
||||
class ElementXApplication : Application(), DependencyInjectionGraphOwner {
|
||||
override val graph: AppGraph = createGraphFactory<AppGraph.Factory>().create(this)
|
||||
|
||||
override fun onCreate() {
|
||||
super.onCreate()
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import com.bumble.appyx.core.node.ParentNode
|
|||
import com.bumble.appyx.core.plugin.Plugin
|
||||
import io.element.android.appnav.RootFlowNode
|
||||
import io.element.android.libraries.architecture.createNode
|
||||
import io.element.android.libraries.di.DaggerComponentOwner
|
||||
import io.element.android.libraries.di.DependencyInjectionGraphOwner
|
||||
import io.element.android.libraries.di.annotations.ApplicationContext
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
|
@ -38,8 +38,8 @@ class MainNode(
|
|||
buildContext = buildContext,
|
||||
plugins = plugins,
|
||||
),
|
||||
DaggerComponentOwner {
|
||||
override val daggerComponent = (context as DaggerComponentOwner).daggerComponent
|
||||
DependencyInjectionGraphOwner {
|
||||
override val graph = (context as DependencyInjectionGraphOwner).graph
|
||||
|
||||
override fun resolve(navTarget: RootNavTarget, buildContext: BuildContext): Node {
|
||||
return createNode<RootFlowNode>(buildContext = buildContext)
|
||||
|
|
|
|||
|
|
@ -9,22 +9,20 @@ package io.element.android.x.di
|
|||
|
||||
import android.content.Context
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
import dev.zacsweers.metro.GraphExtension
|
||||
import dev.zacsweers.metro.DependencyGraph
|
||||
import dev.zacsweers.metro.Provides
|
||||
import io.element.android.libraries.architecture.NodeFactoriesBindings
|
||||
import io.element.android.libraries.di.annotations.ApplicationContext
|
||||
|
||||
@GraphExtension(AppScope::class)
|
||||
interface AppComponent : NodeFactoriesBindings {
|
||||
val sessionComponentFactory: SessionComponent.Factory
|
||||
@DependencyGraph(AppScope::class)
|
||||
interface AppGraph : NodeFactoriesBindings {
|
||||
val sessionGraphFactory: SessionGraph.Factory
|
||||
|
||||
@ContributesTo(GlobalScope::class)
|
||||
@GraphExtension.Factory
|
||||
@DependencyGraph.Factory
|
||||
interface Factory {
|
||||
fun create(
|
||||
@ApplicationContext @Provides
|
||||
context: Context
|
||||
): AppComponent
|
||||
): AppGraph
|
||||
}
|
||||
}
|
||||
|
|
@ -16,10 +16,10 @@ import io.element.android.libraries.matrix.api.room.JoinedRoom
|
|||
@ContributesBinding(SessionScope::class)
|
||||
@Inject
|
||||
class DefaultRoomComponentFactory(
|
||||
private val sessionComponent: SessionComponent,
|
||||
private val sessionGraph: SessionGraph,
|
||||
) : RoomComponentFactory {
|
||||
override fun create(room: JoinedRoom): Any {
|
||||
return sessionComponent.roomComponentFactory
|
||||
return sessionGraph.roomGraphFactory
|
||||
.create(room, room)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ package io.element.android.x.di
|
|||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import io.element.android.appnav.di.SessionComponentFactory
|
||||
import io.element.android.appnav.di.SessionGraphFactory
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
|
||||
@ContributesBinding(AppScope::class)
|
||||
@Inject
|
||||
class DefaultSessionComponentFactory(
|
||||
private val appComponent: AppComponent
|
||||
) : SessionComponentFactory {
|
||||
class DefaultSessionGraphFactory(
|
||||
private val appGraph: AppGraph
|
||||
) : SessionGraphFactory {
|
||||
override fun create(client: MatrixClient): Any {
|
||||
return appComponent.sessionComponentFactory.createSessionComponent(client)
|
||||
return appGraph.sessionGraphFactory.create(client)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.x.di
|
||||
|
||||
import dev.zacsweers.metro.DependencyGraph
|
||||
import dev.zacsweers.metro.createGraph
|
||||
|
||||
@DependencyGraph(GlobalScope::class)
|
||||
interface GlobalGraph
|
||||
|
||||
internal val globalGraph = createGraph<GlobalGraph>()
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
/*
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.x.di
|
||||
|
||||
class GlobalScope private constructor()
|
||||
|
|
@ -17,13 +17,13 @@ import io.element.android.libraries.matrix.api.room.BaseRoom
|
|||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
|
||||
@GraphExtension(RoomScope::class)
|
||||
interface RoomComponent : NodeFactoriesBindings {
|
||||
interface RoomGraph : NodeFactoriesBindings {
|
||||
@ContributesTo(SessionScope::class)
|
||||
@GraphExtension.Factory
|
||||
interface Factory {
|
||||
fun create(
|
||||
@Provides joinedRoom: JoinedRoom,
|
||||
@Provides baseRoom: BaseRoom
|
||||
): RoomComponent
|
||||
): RoomGraph
|
||||
}
|
||||
}
|
||||
|
|
@ -16,12 +16,12 @@ import io.element.android.libraries.di.SessionScope
|
|||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
|
||||
@GraphExtension(SessionScope::class)
|
||||
interface SessionComponent : NodeFactoriesBindings {
|
||||
val roomComponentFactory: RoomComponent.Factory
|
||||
interface SessionGraph : NodeFactoriesBindings {
|
||||
val roomGraphFactory: RoomGraph.Factory
|
||||
|
||||
@ContributesTo(AppScope::class)
|
||||
@GraphExtension.Factory
|
||||
interface Factory {
|
||||
fun createSessionComponent(@Provides matrixClient: MatrixClient): SessionComponent
|
||||
fun create(@Provides matrixClient: MatrixClient): SessionGraph
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue