Skip to content

Commit 34efd2c

Browse files
committed
Remove FeatureFlag.MediaCaptionCreation and FeatureFlag.MediaCaptionWarning
1 parent dcb6055 commit 34efd2c

File tree

13 files changed

+94
-326
lines changed

13 files changed

+94
-326
lines changed

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ import io.element.android.libraries.designsystem.components.avatar.AvatarSize
6363
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
6464
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
6565
import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState
66-
import io.element.android.libraries.featureflag.api.FeatureFlagService
67-
import io.element.android.libraries.featureflag.api.FeatureFlags
6866
import io.element.android.libraries.matrix.api.encryption.EncryptionService
6967
import io.element.android.libraries.matrix.api.encryption.identity.IdentityState
7068
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
@@ -111,7 +109,6 @@ class MessagesPresenter @AssistedInject constructor(
111109
private val snackbarDispatcher: SnackbarDispatcher,
112110
private val dispatchers: CoroutineDispatchers,
113111
private val clipboardHelper: ClipboardHelper,
114-
private val featureFlagsService: FeatureFlagService,
115112
private val htmlConverterProvider: HtmlConverterProvider,
116113
private val buildMeta: BuildMeta,
117114
private val timelineController: TimelineController,
@@ -443,7 +440,6 @@ class MessagesPresenter @AssistedInject constructor(
443440
val composerMode = MessageComposerMode.EditCaption(
444441
eventOrTransactionId = targetEvent.eventOrTransactionId,
445442
content = "",
446-
showCaptionCompatibilityWarning = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaCaptionWarning),
447443
)
448444
composerState.eventSink(
449445
MessageComposerEvents.SetMode(composerMode)
@@ -457,7 +453,6 @@ class MessagesPresenter @AssistedInject constructor(
457453
val composerMode = MessageComposerMode.EditCaption(
458454
eventOrTransactionId = targetEvent.eventOrTransactionId,
459455
content = (targetEvent.content as? TimelineItemEventContentWithAttachment)?.caption.orEmpty(),
460-
showCaptionCompatibilityWarning = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaCaptionWarning),
461456
)
462457
composerState.eventSink(
463458
MessageComposerEvents.SetMode(composerMode)

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ import io.element.android.libraries.architecture.Presenter
3939
import io.element.android.libraries.dateformatter.api.DateFormatter
4040
import io.element.android.libraries.dateformatter.api.DateFormatterMode
4141
import io.element.android.libraries.di.RoomScope
42-
import io.element.android.libraries.featureflag.api.FeatureFlagService
43-
import io.element.android.libraries.featureflag.api.FeatureFlags
4442
import io.element.android.libraries.matrix.api.core.EventId
4543
import io.element.android.libraries.matrix.api.room.BaseRoom
4644
import io.element.android.libraries.preferences.api.store.AppPreferencesStore
@@ -63,7 +61,6 @@ class DefaultActionListPresenter @AssistedInject constructor(
6361
private val appPreferencesStore: AppPreferencesStore,
6462
private val room: BaseRoom,
6563
private val userSendFailureFactory: VerifiedUserSendFailureFactory,
66-
private val featureFlagService: FeatureFlagService,
6764
private val dateFormatter: DateFormatter,
6865
) : ActionListPresenter {
6966
@AssistedFactory
@@ -166,9 +163,7 @@ class DefaultActionListPresenter @AssistedInject constructor(
166163
if (timelineItem.content is TimelineItemEventContentWithAttachment) {
167164
// Caption
168165
if (timelineItem.content.caption == null) {
169-
if (featureFlagService.isFeatureEnabled(FeatureFlags.MediaCaptionCreation)) {
170-
add(TimelineItemAction.AddCaption)
171-
}
166+
add(TimelineItemAction.AddCaption)
172167
} else {
173168
add(TimelineItemAction.EditCaption)
174169
add(TimelineItemAction.RemoveCaption)

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ package io.element.android.features.messages.impl.attachments.preview
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.LaunchedEffect
1212
import androidx.compose.runtime.MutableState
13-
import androidx.compose.runtime.collectAsState
1413
import androidx.compose.runtime.getValue
1514
import androidx.compose.runtime.mutableStateOf
1615
import androidx.compose.runtime.remember
@@ -86,13 +85,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
8685

8786
val ongoingSendAttachmentJob = remember { mutableStateOf<Job?>(null) }
8887

89-
val allowCaption by remember {
90-
featureFlagService.isFeatureEnabledFlow(FeatureFlags.MediaCaptionCreation)
91-
}.collectAsState(initial = false)
92-
val showCaptionCompatibilityWarning by remember {
93-
featureFlagService.isFeatureEnabledFlow(FeatureFlags.MediaCaptionWarning)
94-
}.collectAsState(initial = false)
95-
9688
var useSendQueue by remember { mutableStateOf(false) }
9789
var preprocessMediaJob by remember { mutableStateOf<Job?>(null) }
9890

@@ -238,8 +230,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
238230
attachment = attachment,
239231
sendActionState = sendActionState.value,
240232
textEditorState = textEditorState,
241-
allowCaption = allowCaption,
242-
showCaptionCompatibilityWarning = showCaptionCompatibilityWarning,
243233
mediaOptimizationSelectorState = mediaOptimizationSelectorState,
244234
displayFileTooLargeError = displayFileTooLargeError,
245235
eventSink = ::handleEvents

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ data class AttachmentsPreviewState(
1717
val attachment: Attachment,
1818
val sendActionState: SendActionState,
1919
val textEditorState: TextEditorState,
20-
val allowCaption: Boolean,
21-
val showCaptionCompatibilityWarning: Boolean,
2220
val mediaOptimizationSelectorState: MediaOptimizationSelectorState,
2321
val displayFileTooLargeError: Boolean,
2422
val eventSink: (AttachmentsPreviewEvents) -> Unit

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewStateProvider.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ open class AttachmentsPreviewStateProvider : PreviewParameterProvider<Attachment
4141
anAttachmentsPreviewState(sendActionState = SendActionState.Sending.ReadyToUpload(aMediaUploadInfo())),
4242
anAttachmentsPreviewState(sendActionState = SendActionState.Sending.Uploading(0.5f, aMediaUploadInfo())),
4343
anAttachmentsPreviewState(sendActionState = SendActionState.Failure(RuntimeException("error"), aMediaUploadInfo())),
44-
anAttachmentsPreviewState(allowCaption = false),
45-
anAttachmentsPreviewState(showCaptionCompatibilityWarning = true),
4644
anAttachmentsPreviewState(displayFileTooLargeError = true),
4745
anAttachmentsPreviewState(
4846
mediaInfo = aVideoMediaInfo(),
@@ -65,8 +63,6 @@ fun anAttachmentsPreviewState(
6563
mediaInfo: MediaInfo = anImageMediaInfo(),
6664
textEditorState: TextEditorState = aTextEditorStateMarkdown(),
6765
sendActionState: SendActionState = SendActionState.Idle,
68-
allowCaption: Boolean = true,
69-
showCaptionCompatibilityWarning: Boolean = true,
7066
mediaOptimizationSelectorState: MediaOptimizationSelectorState = aMediaOptimisationSelectorState(),
7167
displayFileTooLargeError: Boolean = false,
7268
) = AttachmentsPreviewState(
@@ -75,8 +71,6 @@ fun anAttachmentsPreviewState(
7571
),
7672
sendActionState = sendActionState,
7773
textEditorState = textEditorState,
78-
allowCaption = allowCaption,
79-
showCaptionCompatibilityWarning = showCaptionCompatibilityWarning,
8074
mediaOptimizationSelectorState = mediaOptimizationSelectorState,
8175
displayFileTooLargeError = displayFileTooLargeError,
8276
eventSink = {}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewView.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,10 +363,7 @@ private fun AttachmentsPreviewBottomActions(
363363
modifier = modifier,
364364
state = state.textEditorState,
365365
voiceMessageState = VoiceMessageState.Idle,
366-
composerMode = MessageComposerMode.Attachment(
367-
allowCaption = state.allowCaption,
368-
showCaptionCompatibilityWarning = state.showCaptionCompatibilityWarning,
369-
),
366+
composerMode = MessageComposerMode.Attachment,
370367
onRequestFocus = {},
371368
onSendMessage = onSendClick,
372369
showTextFormatting = false,

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

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ import io.element.android.libraries.core.mimetype.MimeTypes
4646
import io.element.android.libraries.designsystem.components.avatar.AvatarData
4747
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
4848
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher
49-
import io.element.android.libraries.featureflag.api.FeatureFlagService
50-
import io.element.android.libraries.featureflag.api.FeatureFlags
51-
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
5249
import io.element.android.libraries.matrix.api.core.EventId
5350
import io.element.android.libraries.matrix.api.core.RoomId
5451
import io.element.android.libraries.matrix.api.core.UserId
@@ -994,37 +991,6 @@ class MessagesPresenterTest {
994991
composerMode = MessageComposerMode.EditCaption(
995992
eventOrTransactionId = AN_EVENT_ID.toEventOrTransactionId(),
996993
content = A_CAPTION,
997-
showCaptionCompatibilityWarning = true,
998-
)
999-
)
1000-
)
1001-
}
1002-
}
1003-
1004-
@Test
1005-
fun `present - handle action edit caption without warning`() = runTest {
1006-
val messageEvent = aMessageEvent(
1007-
content = aTimelineItemImageContent(
1008-
caption = A_CAPTION,
1009-
)
1010-
)
1011-
val composerRecorder = EventsRecorder<MessageComposerEvents>()
1012-
val presenter = createMessagesPresenter(
1013-
messageComposerPresenter = { aMessageComposerState(eventSink = composerRecorder) },
1014-
featureFlagService = FakeFeatureFlagService(
1015-
initialState = mapOf(FeatureFlags.MediaCaptionWarning.key to false)
1016-
)
1017-
)
1018-
presenter.testWithLifecycleOwner {
1019-
val initialState = awaitItem()
1020-
initialState.eventSink(MessagesEvents.HandleAction(TimelineItemAction.EditCaption, messageEvent))
1021-
awaitItem()
1022-
composerRecorder.assertSingle(
1023-
MessageComposerEvents.SetMode(
1024-
composerMode = MessageComposerMode.EditCaption(
1025-
eventOrTransactionId = AN_EVENT_ID.toEventOrTransactionId(),
1026-
content = A_CAPTION,
1027-
showCaptionCompatibilityWarning = false,
1028994
)
1029995
)
1030996
)
@@ -1051,37 +1017,6 @@ class MessagesPresenterTest {
10511017
composerMode = MessageComposerMode.EditCaption(
10521018
eventOrTransactionId = AN_EVENT_ID.toEventOrTransactionId(),
10531019
content = "",
1054-
showCaptionCompatibilityWarning = true,
1055-
)
1056-
)
1057-
)
1058-
}
1059-
}
1060-
1061-
@Test
1062-
fun `present - handle action add caption without warning`() = runTest {
1063-
val composerRecorder = EventsRecorder<MessageComposerEvents>()
1064-
val presenter = createMessagesPresenter(
1065-
messageComposerPresenter = { aMessageComposerState(eventSink = composerRecorder) },
1066-
featureFlagService = FakeFeatureFlagService(
1067-
initialState = mapOf(FeatureFlags.MediaCaptionWarning.key to false)
1068-
)
1069-
)
1070-
val messageEvent = aMessageEvent(
1071-
content = aTimelineItemImageContent(
1072-
caption = null,
1073-
)
1074-
)
1075-
presenter.testWithLifecycleOwner {
1076-
val initialState = awaitItem()
1077-
initialState.eventSink(MessagesEvents.HandleAction(TimelineItemAction.AddCaption, messageEvent))
1078-
awaitItem()
1079-
composerRecorder.assertSingle(
1080-
MessageComposerEvents.SetMode(
1081-
composerMode = MessageComposerMode.EditCaption(
1082-
eventOrTransactionId = AN_EVENT_ID.toEventOrTransactionId(),
1083-
content = "",
1084-
showCaptionCompatibilityWarning = false,
10851020
)
10861021
)
10871022
)
@@ -1234,7 +1169,6 @@ class MessagesPresenterTest {
12341169
typingNoticeResult = { Result.success(Unit) },
12351170
),
12361171
navigator: FakeMessagesNavigator = FakeMessagesNavigator(),
1237-
featureFlagService: FeatureFlagService = FakeFeatureFlagService(),
12381172
clipboardHelper: FakeClipboardHelper = FakeClipboardHelper(),
12391173
analyticsService: FakeAnalyticsService = FakeAnalyticsService(),
12401174
timelineEventSink: (TimelineEvents) -> Unit = {},
@@ -1270,7 +1204,6 @@ class MessagesPresenterTest {
12701204
snackbarDispatcher = SnackbarDispatcher(),
12711205
navigator = navigator,
12721206
clipboardHelper = clipboardHelper,
1273-
featureFlagsService = featureFlagService,
12741207
buildMeta = aBuildMeta(),
12751208
dispatchers = coroutineDispatchers,
12761209
htmlConverterProvider = FakeHtmlConverterProvider(),

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

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ import io.element.android.features.messages.impl.timeline.model.event.aTimelineI
2727
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemVoiceContent
2828
import io.element.android.features.poll.api.pollcontent.aPollAnswerItemList
2929
import io.element.android.libraries.dateformatter.test.FakeDateFormatter
30-
import io.element.android.libraries.featureflag.api.FeatureFlags
31-
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
3230
import io.element.android.libraries.matrix.api.room.BaseRoom
3331
import io.element.android.libraries.matrix.api.timeline.item.event.LocalEventSendState
3432
import io.element.android.libraries.matrix.test.AN_EVENT_ID
@@ -603,57 +601,6 @@ class ActionListPresenterTest {
603601
}
604602
}
605603

606-
@Test
607-
fun `present - compute for a media item - caption disabled`() = runTest {
608-
val presenter = createActionListPresenter(
609-
isDeveloperModeEnabled = true,
610-
allowCaption = false,
611-
)
612-
moleculeFlow(RecompositionMode.Immediate) {
613-
presenter.present()
614-
}.test {
615-
val initialState = awaitItem()
616-
val messageEvent = aMessageEvent(
617-
isMine = true,
618-
isEditable = true,
619-
content = aTimelineItemImageContent(),
620-
)
621-
initialState.eventSink.invoke(
622-
ActionListEvents.ComputeForMessage(
623-
event = messageEvent,
624-
userEventPermissions = aUserEventPermissions(
625-
canRedactOwn = true,
626-
canRedactOther = false,
627-
canSendMessage = true,
628-
canSendReaction = true,
629-
canPinUnpin = true,
630-
),
631-
)
632-
)
633-
val successState = awaitItem()
634-
assertThat(successState.target).isEqualTo(
635-
ActionListState.Target.Success(
636-
event = messageEvent,
637-
sentTimeFull = "0 Full true",
638-
displayEmojiReactions = true,
639-
verifiedUserSendFailure = VerifiedUserSendFailure.None,
640-
actions = persistentListOf(
641-
TimelineItemAction.Reply,
642-
TimelineItemAction.Forward,
643-
// Not here
644-
// TimelineItemAction.AddCaption,
645-
TimelineItemAction.CopyLink,
646-
TimelineItemAction.Pin,
647-
TimelineItemAction.ViewSource,
648-
TimelineItemAction.Redact,
649-
)
650-
)
651-
)
652-
initialState.eventSink.invoke(ActionListEvents.Clear)
653-
assertThat(awaitItem().target).isEqualTo(ActionListState.Target.None)
654-
}
655-
}
656-
657604
@Test
658605
fun `present - compute for a media with caption item`() = runTest {
659606
val presenter = createActionListPresenter(isDeveloperModeEnabled = true)
@@ -1298,19 +1245,13 @@ class ActionListPresenterTest {
12981245
private fun createActionListPresenter(
12991246
isDeveloperModeEnabled: Boolean,
13001247
room: BaseRoom = FakeBaseRoom(),
1301-
allowCaption: Boolean = true,
13021248
): ActionListPresenter {
13031249
val preferencesStore = InMemoryAppPreferencesStore(isDeveloperModeEnabled = isDeveloperModeEnabled)
13041250
return DefaultActionListPresenter(
13051251
postProcessor = TimelineItemActionPostProcessor.Default,
13061252
appPreferencesStore = preferencesStore,
13071253
room = room,
13081254
userSendFailureFactory = VerifiedUserSendFailureFactory(room),
1309-
featureFlagService = FakeFeatureFlagService(
1310-
initialState = mapOf(
1311-
FeatureFlags.MediaCaptionCreation.key to allowCaption,
1312-
),
1313-
),
13141255
dateFormatter = FakeDateFormatter(),
13151256
)
13161257
}

0 commit comments

Comments
 (0)