Create ContributesNode annotation to generate module and assistedFactory for node.
This commit is contained in:
parent
a37cf3adde
commit
4fb063654f
4 changed files with 165 additions and 27 deletions
|
|
@ -1,19 +0,0 @@
|
|||
package io.element.android.x.features.roomlist
|
||||
|
||||
import com.squareup.anvil.annotations.ContributesTo
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
import io.element.android.x.architecture.AssistedNodeFactory
|
||||
import io.element.android.x.architecture.NodeKey
|
||||
import io.element.android.x.di.SessionScope
|
||||
|
||||
@Module
|
||||
@ContributesTo(SessionScope::class)
|
||||
abstract class RoomListModule {
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@NodeKey(RoomListNode::class)
|
||||
abstract fun bindRoomListNodeFactory(factory: RoomListNode.Factory): AssistedNodeFactory<*>
|
||||
}
|
||||
|
|
@ -9,24 +9,20 @@ import com.bumble.appyx.core.node.Node
|
|||
import com.bumble.appyx.core.plugin.Plugin
|
||||
import com.bumble.appyx.core.plugin.plugins
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.architecture.AssistedNodeFactory
|
||||
import io.element.android.x.anvilannotations.ContributesNode
|
||||
import io.element.android.x.architecture.presenterConnector
|
||||
import io.element.android.x.di.SessionScope
|
||||
import io.element.android.x.features.roomlist.model.RoomListEvents
|
||||
import io.element.android.x.matrix.core.RoomId
|
||||
import io.element.android.x.architecture.presenterConnector
|
||||
|
||||
@ContributesNode(SessionScope::class)
|
||||
class RoomListNode @AssistedInject constructor(
|
||||
@Assisted buildContext: BuildContext,
|
||||
@Assisted plugins: List<Plugin>,
|
||||
presenter: RoomListPresenter,
|
||||
) : Node(buildContext, plugins = plugins) {
|
||||
|
||||
@AssistedFactory
|
||||
interface Factory : AssistedNodeFactory<RoomListNode> {
|
||||
override fun create(buildContext: BuildContext, plugins: List<Plugin>): RoomListNode
|
||||
}
|
||||
|
||||
interface Callback : Plugin {
|
||||
fun onRoomClicked(roomId: RoomId)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue