From ebecc6652b10cd821383d26c2f6507816d4194bf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 12 Aug 2025 15:39:37 +0200 Subject: [PATCH] Remove FeatureFlag.MediaUploadOnSendQueue --- .../preview/AttachmentsPreviewPresenter.kt | 17 ++--- .../AttachmentsPreviewPresenterTest.kt | 64 +------------------ .../libraries/featureflag/api/FeatureFlags.kt | 7 -- .../libraries/matrix/impl/RustMatrixClient.kt | 3 - .../matrix/impl/RustMatrixClientFactory.kt | 1 - .../matrix/impl/room/JoinedRustRoom.kt | 3 - .../matrix/impl/room/RustRoomFactory.kt | 3 - .../matrix/impl/timeline/RustTimeline.kt | 18 ++---- .../matrix/impl/RustMatrixClientTest.kt | 2 - .../matrix/impl/timeline/RustTimelineTest.kt | 4 -- 10 files changed, 12 insertions(+), 110 deletions(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt index e84de00ba4..45c5c33e11 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/attachments/preview/AttachmentsPreviewPresenter.kt @@ -31,8 +31,6 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeImage import io.element.android.libraries.core.mimetype.MimeTypes.isMimeTypeVideo import io.element.android.libraries.di.annotations.SessionCoroutineScope -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder @@ -57,7 +55,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( private val mediaSender: MediaSender, private val permalinkBuilder: PermalinkBuilder, private val temporaryUriDeleter: TemporaryUriDeleter, - private val featureFlagService: FeatureFlagService, private val mediaOptimizationSelectorPresenterFactory: MediaOptimizationSelectorPresenter.Factory, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, private val dispatchers: CoroutineDispatchers, @@ -85,7 +82,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( val ongoingSendAttachmentJob = remember { mutableStateOf(null) } - var useSendQueue by remember { mutableStateOf(false) } var preprocessMediaJob by remember { mutableStateOf(null) } val mediaAttachment = attachment as Attachment.Media @@ -98,10 +94,6 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( var displayFileTooLargeError by remember { mutableStateOf(false) } - LaunchedEffect(Unit) { - useSendQueue = featureFlagService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) - } - LaunchedEffect(mediaOptimizationSelectorState.displayMediaSelectorViews) { // If the media optimization selector is not displayed, we can pre-process the media // to prepare it for sending. This is done to avoid blocking the UI thread when the @@ -174,18 +166,17 @@ class AttachmentsPreviewPresenter @AssistedInject constructor( .takeIf { it.isNotEmpty() } // If we're supposed to send the media as a background job, we can dismiss this screen already - if (useSendQueue && coroutineContext.isActive) { + if (coroutineContext.isActive) { onDoneListener() } - // If using the send queue, send it using the session coroutine scope so it doesn't matter if this screen or the chat one are closed - val sendMediaCoroutineScope = if (useSendQueue) sessionCoroutineScope else coroutineScope - sendMediaCoroutineScope.launch(dispatchers.io) { + // Send the media using the session coroutine scope so it doesn't matter if this screen or the chat one are closed + sessionCoroutineScope.launch(dispatchers.io) { sendPreProcessedMedia( mediaUploadInfo = mediaUploadInfo, caption = caption, sendActionState = sendActionState, - dismissAfterSend = !useSendQueue, + dismissAfterSend = false, inReplyToEventId = null, ) diff --git a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt index a2d5359366..7f8e10c5b1 100644 --- a/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt +++ b/features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/attachments/AttachmentsPreviewPresenterTest.kt @@ -25,8 +25,6 @@ import io.element.android.features.messages.test.attachments.video.FakeMediaOpti import io.element.android.libraries.androidutils.file.TemporaryUriDeleter import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.core.mimetype.MimeTypes -import io.element.android.libraries.featureflag.api.FeatureFlags -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.media.AudioInfo @@ -407,37 +405,7 @@ class AttachmentsPreviewPresenterTest { } @Test - fun `present - send media failure scenario without media queue`() = runTest { - val failure = MediaPreProcessor.Failure(null) - val sendFileResult = - lambdaRecorder> { _, _, _, _, _, _ -> - Result.failure(failure) - } - val room = FakeJoinedRoom( - liveTimeline = FakeTimeline().apply { - sendFileLambda = sendFileResult - }, - ) - val presenter = createAttachmentsPreviewPresenter(room = room, mediaUploadOnSendQueueEnabled = false) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle) - initialState.eventSink(AttachmentsPreviewEvents.SendAttachment) - assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Processing(displayProgress = false)) - assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.ReadyToUpload(mediaUploadInfo)) - val failureState = awaitItem() - assertThat(failureState.sendActionState).isEqualTo(SendActionState.Failure(failure, mediaUploadInfo)) - sendFileResult.assertions().isCalledOnce() - failureState.eventSink(AttachmentsPreviewEvents.CancelAndClearSendState) - val clearedState = awaitLastSequentialItem() - assertThat(clearedState.sendActionState).isEqualTo(SendActionState.Sending.ReadyToUpload(mediaUploadInfo)) - } - } - - @Test - fun `present - send media failure scenario with media queue`() = runTest { + fun `present - send media failure scenario`() = runTest { val failure = MediaPreProcessor.Failure(null) val sendFileResult = lambdaRecorder> { _, _, _, _, _, _ -> @@ -449,7 +417,7 @@ class AttachmentsPreviewPresenterTest { sendFileLambda = sendFileResult }, ) - val presenter = createAttachmentsPreviewPresenter(room = room, mediaUploadOnSendQueueEnabled = true, onDoneListener = onDoneListenerResult) + val presenter = createAttachmentsPreviewPresenter(room = room, onDoneListener = onDoneListenerResult) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { @@ -472,24 +440,7 @@ class AttachmentsPreviewPresenterTest { } @Test - fun `present - dismissing the progress dialog stops media upload without media queue`() = runTest { - val presenter = createAttachmentsPreviewPresenter(mediaUploadOnSendQueueEnabled = false) - moleculeFlow(RecompositionMode.Immediate) { - presenter.present() - }.test { - val initialState = awaitItem() - assertThat(initialState.sendActionState).isEqualTo(SendActionState.Idle) - initialState.eventSink(AttachmentsPreviewEvents.SendAttachment) - assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.Processing(displayProgress = false)) - assertThat(awaitItem().sendActionState).isEqualTo(SendActionState.Sending.ReadyToUpload(mediaUploadInfo)) - initialState.eventSink(AttachmentsPreviewEvents.CancelAndClearSendState) - // The sending is cancelled and the state is kept at ReadyToUpload - ensureAllEventsConsumed() - } - } - - @Test - fun `present - dismissing the progress dialog stops media upload with media queue`() = runTest { + fun `present - dismissing the progress dialog stops media upload`() = runTest { val onDoneListenerResult = lambdaRecorder {} val presenter = createAttachmentsPreviewPresenter( room = FakeJoinedRoom( @@ -499,7 +450,6 @@ class AttachmentsPreviewPresenterTest { } } ), - mediaUploadOnSendQueueEnabled = true, onDoneListener = onDoneListenerResult, ) moleculeFlow(RecompositionMode.Immediate) { @@ -535,7 +485,6 @@ class AttachmentsPreviewPresenterTest { } } ), - mediaUploadOnSendQueueEnabled = true, onDoneListener = onDoneListenerResult, mediaOptimizationSelectorPresenterFactory = FakeMediaOptimizationSelectorPresenterFactory { MediaOptimizationSelectorState( @@ -577,7 +526,6 @@ class AttachmentsPreviewPresenterTest { } } ), - mediaUploadOnSendQueueEnabled = true, onDoneListener = onDoneListenerResult, mediaOptimizationSelectorPresenterFactory = FakeMediaOptimizationSelectorPresenterFactory { MediaOptimizationSelectorState( @@ -633,7 +581,6 @@ class AttachmentsPreviewPresenterTest { mediaPreProcessor: MediaPreProcessor = FakeMediaPreProcessor(), temporaryUriDeleter: TemporaryUriDeleter = FakeTemporaryUriDeleter(), onDoneListener: OnDoneListener = OnDoneListener { lambdaError() }, - mediaUploadOnSendQueueEnabled: Boolean = true, displayMediaQualitySelectorViews: Boolean = false, mediaOptimizationSelectorPresenterFactory: FakeMediaOptimizationSelectorPresenterFactory = FakeMediaOptimizationSelectorPresenterFactory( fakePresenter = { @@ -657,11 +604,6 @@ class AttachmentsPreviewPresenterTest { }), permalinkBuilder = permalinkBuilder, temporaryUriDeleter = temporaryUriDeleter, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf( - FeatureFlags.MediaUploadOnSendQueue.key to mediaUploadOnSendQueueEnabled, - ), - ), sessionCoroutineScope = this, dispatchers = testCoroutineDispatchers(), mediaOptimizationSelectorPresenterFactory = mediaOptimizationSelectorPresenterFactory, diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 552d23c712..3c821ef3fb 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -75,13 +75,6 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), - MediaUploadOnSendQueue( - key = "feature.media_upload_through_send_queue", - title = "Media upload through send queue", - description = "Support for treating media uploads as regular events, with an improved retry and cancellation implementation.", - defaultValue = { true }, - isFinished = true, - ), PrintLogsToLogcat( key = "feature.print_logs_to_logcat", title = "Print logs to logcat", diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 50c311e56a..6d7218a829 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -14,7 +14,6 @@ import io.element.android.libraries.core.coroutine.childScope import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.core.extensions.runCatchingExceptions -import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.core.ProgressCallback @@ -136,7 +135,6 @@ class RustMatrixClient( baseCacheDirectory: File, clock: SystemClock, timelineEventTypeFilterFactory: TimelineEventTypeFilterFactory, - featureFlagService: FeatureFlagService, ) : MatrixClient { override val sessionId: UserId = UserId(innerClient.userId()) override val deviceId: DeviceId = DeviceId(innerClient.deviceId()) @@ -205,7 +203,6 @@ class RustMatrixClient( roomContentForwarder = RoomContentForwarder(innerRoomListService), roomSyncSubscriber = roomSyncSubscriber, timelineEventTypeFilterFactory = timelineEventTypeFilterFactory, - featureFlagService = featureFlagService, roomMembershipObserver = roomMembershipObserver, roomInfoMapper = roomInfoMapper, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt index 6086da5d5b..6ba658e81b 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientFactory.kt @@ -93,7 +93,6 @@ class RustMatrixClientFactory @Inject constructor( baseCacheDirectory = cacheDirectory, clock = clock, timelineEventTypeFilterFactory = timelineEventTypeFilterFactory, - featureFlagService = featureFlagService, ).also { Timber.tag(it.toString()).d("Creating Client with access token '$anonymizedAccessToken' and refresh token '$anonymizedRefreshToken'") } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index 889c583c4e..5edff19d84 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -11,7 +11,6 @@ import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.childScope import io.element.android.libraries.core.extensions.mapFailure import io.element.android.libraries.core.extensions.runCatchingExceptions -import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.RoomAlias @@ -84,7 +83,6 @@ class JoinedRustRoom( private val coroutineDispatchers: CoroutineDispatchers, private val systemClock: SystemClock, private val roomContentForwarder: RoomContentForwarder, - private val featureFlagService: FeatureFlagService, ) : JoinedRoom, BaseRoom by baseRoom { // Create a dispatcher for all room methods... private val roomDispatcher = coroutineDispatchers.io.limitedParallelism(32) @@ -478,7 +476,6 @@ class JoinedRustRoom( dispatcher = roomDispatcher, roomContentForwarder = roomContentForwarder, onNewSyncedEvent = onNewSyncedEvent, - featureFlagsService = featureFlagService, ) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt index c842c25876..4450050c18 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomFactory.kt @@ -9,7 +9,6 @@ package io.element.android.libraries.matrix.impl.room import io.element.android.appconfig.TimelineConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers -import io.element.android.libraries.featureflag.api.FeatureFlagService import io.element.android.libraries.matrix.api.core.DeviceId import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.SessionId @@ -49,7 +48,6 @@ class RustRoomFactory( private val innerRoomListService: InnerRoomListService, private val roomSyncSubscriber: RoomSyncSubscriber, private val timelineEventTypeFilterFactory: TimelineEventTypeFilterFactory, - private val featureFlagService: FeatureFlagService, private val roomMembershipObserver: RoomMembershipObserver, private val roomInfoMapper: RoomInfoMapper, ) { @@ -127,7 +125,6 @@ class RustRoomFactory( liveInnerTimeline = timeline, coroutineDispatchers = dispatchers, systemClock = systemClock, - featureFlagService = featureFlagService, ) ) } else { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt index 00f89e39a3..b1540d353d 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt @@ -8,8 +8,6 @@ package io.element.android.libraries.matrix.impl.timeline import io.element.android.libraries.core.extensions.runCatchingExceptions -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.core.EventId import io.element.android.libraries.matrix.api.core.ProgressCallback import io.element.android.libraries.matrix.api.core.RoomId @@ -89,7 +87,6 @@ class RustTimeline( private val coroutineScope: CoroutineScope, private val dispatcher: CoroutineDispatcher, private val roomContentForwarder: RoomContentForwarder, - private val featureFlagsService: FeatureFlagService, onNewSyncedEvent: () -> Unit, ) : Timeline { private val _timelineItems: MutableSharedFlow> = @@ -342,7 +339,6 @@ class RustTimeline( progressCallback: ProgressCallback?, inReplyToEventId: EventId?, ): Result { - val useSendQueue = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) return sendAttachment(listOfNotNull(file, thumbnailFile)) { inner.sendImage( params = UploadParameters( @@ -351,7 +347,7 @@ class RustTimeline( formattedCaption = formattedCaption?.let { FormattedBody(body = it, format = MessageFormat.Html) }, - useSendQueue = useSendQueue, + useSendQueue = true, mentions = null, inReplyTo = inReplyToEventId?.value, ), @@ -371,7 +367,6 @@ class RustTimeline( progressCallback: ProgressCallback?, inReplyToEventId: EventId?, ): Result { - val useSendQueue = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) return sendAttachment(listOfNotNull(file, thumbnailFile)) { inner.sendVideo( params = UploadParameters( @@ -380,7 +375,7 @@ class RustTimeline( formattedCaption = formattedCaption?.let { FormattedBody(body = it, format = MessageFormat.Html) }, - useSendQueue = useSendQueue, + useSendQueue = true, mentions = null, inReplyTo = inReplyToEventId?.value, ), @@ -399,7 +394,6 @@ class RustTimeline( progressCallback: ProgressCallback?, inReplyToEventId: EventId?, ): Result { - val useSendQueue = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) return sendAttachment(listOf(file)) { inner.sendAudio( params = UploadParameters( @@ -408,7 +402,7 @@ class RustTimeline( formattedCaption = formattedCaption?.let { FormattedBody(body = it, format = MessageFormat.Html) }, - useSendQueue = useSendQueue, + useSendQueue = true, mentions = null, inReplyTo = inReplyToEventId?.value, ), @@ -426,7 +420,6 @@ class RustTimeline( progressCallback: ProgressCallback?, inReplyToEventId: EventId?, ): Result { - val useSendQueue = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) return sendAttachment(listOf(file)) { inner.sendFile( params = UploadParameters( @@ -435,7 +428,7 @@ class RustTimeline( formattedCaption = formattedCaption?.let { FormattedBody(body = it, format = MessageFormat.Html) }, - useSendQueue = useSendQueue, + useSendQueue = true, mentions = null, inReplyTo = inReplyToEventId?.value, ), @@ -489,7 +482,6 @@ class RustTimeline( progressCallback: ProgressCallback?, inReplyToEventId: EventId?, ): Result { - val useSendQueue = featureFlagsService.isFeatureEnabled(FeatureFlags.MediaUploadOnSendQueue) return sendAttachment(listOf(file)) { inner.sendVoiceMessage( params = UploadParameters( @@ -497,7 +489,7 @@ class RustTimeline( // Maybe allow a caption in the future? caption = null, formattedCaption = null, - useSendQueue = useSendQueue, + useSendQueue = true, mentions = null, inReplyTo = inReplyToEventId?.value, ), diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt index 91d0f06d1c..cb316452c5 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClientTest.kt @@ -8,7 +8,6 @@ package io.element.android.libraries.matrix.impl import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiClient import io.element.android.libraries.matrix.impl.fixtures.fakes.FakeFfiSyncService import io.element.android.libraries.matrix.impl.room.FakeTimelineEventTypeFilterFactory @@ -67,6 +66,5 @@ class RustMatrixClientTest { baseCacheDirectory = File(""), clock = FakeSystemClock(), timelineEventTypeFilterFactory = FakeTimelineEventTypeFilterFactory(), - featureFlagService = FakeFeatureFlagService(), ) } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt index 3fea130ece..2819dd6ac7 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt @@ -10,8 +10,6 @@ package io.element.android.libraries.matrix.impl.timeline import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.timeline.MatrixTimelineItem import io.element.android.libraries.matrix.api.timeline.Timeline @@ -98,7 +96,6 @@ private fun TestScope.createRustTimeline( coroutineScope: CoroutineScope = backgroundScope, dispatcher: CoroutineDispatcher = testCoroutineDispatchers().io, roomContentForwarder: RoomContentForwarder = RoomContentForwarder(FakeFfiRoomListService()), - featureFlagsService: FeatureFlagService = FakeFeatureFlagService(), onNewSyncedEvent: () -> Unit = {}, ): RustTimeline { return RustTimeline( @@ -109,7 +106,6 @@ private fun TestScope.createRustTimeline( coroutineScope = coroutineScope, dispatcher = dispatcher, roomContentForwarder = roomContentForwarder, - featureFlagsService = featureFlagsService, onNewSyncedEvent = onNewSyncedEvent, ) }