Skip to content

Commit 13ae189

Browse files
committed
Let the factory for ActionListPresenter be injected in Node.
1 parent 207e4f8 commit 13ae189

File tree

7 files changed

+23
-38
lines changed

7 files changed

+23
-38
lines changed

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesNode.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import dagger.assisted.Assisted
2828
import dagger.assisted.AssistedInject
2929
import io.element.android.anvilannotations.ContributesNode
3030
import io.element.android.compound.theme.ElementTheme
31+
import io.element.android.features.messages.impl.actionlist.ActionListPresenter
32+
import io.element.android.features.messages.impl.actionlist.model.TimelineItemActionPostProcessor
3133
import io.element.android.features.messages.impl.attachments.Attachment
3234
import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents
3335
import io.element.android.features.messages.impl.messagecomposer.MessageComposerPresenter
@@ -65,6 +67,7 @@ class MessagesNode @AssistedInject constructor(
6567
messageComposerPresenterFactory: MessageComposerPresenter.Factory,
6668
timelinePresenterFactory: TimelinePresenter.Factory,
6769
presenterFactory: MessagesPresenter.Factory,
70+
actionListPresenterFactory: ActionListPresenter.Factory,
6871
private val timelineItemPresenterFactories: TimelineItemPresenterFactories,
6972
private val mediaPlayer: MediaPlayer,
7073
private val permalinkParser: PermalinkParser,
@@ -73,6 +76,7 @@ class MessagesNode @AssistedInject constructor(
7376
navigator = this,
7477
composerPresenter = messageComposerPresenterFactory.create(this),
7578
timelinePresenter = timelinePresenterFactory.create(this),
79+
actionListPresenter = actionListPresenterFactory.create(TimelineItemActionPostProcessor.Default)
7680
)
7781
private val callbacks = plugins<Callback>()
7882

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesPresenter.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ import im.vector.app.features.analytics.plan.PinUnpinAction
2828
import io.element.android.appconfig.MessageComposerConfig
2929
import io.element.android.features.messages.api.timeline.HtmlConverterProvider
3030
import io.element.android.features.messages.impl.actionlist.ActionListEvents
31-
import io.element.android.features.messages.impl.actionlist.ActionListPresenter
31+
import io.element.android.features.messages.impl.actionlist.ActionListState
3232
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
33-
import io.element.android.features.messages.impl.actionlist.model.TimelineItemActionPostProcessor
3433
import io.element.android.features.messages.impl.crypto.identity.IdentityChangeState
3534
import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents
3635
import io.element.android.features.messages.impl.messagecomposer.MessageComposerState
@@ -93,7 +92,7 @@ class MessagesPresenter @AssistedInject constructor(
9392
@Assisted private val timelinePresenter: Presenter<TimelineState>,
9493
private val timelineProtectionPresenter: Presenter<TimelineProtectionState>,
9594
private val identityChangeStatePresenter: Presenter<IdentityChangeState>,
96-
actionListPresenterFactory: ActionListPresenter.Factory,
95+
@Assisted private val actionListPresenter: Presenter<ActionListState>,
9796
private val customReactionPresenter: Presenter<CustomReactionState>,
9897
private val reactionSummaryPresenter: Presenter<ReactionSummaryState>,
9998
private val readReceiptBottomSheetPresenter: Presenter<ReadReceiptBottomSheetState>,
@@ -110,14 +109,13 @@ class MessagesPresenter @AssistedInject constructor(
110109
private val permalinkParser: PermalinkParser,
111110
private val analyticsService: AnalyticsService,
112111
) : Presenter<MessagesState> {
113-
private val actionListPresenter = actionListPresenterFactory.create(TimelineItemActionPostProcessor.Default)
114-
115112
@AssistedFactory
116113
interface Factory {
117114
fun create(
118115
navigator: MessagesNavigator,
119116
composerPresenter: Presenter<MessageComposerState>,
120117
timelinePresenter: Presenter<TimelineState>,
118+
actionListPresenter: Presenter<ActionListState>,
121119
): MessagesPresenter
122120
}
123121

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListNode.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.bumble.appyx.core.plugin.plugins
1919
import dagger.assisted.Assisted
2020
import dagger.assisted.AssistedInject
2121
import io.element.android.anvilannotations.ContributesNode
22+
import io.element.android.features.messages.impl.actionlist.ActionListPresenter
2223
import io.element.android.features.messages.impl.timeline.di.LocalTimelineItemPresenterFactories
2324
import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories
2425
import io.element.android.features.messages.impl.timeline.model.TimelineItem
@@ -35,6 +36,7 @@ class PinnedMessagesListNode @AssistedInject constructor(
3536
@Assisted buildContext: BuildContext,
3637
@Assisted plugins: List<Plugin>,
3738
presenterFactory: PinnedMessagesListPresenter.Factory,
39+
actionListPresenterFactory: ActionListPresenter.Factory,
3840
private val timelineItemPresenterFactories: TimelineItemPresenterFactories,
3941
private val permalinkParser: PermalinkParser,
4042
) : Node(buildContext, plugins = plugins), PinnedMessagesListNavigator {
@@ -47,7 +49,10 @@ class PinnedMessagesListNode @AssistedInject constructor(
4749
fun onForwardEventClick(eventId: EventId)
4850
}
4951

50-
private val presenter = presenterFactory.create(this)
52+
private val presenter = presenterFactory.create(
53+
navigator = this,
54+
actionListPresenter = actionListPresenterFactory.create(PinnedMessagesListTimelineActionPostProcessor())
55+
)
5156
private val callbacks = plugins<Callback>()
5257

5358
private fun onEventClick(event: TimelineItem.Event) {

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenter.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import dagger.assisted.AssistedInject
2323
import im.vector.app.features.analytics.plan.Interaction
2424
import im.vector.app.features.analytics.plan.PinUnpinAction
2525
import io.element.android.features.messages.impl.UserEventPermissions
26-
import io.element.android.features.messages.impl.actionlist.ActionListPresenter
26+
import io.element.android.features.messages.impl.actionlist.ActionListState
2727
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
2828
import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider
2929
import io.element.android.features.messages.impl.timeline.TimelineRoomInfo
@@ -64,13 +64,16 @@ class PinnedMessagesListPresenter @AssistedInject constructor(
6464
private val timelineProvider: PinnedEventsTimelineProvider,
6565
private val timelineProtectionPresenter: Presenter<TimelineProtectionState>,
6666
private val snackbarDispatcher: SnackbarDispatcher,
67-
actionListPresenterFactory: ActionListPresenter.Factory,
67+
@Assisted private val actionListPresenter: Presenter<ActionListState>,
6868
private val appCoroutineScope: CoroutineScope,
6969
private val analyticsService: AnalyticsService,
7070
) : Presenter<PinnedMessagesListState> {
7171
@AssistedFactory
7272
interface Factory {
73-
fun create(navigator: PinnedMessagesListNavigator): PinnedMessagesListPresenter
73+
fun create(
74+
navigator: PinnedMessagesListNavigator,
75+
actionListPresenter: Presenter<ActionListState>,
76+
): PinnedMessagesListPresenter
7477
}
7578

7679
private val timelineItemsFactory: TimelineItemsFactory = timelineItemsFactoryCreator.create(
@@ -79,7 +82,6 @@ class PinnedMessagesListPresenter @AssistedInject constructor(
7982
computeReactions = false,
8083
)
8184
)
82-
private val actionListPresenter = actionListPresenterFactory.create(PinnedMessagesListTimelineActionPostProcessor())
8385

8486
@Composable
8587
override fun present(): PinnedMessagesListState {

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/MessagesPresenterTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.google.common.truth.Truth.assertThat
1414
import im.vector.app.features.analytics.plan.PinUnpinAction
1515
import io.element.android.features.messages.impl.actionlist.ActionListEvents
1616
import io.element.android.features.messages.impl.actionlist.ActionListState
17-
import io.element.android.features.messages.impl.actionlist.FakeActionListPresenter
17+
import io.element.android.features.messages.impl.actionlist.anActionListState
1818
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
1919
import io.element.android.features.messages.impl.crypto.identity.anIdentityChangeState
2020
import io.element.android.features.messages.impl.fixtures.aMessageEvent
@@ -1116,7 +1116,7 @@ class MessagesPresenterTest {
11161116
voiceMessageComposerPresenter = { aVoiceMessageComposerState() },
11171117
timelinePresenter = { aTimelineState(eventSink = timelineEventSink) },
11181118
timelineProtectionPresenter = { aTimelineProtectionState() },
1119-
actionListPresenterFactory = FakeActionListPresenter.Factory(actionListEventSink),
1119+
actionListPresenter = { anActionListState(eventSink = actionListEventSink) },
11201120
customReactionPresenter = { aCustomReactionState() },
11211121
reactionSummaryPresenter = { aReactionSummaryState() },
11221122
readReceiptBottomSheetPresenter = { aReadReceiptBottomSheetState() },

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/actionlist/FakeActionListPresenter.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListPresenterTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package io.element.android.features.messages.impl.pinned.list
99

1010
import com.google.common.truth.Truth.assertThat
1111
import im.vector.app.features.analytics.plan.PinUnpinAction
12-
import io.element.android.features.messages.impl.actionlist.FakeActionListPresenter
12+
import io.element.android.features.messages.impl.actionlist.anActionListState
1313
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
1414
import io.element.android.features.messages.impl.fixtures.aTimelineItemsFactoryCreator
1515
import io.element.android.features.messages.impl.pinned.PinnedEventsTimelineProvider
@@ -312,7 +312,7 @@ class PinnedMessagesListPresenterTest {
312312
timelineProvider = timelineProvider,
313313
timelineProtectionPresenter = { aTimelineProtectionState() },
314314
snackbarDispatcher = SnackbarDispatcher(),
315-
actionListPresenterFactory = FakeActionListPresenter.Factory(),
315+
actionListPresenter = { anActionListState() },
316316
analyticsService = analyticsService,
317317
appCoroutineScope = this,
318318
)

0 commit comments

Comments
 (0)