From e3f05d170465e4583d77dec1396c769a91ea6c8a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 7 Oct 2024 10:05:42 +0200 Subject: [PATCH] Remove dependencies to other presenters to ChangeServerPresenter. --- .../features/login/impl/di/LoginModule.kt | 23 ++++++++++++ .../ChangeAccountProviderPresenter.kt | 4 +-- .../SearchAccountProviderPresenter.kt | 4 +-- .../ChangeAccountProviderPresenterTest.kt | 10 ++---- .../SearchAccountProviderPresenterTest.kt | 36 +++++-------------- 5 files changed, 38 insertions(+), 39 deletions(-) create mode 100644 features/login/impl/src/main/kotlin/io/element/android/features/login/impl/di/LoginModule.kt diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/di/LoginModule.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/di/LoginModule.kt new file mode 100644 index 0000000000..02b32ad66d --- /dev/null +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/di/LoginModule.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only + * Please see LICENSE in the repository root for full details. + */ + +package io.element.android.features.login.impl.di + +import com.squareup.anvil.annotations.ContributesTo +import dagger.Binds +import dagger.Module +import io.element.android.features.login.impl.changeserver.ChangeServerPresenter +import io.element.android.features.login.impl.changeserver.ChangeServerState +import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.di.AppScope + +@ContributesTo(AppScope::class) +@Module +interface LoginModule { + @Binds + fun bindChangeServerPresenter(presenter: ChangeServerPresenter): Presenter +} diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt index 83f0a4f1b3..de68fdd3f4 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenter.kt @@ -10,12 +10,12 @@ package io.element.android.features.login.impl.screens.changeaccountprovider import androidx.compose.runtime.Composable import io.element.android.appconfig.AuthenticationConfig import io.element.android.features.login.impl.accountprovider.AccountProvider -import io.element.android.features.login.impl.changeserver.ChangeServerPresenter +import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.libraries.architecture.Presenter import javax.inject.Inject class ChangeAccountProviderPresenter @Inject constructor( - private val changeServerPresenter: ChangeServerPresenter, + private val changeServerPresenter: Presenter, ) : Presenter { @Composable override fun present(): ChangeAccountProviderState { diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt index 06ae31d6ca..710f18a4f5 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenter.kt @@ -15,7 +15,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue -import io.element.android.features.login.impl.changeserver.ChangeServerPresenter +import io.element.android.features.login.impl.changeserver.ChangeServerState import io.element.android.features.login.impl.resolver.HomeserverData import io.element.android.features.login.impl.resolver.HomeserverResolver import io.element.android.libraries.architecture.AsyncData @@ -27,7 +27,7 @@ import javax.inject.Inject class SearchAccountProviderPresenter @Inject constructor( private val homeserverResolver: HomeserverResolver, - private val changeServerPresenter: ChangeServerPresenter, + private val changeServerPresenter: Presenter, ) : Presenter { @Composable override fun present(): SearchAccountProviderState { diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt index bd653bbfae..6f71edf6f1 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/changeaccountprovider/ChangeAccountProviderPresenterTest.kt @@ -12,9 +12,7 @@ import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.login.impl.accountprovider.AccountProvider -import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource -import io.element.android.features.login.impl.changeserver.ChangeServerPresenter -import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService +import io.element.android.features.login.impl.changeserver.aChangeServerState import io.element.android.tests.testutils.WarmUpRule import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -26,12 +24,8 @@ class ChangeAccountProviderPresenterTest { @Test fun `present - initial state`() = runTest { - val changeServerPresenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) val presenter = ChangeAccountProviderPresenter( - changeServerPresenter + changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() diff --git a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt index a7529643ba..91b2698d97 100644 --- a/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt +++ b/features/login/impl/src/test/kotlin/io/element/android/features/login/impl/screens/searchaccountprovider/SearchAccountProviderPresenterTest.kt @@ -11,15 +11,13 @@ import app.cash.molecule.RecompositionMode import app.cash.molecule.moleculeFlow import app.cash.turbine.test import com.google.common.truth.Truth.assertThat -import io.element.android.features.login.impl.accountprovider.AccountProviderDataSource -import io.element.android.features.login.impl.changeserver.ChangeServerPresenter +import io.element.android.features.login.impl.changeserver.aChangeServerState import io.element.android.features.login.impl.resolver.HomeserverResolver import io.element.android.features.login.impl.resolver.network.FakeWellknownRequest import io.element.android.features.login.impl.resolver.network.WellKnown import io.element.android.features.login.impl.resolver.network.WellKnownBaseConfig import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.matrix.test.A_HOMESERVER_URL -import io.element.android.libraries.matrix.test.auth.FakeMatrixAuthenticationService import io.element.android.tests.testutils.WarmUpRule import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.test.runTest @@ -33,13 +31,9 @@ class SearchAccountProviderPresenterTest { @Test fun `present - initial state`() = runTest { val fakeWellknownRequest = FakeWellknownRequest() - val changeServerPresenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), - changeServerPresenter + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), + changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -53,13 +47,9 @@ class SearchAccountProviderPresenterTest { @Test fun `present - enter text no result`() = runTest { val fakeWellknownRequest = FakeWellknownRequest() - val changeServerPresenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), - changeServerPresenter + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), + changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -77,13 +67,9 @@ class SearchAccountProviderPresenterTest { @Test fun `present - enter valid url no wellknown`() = runTest { val fakeWellknownRequest = FakeWellknownRequest() - val changeServerPresenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), - changeServerPresenter + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), + changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() @@ -112,13 +98,9 @@ class SearchAccountProviderPresenterTest { "https://test.io" to aWellKnown(), ) ) - val changeServerPresenter = ChangeServerPresenter( - FakeMatrixAuthenticationService(), - AccountProviderDataSource() - ) val presenter = SearchAccountProviderPresenter( - HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), - changeServerPresenter + homeserverResolver = HomeserverResolver(testCoroutineDispatchers(), fakeWellknownRequest), + changeServerPresenter = { aChangeServerState() } ) moleculeFlow(RecompositionMode.Immediate) { presenter.present()