@@ -57,6 +57,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
5757import io.element.android.features.messages.impl.utils.messagesummary.MessageSummaryFormatter
5858import io.element.android.features.networkmonitor.api.NetworkMonitor
5959import io.element.android.features.networkmonitor.api.NetworkStatus
60+ import io.element.android.features.preferences.api.store.PreferencesStore
6061import io.element.android.libraries.androidutils.clipboard.ClipboardHelper
6162import io.element.android.libraries.architecture.Async
6263import io.element.android.libraries.architecture.Presenter
@@ -66,8 +67,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize
6667import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
6768import io.element.android.libraries.designsystem.utils.SnackbarMessage
6869import io.element.android.libraries.designsystem.utils.collectSnackbarMessageAsState
69- import io.element.android.libraries.featureflag.api.FeatureFlagService
70- import io.element.android.libraries.featureflag.api.FeatureFlags
7170import io.element.android.libraries.matrix.api.core.EventId
7271import io.element.android.libraries.matrix.api.room.MatrixRoom
7372import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState
@@ -97,7 +96,7 @@ class MessagesPresenter @AssistedInject constructor(
9796 private val dispatchers : CoroutineDispatchers ,
9897 private val clipboardHelper : ClipboardHelper ,
9998 private val analyticsService : AnalyticsService ,
100- private val featureFlagService : FeatureFlagService ,
99+ private val preferencesStore : PreferencesStore ,
101100 @Assisted private val navigator : MessagesNavigator ,
102101) : Presenter<MessagesState> {
103102
@@ -146,15 +145,17 @@ class MessagesPresenter @AssistedInject constructor(
146145 timelineState.eventSink(TimelineEvents .SetHighlightedEvent (composerState.mode.relatedEventId))
147146 }
148147
149- var enableTextFormatting by remember { mutableStateOf(true ) }
150- LaunchedEffect (Unit ) {
151- enableTextFormatting = featureFlagService.isFeatureEnabled(FeatureFlags .RichTextEditor )
152- }
148+ val enableTextFormatting by preferencesStore.isRichTextEditorEnabledFlow().collectAsState(initial = true )
153149
154150 fun handleEvents (event : MessagesEvents ) {
155151 when (event) {
156152 is MessagesEvents .HandleAction -> {
157- localCoroutineScope.handleTimelineAction(event.action, event.event, composerState)
153+ localCoroutineScope.handleTimelineAction(
154+ action = event.action,
155+ targetEvent = event.event,
156+ composerState = composerState,
157+ enableTextFormatting = enableTextFormatting,
158+ )
158159 }
159160 is MessagesEvents .ToggleReaction -> {
160161 localCoroutineScope.toggleReaction(event.emoji, event.eventId)
@@ -204,11 +205,12 @@ class MessagesPresenter @AssistedInject constructor(
204205 action : TimelineItemAction ,
205206 targetEvent : TimelineItem .Event ,
206207 composerState : MessageComposerState ,
208+ enableTextFormatting : Boolean ,
207209 ) = launch {
208210 when (action) {
209211 TimelineItemAction .Copy -> handleCopyContents(targetEvent)
210212 TimelineItemAction .Redact -> handleActionRedact(targetEvent)
211- TimelineItemAction .Edit -> handleActionEdit(targetEvent, composerState)
213+ TimelineItemAction .Edit -> handleActionEdit(targetEvent, composerState, enableTextFormatting )
212214 TimelineItemAction .Reply ,
213215 TimelineItemAction .ReplyInThread -> handleActionReply(targetEvent, composerState)
214216 TimelineItemAction .Developer -> handleShowDebugInfoAction(targetEvent)
@@ -260,11 +262,15 @@ class MessagesPresenter @AssistedInject constructor(
260262 }
261263 }
262264
263- private suspend fun handleActionEdit (targetEvent : TimelineItem .Event , composerState : MessageComposerState ) {
265+ private suspend fun handleActionEdit (
266+ targetEvent : TimelineItem .Event ,
267+ composerState : MessageComposerState ,
268+ enableTextFormatting : Boolean ,
269+ ) {
264270 val composerMode = MessageComposerMode .Edit (
265271 targetEvent.eventId,
266272 (targetEvent.content as ? TimelineItemTextBasedContent )?.let {
267- if (featureFlagService.isFeatureEnabled( FeatureFlags . RichTextEditor ) ) {
273+ if (enableTextFormatting ) {
268274 it.htmlBody ? : it.body
269275 } else {
270276 it.body
0 commit comments