From 939f24cec5dc3ff879fcdded36188225ff3e1116 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 16 Feb 2024 23:22:41 +0100 Subject: [PATCH] RoomList : remove direct dependency to the RoomListSearchPresenter --- .../roomlist/impl/RoomListPresenter.kt | 4 +-- .../roomlist/impl/di/RoomListModule.kt | 32 +++++++++++++++++++ .../roomlist/impl/RoomListPresenterTests.kt | 8 ++--- 3 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/di/RoomListModule.kt 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 7f53f90e92..6edc533476 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 @@ -38,7 +38,7 @@ import io.element.android.features.roomlist.impl.datasource.InviteStateDataSourc import io.element.android.features.roomlist.impl.datasource.RoomListDataSource import io.element.android.features.roomlist.impl.migration.MigrationScreenPresenter import io.element.android.features.roomlist.impl.search.RoomListSearchEvents -import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter +import io.element.android.features.roomlist.impl.search.RoomListSearchState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher @@ -78,7 +78,7 @@ class RoomListPresenter @Inject constructor( private val encryptionService: EncryptionService, private val featureFlagService: FeatureFlagService, private val indicatorService: IndicatorService, - private val searchPresenter: RoomListSearchPresenter, + private val searchPresenter: Presenter, private val migrationScreenPresenter: MigrationScreenPresenter, private val sessionPreferencesStore: SessionPreferencesStore, ) : Presenter { diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/di/RoomListModule.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/di/RoomListModule.kt new file mode 100644 index 0000000000..369da2fc75 --- /dev/null +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/di/RoomListModule.kt @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.features.roomlist.impl.di + +import com.squareup.anvil.annotations.ContributesTo +import dagger.Binds +import dagger.Module +import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter +import io.element.android.features.roomlist.impl.search.RoomListSearchState +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.di.SessionScope + +@ContributesTo(SessionScope::class) +@Module +interface RoomListModule { + @Binds + fun bindSearchPresenter(presenter: RoomListSearchPresenter): Presenter +} diff --git a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt index b2ad2fee23..971082a45f 100644 --- a/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt +++ b/features/roomlist/impl/src/test/kotlin/io/element/android/features/roomlist/impl/RoomListPresenterTests.kt @@ -33,8 +33,9 @@ import io.element.android.features.roomlist.impl.datasource.RoomListRoomSummaryF import io.element.android.features.roomlist.impl.migration.InMemoryMigrationScreenStore import io.element.android.features.roomlist.impl.migration.MigrationScreenPresenter import io.element.android.features.roomlist.impl.model.createRoomListRoomSummary -import io.element.android.features.roomlist.impl.search.RoomListSearchPresenter -import io.element.android.features.roomlist.impl.search.createRoomListSearchPresenter +import io.element.android.features.roomlist.impl.search.RoomListSearchState +import io.element.android.features.roomlist.impl.search.aRoomListSearchState +import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.dateformatter.api.LastMessageTimestampFormatter import io.element.android.libraries.dateformatter.test.A_FORMATTED_DATE import io.element.android.libraries.dateformatter.test.FakeLastMessageTimestampFormatter @@ -454,7 +455,6 @@ class RoomListPresenterTests { // The migration screen is not shown anymore assertThat(awaitItem().displayMigrationStatus).isFalse() - cancelAndIgnoreRemainingEvents() scope.cancel() } } @@ -512,7 +512,7 @@ class RoomListPresenterTests { matrixClient = client, migrationScreenStore = InMemoryMigrationScreenStore(), ), - searchPresenter: RoomListSearchPresenter = createRoomListSearchPresenter(roomListService = client.roomListService) + searchPresenter: Presenter = Presenter { aRoomListSearchState() }, ) = RoomListPresenter( client = client, sessionVerificationService = sessionVerificationService,