diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt index a4ba925f31..f3e7daf4d7 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListPresenter.kt @@ -51,6 +51,7 @@ import io.element.android.libraries.matrix.api.roomlist.RoomList import io.element.android.libraries.matrix.api.sync.SyncService import io.element.android.libraries.matrix.api.sync.isOnline import io.element.android.libraries.matrix.api.timeline.ReceiptType +import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.api.store.SessionPreferencesStore import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.services.analytics.api.AnalyticsService @@ -89,6 +90,7 @@ class RoomListPresenter @Inject constructor( private val fullScreenIntentPermissionsPresenter: Presenter, private val notificationCleaner: NotificationCleaner, private val logoutPresenter: Presenter, + private val appPreferencesStore: AppPreferencesStore, ) : Presenter { private val encryptionService: EncryptionService = client.encryptionService() @@ -245,7 +247,8 @@ class RoomListPresenter @Inject constructor( isFavorite = event.roomListRoomSummary.isFavorite, markAsUnreadFeatureFlagEnabled = featureFlagService.isFeatureEnabled(FeatureFlags.MarkAsUnread), hasNewContent = event.roomListRoomSummary.hasNewContent, - eventCacheFeatureFlagEnabled = featureFlagService.isFeatureEnabled(FeatureFlags.EventCache), + eventCacheFeatureFlagEnabled = appPreferencesStore.isDeveloperModeEnabledFlow().first() && + featureFlagService.isFeatureEnabled(FeatureFlags.EventCache), ) contextMenuState.value = initialState diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt index a49e020d8b..a48d63cad8 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTest.kt @@ -67,7 +67,9 @@ import io.element.android.libraries.matrix.test.room.aRoomSummary import io.element.android.libraries.matrix.test.roomlist.FakeRoomListService import io.element.android.libraries.matrix.test.sync.FakeSyncService import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService +import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.api.store.SessionPreferencesStore +import io.element.android.libraries.preferences.test.InMemoryAppPreferencesStore import io.element.android.libraries.preferences.test.InMemorySessionPreferencesStore import io.element.android.libraries.push.api.notifications.NotificationCleaner import io.element.android.libraries.push.test.notifications.FakeNotificationCleaner @@ -312,6 +314,35 @@ class RoomListPresenterTest { } } + @Test + fun `present - show context menu with view source on`() = runTest { + val presenter = createRoomListPresenter( + appPreferencesStore = InMemoryAppPreferencesStore( + isDeveloperModeEnabled = true, + ) + ) + presenter.test { + val initialState = awaitItem() + val summary = createRoomListRoomSummary() + initialState.eventSink(RoomListEvents.ShowContextMenu(summary)) + awaitItem().also { state -> + assertThat(state.contextMenu) + .isEqualTo( + RoomListState.ContextMenu.Shown( + roomId = summary.roomId, + roomName = summary.name, + isDm = false, + isFavorite = false, + markAsUnreadFeatureFlagEnabled = true, + // true here. + eventCacheFeatureFlagEnabled = true, + hasNewContent = false, + ) + ) + } + } + } + @Test fun `present - hide context menu`() = runTest { val room = FakeMatrixRoom() @@ -643,6 +674,7 @@ class RoomListPresenterTest { searchPresenter: Presenter = Presenter { aRoomListSearchState() }, acceptDeclineInvitePresenter: Presenter = Presenter { anAcceptDeclineInviteState() }, notificationCleaner: NotificationCleaner = FakeNotificationCleaner(), + appPreferencesStore: AppPreferencesStore = InMemoryAppPreferencesStore(), ) = RoomListPresenter( client = client, syncService = syncService, @@ -672,6 +704,7 @@ class RoomListPresenterTest { fullScreenIntentPermissionsPresenter = { aFullScreenIntentPermissionsState() }, notificationCleaner = notificationCleaner, logoutPresenter = { aDirectLogoutState() }, + appPreferencesStore = appPreferencesStore, ) }