Skip to content

Commit 0ba783c

Browse files
committed
Remove FeatureFlag.VoiceMessages
1 parent 82c86a2 commit 0ba783c

File tree

11 files changed

+19
-122
lines changed

11 files changed

+19
-122
lines changed

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,6 @@ class MessagesPresenter @AssistedInject constructor(
187187

188188
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
189189

190-
var enableVoiceMessages by remember { mutableStateOf(false) }
191-
LaunchedEffect(featureFlagsService) {
192-
enableVoiceMessages = featureFlagsService.isFeatureEnabled(FeatureFlags.VoiceMessages)
193-
}
194-
195190
var dmUserVerificationState by remember { mutableStateOf<IdentityState?>(null) }
196191

197192
val membersState by room.membersStateFlow.collectAsState()
@@ -261,7 +256,6 @@ class MessagesPresenter @AssistedInject constructor(
261256
showReinvitePrompt = showReinvitePrompt,
262257
inviteProgress = inviteProgress.value,
263258
enableTextFormatting = MessageComposerConfig.ENABLE_RICH_TEXT_EDITING,
264-
enableVoiceMessages = enableVoiceMessages,
265259
appName = buildMeta.applicationName,
266260
roomCallState = roomCallState,
267261
pinnedMessagesBannerState = pinnedMessagesBannerState,

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ data class MessagesState(
5151
val inviteProgress: AsyncData<Unit>,
5252
val showReinvitePrompt: Boolean,
5353
val enableTextFormatting: Boolean,
54-
val enableVoiceMessages: Boolean,
5554
val roomCallState: RoomCallState,
5655
val appName: String,
5756
val pinnedMessagesBannerState: PinnedMessagesBannerState,

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,12 @@ open class MessagesStateProvider : PreviewParameterProvider<MessagesState> {
6161
aMessagesState(roomName = null),
6262
aMessagesState(composerState = aMessageComposerState(showTextFormatting = true)),
6363
aMessagesState(
64-
enableVoiceMessages = true,
6564
voiceMessageComposerState = aVoiceMessageComposerState(showPermissionRationaleDialog = true),
6665
),
6766
aMessagesState(
6867
roomCallState = anOngoingCallState(),
6968
),
7069
aMessagesState(
71-
enableVoiceMessages = true,
7270
voiceMessageComposerState = aVoiceMessageComposerState(
7371
voiceMessageState = aVoiceMessagePreviewState(),
7472
showSendFailureDialog = true
@@ -113,7 +111,6 @@ fun aMessagesState(
113111
reactionSummaryState: ReactionSummaryState = aReactionSummaryState(),
114112
hasNetworkConnection: Boolean = true,
115113
showReinvitePrompt: Boolean = false,
116-
enableVoiceMessages: Boolean = true,
117114
roomCallState: RoomCallState = aStandByCallState(),
118115
pinnedMessagesBannerState: PinnedMessagesBannerState = aLoadedPinnedMessagesBannerState(),
119116
dmUserVerificationState: IdentityState? = null,
@@ -141,7 +138,6 @@ fun aMessagesState(
141138
inviteProgress = AsyncData.Uninitialized,
142139
showReinvitePrompt = showReinvitePrompt,
143140
enableTextFormatting = true,
144-
enableVoiceMessages = enableVoiceMessages,
145141
roomCallState = roomCallState,
146142
appName = "Element",
147143
pinnedMessagesBannerState = pinnedMessagesBannerState,

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ private fun MessagesViewContent(
377377
enableTextFormatting = state.enableTextFormatting,
378378
)
379379

380-
if (state.enableVoiceMessages && state.voiceMessageComposerState.showPermissionRationaleDialog) {
380+
if (state.voiceMessageComposerState.showPermissionRationaleDialog) {
381381
VoiceMessagePermissionRationaleDialog(
382382
onContinue = {
383383
state.voiceMessageComposerState.eventSink(VoiceMessageComposerEvents.AcceptPermissionRationale)
@@ -388,7 +388,7 @@ private fun MessagesViewContent(
388388
appName = state.appName
389389
)
390390
}
391-
if (state.enableVoiceMessages && state.voiceMessageComposerState.showSendFailureDialog) {
391+
if (state.voiceMessageComposerState.showSendFailureDialog) {
392392
VoiceMessageSendingFailedDialog(
393393
onDismiss = { state.voiceMessageComposerState.eventSink(VoiceMessageComposerEvents.DismissSendFailureDialog) },
394394
)
@@ -464,7 +464,6 @@ private fun MessagesViewComposerBottomSheetContents(
464464
MessageComposerView(
465465
state = state.composerState,
466466
voiceMessageState = state.voiceMessageComposerState,
467-
enableVoiceMessages = state.enableVoiceMessages,
468467
modifier = Modifier.fillMaxWidth(),
469468
)
470469
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,6 @@ private fun AttachmentsPreviewBottomActions(
373373
onResetComposerMode = {},
374374
onAddAttachment = {},
375375
onDismissTextFormatting = {},
376-
enableVoiceMessages = false,
377376
onVoiceRecorderEvent = {},
378377
onVoicePlayerEvent = {},
379378
onSendVoiceMessage = {},

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import kotlinx.coroutines.launch
3333
internal fun MessageComposerView(
3434
state: MessageComposerState,
3535
voiceMessageState: VoiceMessageComposerState,
36-
enableVoiceMessages: Boolean,
3736
modifier: Modifier = Modifier,
3837
) {
3938
val view = LocalView.current
@@ -104,7 +103,6 @@ internal fun MessageComposerView(
104103
onResetComposerMode = ::onCloseSpecialMode,
105104
onAddAttachment = ::onAddAttachment,
106105
onDismissTextFormatting = ::onDismissTextFormatting,
107-
enableVoiceMessages = enableVoiceMessages,
108106
onVoiceRecorderEvent = onVoiceRecorderEvent,
109107
onVoicePlayerEvent = onVoicePlayerEvent,
110108
onSendVoiceMessage = onSendVoiceMessage,
@@ -128,13 +126,11 @@ internal fun MessageComposerViewPreview(
128126
modifier = Modifier.height(IntrinsicSize.Min),
129127
state = state,
130128
voiceMessageState = aVoiceMessageComposerState(),
131-
enableVoiceMessages = true,
132129
)
133130
MessageComposerView(
134131
modifier = Modifier.height(200.dp),
135132
state = state,
136133
voiceMessageState = aVoiceMessageComposerState(),
137-
enableVoiceMessages = true,
138134
)
139135
DisabledComposerView()
140136
}
@@ -150,7 +146,6 @@ internal fun MessageComposerViewVoicePreview(
150146
modifier = Modifier.height(IntrinsicSize.Min),
151147
state = aMessageComposerState(),
152148
voiceMessageState = state,
153-
enableVoiceMessages = true,
154149
)
155150
}
156151
}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ import io.element.android.features.messages.impl.utils.TextPillificationHelper
2828
import io.element.android.libraries.androidutils.filesize.FileSizeFormatter
2929
import io.element.android.libraries.androidutils.text.safeLinkify
3030
import io.element.android.libraries.core.mimetype.MimeTypes
31-
import io.element.android.libraries.featureflag.api.FeatureFlagService
32-
import io.element.android.libraries.featureflag.api.FeatureFlags
3331
import io.element.android.libraries.matrix.api.core.EventId
3432
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
3533
import io.element.android.libraries.matrix.api.timeline.item.event.AudioMessageType
@@ -56,7 +54,6 @@ import kotlin.time.Duration
5654
class TimelineItemContentMessageFactory @Inject constructor(
5755
private val fileSizeFormatter: FileSizeFormatter,
5856
private val fileExtensionExtractor: FileExtensionExtractor,
59-
private val featureFlagService: FeatureFlagService,
6057
private val htmlConverterProvider: HtmlConverterProvider,
6158
private val permalinkParser: PermalinkParser,
6259
private val textPillificationHelper: TextPillificationHelper,
@@ -177,38 +174,20 @@ class TimelineItemContentMessageFactory @Inject constructor(
177174
)
178175
}
179176
is VoiceMessageType -> {
180-
when (featureFlagService.isFeatureEnabled(FeatureFlags.VoiceMessages)) {
181-
true -> {
182-
TimelineItemVoiceContent(
183-
eventId = eventId,
184-
filename = messageType.filename,
185-
fileSize = messageType.info?.size ?: 0,
186-
caption = messageType.caption?.trimEnd(),
187-
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
188-
isEdited = content.isEdited,
189-
mediaSource = messageType.source,
190-
duration = messageType.info?.duration ?: Duration.ZERO,
191-
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
192-
waveform = messageType.details?.waveform?.toImmutableList() ?: persistentListOf(),
193-
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
194-
fileExtension = fileExtensionExtractor.extractFromName(messageType.filename)
195-
)
196-
}
197-
false -> {
198-
TimelineItemAudioContent(
199-
filename = messageType.filename,
200-
fileSize = messageType.info?.size ?: 0,
201-
caption = messageType.caption?.trimEnd(),
202-
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
203-
isEdited = content.isEdited,
204-
mediaSource = messageType.source,
205-
duration = messageType.info?.duration ?: Duration.ZERO,
206-
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
207-
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
208-
fileExtension = fileExtensionExtractor.extractFromName(messageType.filename),
209-
)
210-
}
211-
}
177+
TimelineItemVoiceContent(
178+
eventId = eventId,
179+
filename = messageType.filename,
180+
fileSize = messageType.info?.size ?: 0,
181+
caption = messageType.caption?.trimEnd(),
182+
formattedCaption = parseHtml(messageType.formattedCaption) ?: messageType.caption?.withLinks(),
183+
isEdited = content.isEdited,
184+
mediaSource = messageType.source,
185+
duration = messageType.info?.duration ?: Duration.ZERO,
186+
mimeType = messageType.info?.mimetype ?: MimeTypes.OctetStream,
187+
waveform = messageType.details?.waveform?.toImmutableList() ?: persistentListOf(),
188+
formattedFileSize = fileSizeFormatter.format(messageType.info?.size ?: 0),
189+
fileExtension = fileExtensionExtractor.extractFromName(messageType.filename)
190+
)
212191
}
213192
is FileMessageType -> {
214193
val fileExtension = fileExtensionExtractor.extractFromName(messageType.filename)

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import io.element.android.features.poll.test.pollcontent.FakePollContentStateFac
3030
import io.element.android.libraries.androidutils.filesize.FakeFileSizeFormatter
3131
import io.element.android.libraries.dateformatter.test.FakeDateFormatter
3232
import io.element.android.libraries.eventformatter.api.TimelineEventFormatter
33-
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
3433
import io.element.android.libraries.matrix.api.timeline.item.event.EventTimelineItem
3534
import io.element.android.libraries.matrix.test.FakeMatrixClient
3635
import io.element.android.libraries.matrix.test.permalink.FakePermalinkParser
@@ -60,7 +59,6 @@ internal fun TestScope.aTimelineItemsFactory(
6059
messageFactory = TimelineItemContentMessageFactory(
6160
fileSizeFormatter = FakeFileSizeFormatter(),
6261
fileExtensionExtractor = FileExtensionExtractorWithoutValidation(),
63-
featureFlagService = FakeFeatureFlagService(),
6462
htmlConverterProvider = FakeHtmlConverterProvider(),
6563
permalinkParser = FakePermalinkParser(),
6664
textPillificationHelper = FakeTextPillificationHelper(),

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactoryTest.kt

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ import io.element.android.features.messages.impl.utils.FakeTextPillificationHelp
3232
import io.element.android.features.messages.test.timeline.FakeHtmlConverterProvider
3333
import io.element.android.libraries.androidutils.filesize.FakeFileSizeFormatter
3434
import io.element.android.libraries.core.mimetype.MimeTypes
35-
import io.element.android.libraries.featureflag.api.FeatureFlagService
36-
import io.element.android.libraries.featureflag.api.FeatureFlags
37-
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
3835
import io.element.android.libraries.matrix.api.media.AudioDetails
3936
import io.element.android.libraries.matrix.api.media.AudioInfo
4037
import io.element.android.libraries.matrix.api.media.FileInfo
@@ -430,35 +427,6 @@ class TimelineItemContentMessageFactoryTest {
430427
assertThat(result).isEqualTo(expected)
431428
}
432429

433-
@Test
434-
fun `test create VoiceMessageType feature disabled`() = runTest {
435-
val sut = createTimelineItemContentMessageFactory(
436-
featureFlagService = FakeFeatureFlagService(
437-
initialState = mapOf(
438-
FeatureFlags.VoiceMessages.key to false,
439-
)
440-
)
441-
)
442-
val result = sut.create(
443-
content = createMessageContent(type = VoiceMessageType("filename", null, null, MediaSource("url"), null, null)),
444-
senderDisambiguatedDisplayName = "Bob",
445-
eventId = AN_EVENT_ID,
446-
)
447-
val expected = TimelineItemAudioContent(
448-
filename = "filename",
449-
fileSize = 0L,
450-
caption = null,
451-
formattedCaption = null,
452-
isEdited = false,
453-
duration = Duration.ZERO,
454-
mediaSource = MediaSource(url = "url", json = null),
455-
mimeType = MimeTypes.OctetStream,
456-
formattedFileSize = "0 Bytes",
457-
fileExtension = ""
458-
)
459-
assertThat(result).isEqualTo(expected)
460-
}
461-
462430
@Test
463431
fun `test create ImageMessageType`() = runTest {
464432
val sut = createTimelineItemContentMessageFactory()
@@ -794,13 +762,11 @@ class TimelineItemContentMessageFactoryTest {
794762
}
795763

796764
private fun createTimelineItemContentMessageFactory(
797-
featureFlagService: FeatureFlagService = FakeFeatureFlagService(),
798765
htmlConverterTransform: (String) -> CharSequence = { it },
799766
permalinkParser: FakePermalinkParser = FakePermalinkParser(),
800767
) = TimelineItemContentMessageFactory(
801768
fileSizeFormatter = FakeFileSizeFormatter(),
802769
fileExtensionExtractor = FileExtensionExtractorWithoutValidation(),
803-
featureFlagService = featureFlagService,
804770
htmlConverterProvider = FakeHtmlConverterProvider(htmlConverterTransform),
805771
permalinkParser = permalinkParser,
806772
textPillificationHelper = FakeTextPillificationHelper(),

libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,6 @@ enum class FeatureFlags(
2121
override val defaultValue: (BuildMeta) -> Boolean,
2222
override val isFinished: Boolean,
2323
) : Feature {
24-
VoiceMessages(
25-
key = "feature.voicemessages",
26-
title = "Voice messages",
27-
description = "Send and receive voice messages",
28-
defaultValue = { true },
29-
isFinished = true,
30-
),
3124
MarkAsUnread(
3225
key = "feature.markAsUnread",
3326
title = "Mark as unread",

0 commit comments

Comments
 (0)