Skip to content

Commit 7d9b865

Browse files
committed
Show "View Event" if the developer mode is enabled.
1 parent 0424192 commit 7d9b865

File tree

3 files changed

+33
-27
lines changed

3 files changed

+33
-27
lines changed

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package io.element.android.features.messages.impl.actionlist
1818

1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.runtime.MutableState
21+
import androidx.compose.runtime.collectAsState
2122
import androidx.compose.runtime.derivedStateOf
2223
import androidx.compose.runtime.getValue
2324
import androidx.compose.runtime.mutableStateOf
@@ -30,15 +31,15 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
3031
import io.element.android.features.messages.impl.timeline.model.event.TimelineItemStateContent
3132
import io.element.android.features.messages.impl.timeline.model.event.canBeCopied
3233
import io.element.android.features.messages.impl.timeline.model.event.canReact
34+
import io.element.android.features.preferences.api.store.PreferencesStore
3335
import io.element.android.libraries.architecture.Presenter
34-
import io.element.android.libraries.core.meta.BuildMeta
3536
import kotlinx.collections.immutable.toImmutableList
3637
import kotlinx.coroutines.CoroutineScope
3738
import kotlinx.coroutines.launch
3839
import javax.inject.Inject
3940

4041
class ActionListPresenter @Inject constructor(
41-
private val buildMeta: BuildMeta,
42+
private val preferencesStore: PreferencesStore,
4243
) : Presenter<ActionListState> {
4344

4445
@Composable
@@ -49,6 +50,8 @@ class ActionListPresenter @Inject constructor(
4950
mutableStateOf(ActionListState.Target.None)
5051
}
5152

53+
val isDeveloperModeEnabled by preferencesStore.isDevelopModeEnabledFlow().collectAsState(initial = false)
54+
5255
val displayEmojiReactions by remember {
5356
derivedStateOf {
5457
val event = (target.value as? ActionListState.Target.Success)?.event
@@ -63,6 +66,7 @@ class ActionListPresenter @Inject constructor(
6366
timelineItem = event.event,
6467
userCanRedact = event.canRedact,
6568
userCanSendMessage = event.canSendMessage,
69+
isDeveloperModeEnabled = isDeveloperModeEnabled,
6670
target = target,
6771
)
6872
}
@@ -79,13 +83,14 @@ class ActionListPresenter @Inject constructor(
7983
timelineItem: TimelineItem.Event,
8084
userCanRedact: Boolean,
8185
userCanSendMessage: Boolean,
86+
isDeveloperModeEnabled: Boolean,
8287
target: MutableState<ActionListState.Target>
8388
) = launch {
8489
target.value = ActionListState.Target.Loading(timelineItem)
8590
val actions =
8691
when (timelineItem.content) {
8792
is TimelineItemRedactedContent -> {
88-
if (buildMeta.isDebuggable) {
93+
if (isDeveloperModeEnabled) {
8994
listOf(TimelineItemAction.ViewSource)
9095
} else {
9196
emptyList()
@@ -94,7 +99,7 @@ class ActionListPresenter @Inject constructor(
9499
is TimelineItemStateContent -> {
95100
buildList {
96101
add(TimelineItemAction.Copy)
97-
if (buildMeta.isDebuggable) {
102+
if (isDeveloperModeEnabled) {
98103
add(TimelineItemAction.ViewSource)
99104
}
100105
}
@@ -115,7 +120,7 @@ class ActionListPresenter @Inject constructor(
115120
if (timelineItem.content.canBeCopied()) {
116121
add(TimelineItemAction.Copy)
117122
}
118-
if (buildMeta.isDebuggable) {
123+
if (isDeveloperModeEnabled) {
119124
add(TimelineItemAction.ViewSource)
120125
}
121126
if (!timelineItem.isMine) {
@@ -144,7 +149,7 @@ class ActionListPresenter @Inject constructor(
144149
if (timelineItem.content.canBeCopied()) {
145150
add(TimelineItemAction.Copy)
146151
}
147-
if (buildMeta.isDebuggable) {
152+
if (isDeveloperModeEnabled) {
148153
add(TimelineItemAction.ViewSource)
149154
}
150155
if (!timelineItem.isMine) {

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ import io.element.android.libraries.matrix.test.AN_EVENT_ID
6565
import io.element.android.libraries.matrix.test.A_ROOM_ID
6666
import io.element.android.libraries.matrix.test.A_SESSION_ID
6767
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
68-
import io.element.android.libraries.matrix.test.core.aBuildMeta
6968
import io.element.android.libraries.matrix.test.room.FakeMatrixRoom
7069
import io.element.android.libraries.matrix.test.room.aRoomMember
7170
import io.element.android.libraries.mediapickers.test.FakePickerProvider
@@ -623,12 +622,11 @@ class MessagesPresenterTest {
623622
appScope = this,
624623
analyticsService = analyticsService,
625624
)
626-
val buildMeta = aBuildMeta()
627-
val actionListPresenter = ActionListPresenter(buildMeta = buildMeta)
625+
val preferencesStore = InMemoryPreferencesStore(isRichTextEditorEnabled = true)
626+
val actionListPresenter = ActionListPresenter(preferencesStore = preferencesStore)
628627
val customReactionPresenter = CustomReactionPresenter(emojibaseProvider = FakeEmojibaseProvider())
629628
val reactionSummaryPresenter = ReactionSummaryPresenter(room = matrixRoom)
630629
val retrySendMenuPresenter = RetrySendMenuPresenter(room = matrixRoom)
631-
val preferencesStore = InMemoryPreferencesStore(isRichTextEditorEnabled = true)
632630
return MessagesPresenter(
633631
room = matrixRoom,
634632
composerPresenter = messageComposerPresenter,

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

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
3131
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemImageContent
3232
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemPollContent
3333
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemStateEventContent
34+
import io.element.android.libraries.featureflag.test.InMemoryPreferencesStore
3435
import io.element.android.libraries.matrix.test.A_MESSAGE
35-
import io.element.android.libraries.matrix.test.core.aBuildMeta
3636
import io.element.android.tests.testutils.WarmUpRule
3737
import kotlinx.collections.immutable.persistentListOf
3838
import kotlinx.coroutines.test.runTest
@@ -46,7 +46,7 @@ class ActionListPresenterTest {
4646

4747
@Test
4848
fun `present - initial state`() = runTest {
49-
val presenter = anActionListPresenter(isBuildDebuggable = true)
49+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
5050
moleculeFlow(RecompositionMode.Immediate) {
5151
presenter.present()
5252
}.test {
@@ -57,7 +57,7 @@ class ActionListPresenterTest {
5757

5858
@Test
5959
fun `present - compute for message from me redacted`() = runTest {
60-
val presenter = anActionListPresenter(isBuildDebuggable = true)
60+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
6161
moleculeFlow(RecompositionMode.Immediate) {
6262
presenter.present()
6363
}.test {
@@ -82,7 +82,7 @@ class ActionListPresenterTest {
8282

8383
@Test
8484
fun `present - compute for message from others redacted`() = runTest {
85-
val presenter = anActionListPresenter(isBuildDebuggable = true)
85+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
8686
moleculeFlow(RecompositionMode.Immediate) {
8787
presenter.present()
8888
}.test {
@@ -107,7 +107,7 @@ class ActionListPresenterTest {
107107

108108
@Test
109109
fun `present - compute for others message`() = runTest {
110-
val presenter = anActionListPresenter(isBuildDebuggable = true)
110+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
111111
moleculeFlow(RecompositionMode.Immediate) {
112112
presenter.present()
113113
}.test {
@@ -139,7 +139,7 @@ class ActionListPresenterTest {
139139

140140
@Test
141141
fun `present - compute for others message cannot sent message`() = runTest {
142-
val presenter = anActionListPresenter(isBuildDebuggable = true)
142+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
143143
moleculeFlow(RecompositionMode.Immediate) {
144144
presenter.present()
145145
}.test {
@@ -170,7 +170,7 @@ class ActionListPresenterTest {
170170

171171
@Test
172172
fun `present - compute for others message and can redact`() = runTest {
173-
val presenter = anActionListPresenter(isBuildDebuggable = true)
173+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
174174
moleculeFlow(RecompositionMode.Immediate) {
175175
presenter.present()
176176
}.test {
@@ -201,7 +201,7 @@ class ActionListPresenterTest {
201201

202202
@Test
203203
fun `present - compute for my message`() = runTest {
204-
val presenter = anActionListPresenter(isBuildDebuggable = true)
204+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
205205
moleculeFlow(RecompositionMode.Immediate) {
206206
presenter.present()
207207
}.test {
@@ -234,7 +234,7 @@ class ActionListPresenterTest {
234234

235235
@Test
236236
fun `present - compute for a media item`() = runTest {
237-
val presenter = anActionListPresenter(isBuildDebuggable = true)
237+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
238238
moleculeFlow(RecompositionMode.Immediate) {
239239
presenter.present()
240240
}.test {
@@ -265,7 +265,7 @@ class ActionListPresenterTest {
265265

266266
@Test
267267
fun `present - compute for a state item in debug build`() = runTest {
268-
val presenter = anActionListPresenter(isBuildDebuggable = true)
268+
val presenter = anActionListPresenter(isDeveloperModeEnabled = true)
269269
moleculeFlow(RecompositionMode.Immediate) {
270270
presenter.present()
271271
}.test {
@@ -294,7 +294,7 @@ class ActionListPresenterTest {
294294

295295
@Test
296296
fun `present - compute for a state item in non-debuggable build`() = runTest {
297-
val presenter = anActionListPresenter(isBuildDebuggable = false)
297+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
298298
moleculeFlow(RecompositionMode.Immediate) {
299299
presenter.present()
300300
}.test {
@@ -322,7 +322,7 @@ class ActionListPresenterTest {
322322

323323
@Test
324324
fun `present - compute message in non-debuggable build`() = runTest {
325-
val presenter = anActionListPresenter(isBuildDebuggable = false)
325+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
326326
moleculeFlow(RecompositionMode.Immediate) {
327327
presenter.present()
328328
}.test {
@@ -354,7 +354,7 @@ class ActionListPresenterTest {
354354

355355
@Test
356356
fun `present - compute message with no actions`() = runTest {
357-
val presenter = anActionListPresenter(isBuildDebuggable = false)
357+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
358358
moleculeFlow(RecompositionMode.Immediate) {
359359
presenter.present()
360360
}.test {
@@ -381,7 +381,7 @@ class ActionListPresenterTest {
381381

382382
@Test
383383
fun `present - compute not sent message`() = runTest {
384-
val presenter = anActionListPresenter(isBuildDebuggable = false)
384+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
385385
moleculeFlow(RecompositionMode.Immediate) {
386386
presenter.present()
387387
}.test {
@@ -410,7 +410,7 @@ class ActionListPresenterTest {
410410

411411
@Test
412412
fun `present - compute for poll message`() = runTest {
413-
val presenter = anActionListPresenter(isBuildDebuggable = false)
413+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
414414
moleculeFlow(RecompositionMode.Immediate) {
415415
presenter.present()
416416
}.test {
@@ -436,7 +436,7 @@ class ActionListPresenterTest {
436436

437437
@Test
438438
fun `present - compute for ended poll message`() = runTest {
439-
val presenter = anActionListPresenter(isBuildDebuggable = false)
439+
val presenter = anActionListPresenter(isDeveloperModeEnabled = false)
440440
moleculeFlow(RecompositionMode.Immediate) {
441441
presenter.present()
442442
}.test {
@@ -460,5 +460,8 @@ class ActionListPresenterTest {
460460
}
461461
}
462462

463-
private fun anActionListPresenter(isBuildDebuggable: Boolean) = ActionListPresenter(buildMeta = aBuildMeta(isDebuggable = isBuildDebuggable))
463+
private fun anActionListPresenter(isDeveloperModeEnabled: Boolean): ActionListPresenter {
464+
val preferencesStore = InMemoryPreferencesStore(isDeveloperModeEnabled = isDeveloperModeEnabled)
465+
return ActionListPresenter(preferencesStore = preferencesStore)
466+
}
464467

0 commit comments

Comments
 (0)