Skip to content

Commit 8db9c22

Browse files
committed
Remove dependencies to other presenters to AnalyticsPreferencesPresenter.
1 parent 241dae1 commit 8db9c22

File tree

9 files changed

+39
-34
lines changed

9 files changed

+39
-34
lines changed

features/analytics/api/src/main/kotlin/io/element/android/features/analytics/api/preferences/AnalyticsPreferencesPresenter.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/*
2+
* Copyright 2024 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only
5+
* Please see LICENSE in the repository root for full details.
6+
*/
7+
8+
package io.element.android.features.analytics.impl.di
9+
10+
import com.squareup.anvil.annotations.ContributesTo
11+
import dagger.Binds
12+
import dagger.Module
13+
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState
14+
import io.element.android.features.analytics.impl.preferences.AnalyticsPreferencesPresenter
15+
import io.element.android.libraries.architecture.Presenter
16+
import io.element.android.libraries.di.AppScope
17+
18+
@ContributesTo(AppScope::class)
19+
@Module
20+
interface AnalyticsModule {
21+
@Binds
22+
fun bindAnalyticsPreferencesPresenter(presenter: AnalyticsPreferencesPresenter): Presenter<AnalyticsPreferencesState>
23+
}

features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/DefaultAnalyticsPreferencesPresenter.kt renamed to features/analytics/impl/src/main/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenter.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,20 @@ package io.element.android.features.analytics.impl.preferences
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.collectAsState
1212
import androidx.compose.runtime.rememberCoroutineScope
13-
import com.squareup.anvil.annotations.ContributesBinding
1413
import io.element.android.appconfig.AnalyticsConfig
1514
import io.element.android.features.analytics.api.AnalyticsOptInEvents
16-
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesPresenter
1715
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState
16+
import io.element.android.libraries.architecture.Presenter
1817
import io.element.android.libraries.core.meta.BuildMeta
19-
import io.element.android.libraries.di.AppScope
2018
import io.element.android.services.analytics.api.AnalyticsService
2119
import kotlinx.coroutines.CoroutineScope
2220
import kotlinx.coroutines.launch
2321
import javax.inject.Inject
2422

25-
@ContributesBinding(AppScope::class)
26-
class DefaultAnalyticsPreferencesPresenter @Inject constructor(
23+
class AnalyticsPreferencesPresenter @Inject constructor(
2724
private val analyticsService: AnalyticsService,
2825
private val buildMeta: BuildMeta,
29-
) : AnalyticsPreferencesPresenter {
26+
) : Presenter<AnalyticsPreferencesState> {
3027
@Composable
3128
override fun present(): AnalyticsPreferencesState {
3229
val localCoroutineScope = rememberCoroutineScope()

features/analytics/impl/src/test/kotlin/io/element/android/features/analytics/impl/preferences/AnalyticsPreferencesPresenterTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class AnalyticsPreferencesPresenterTest {
2525

2626
@Test
2727
fun `present - initial state available`() = runTest {
28-
val presenter = DefaultAnalyticsPreferencesPresenter(
28+
val presenter = AnalyticsPreferencesPresenter(
2929
FakeAnalyticsService(isEnabled = true, didAskUserConsent = true),
3030
aBuildMeta()
3131
)
@@ -41,7 +41,7 @@ class AnalyticsPreferencesPresenterTest {
4141

4242
@Test
4343
fun `present - initial state not available`() = runTest {
44-
val presenter = DefaultAnalyticsPreferencesPresenter(
44+
val presenter = AnalyticsPreferencesPresenter(
4545
FakeAnalyticsService(isEnabled = false, didAskUserConsent = false),
4646
aBuildMeta()
4747
)
@@ -55,7 +55,7 @@ class AnalyticsPreferencesPresenterTest {
5555

5656
@Test
5757
fun `present - enable and disable`() = runTest {
58-
val presenter = DefaultAnalyticsPreferencesPresenter(
58+
val presenter = AnalyticsPreferencesPresenter(
5959
FakeAnalyticsService(isEnabled = true, didAskUserConsent = true),
6060
aBuildMeta()
6161
)

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@
88
package io.element.android.features.preferences.impl.analytics
99

1010
import androidx.compose.runtime.Composable
11-
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesPresenter
11+
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState
1212
import io.element.android.libraries.architecture.Presenter
1313
import javax.inject.Inject
1414

1515
class AnalyticsSettingsPresenter @Inject constructor(
16-
private val analyticsPresenter: AnalyticsPreferencesPresenter,
16+
private val analyticsPreferencesPresenter: Presenter<AnalyticsPreferencesState>,
1717
) : Presenter<AnalyticsSettingsState> {
1818
@Composable
1919
override fun present(): AnalyticsSettingsState {
20-
val analyticsState = analyticsPresenter.present()
20+
val analyticsPreferencesState = analyticsPreferencesPresenter.present()
2121

2222
return AnalyticsSettingsState(
23-
analyticsState = analyticsState,
23+
analyticsPreferencesState = analyticsPreferencesState,
2424
)
2525
}
2626
}

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ import io.element.android.features.analytics.api.preferences.AnalyticsPreference
1111

1212
// Do not use default value, so no member get forgotten in the presenters.
1313
data class AnalyticsSettingsState(
14-
val analyticsState: AnalyticsPreferencesState,
14+
val analyticsPreferencesState: AnalyticsPreferencesState,
1515
)

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsStateProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ open class AnalyticsSettingsStateProvider : PreviewParameterProvider<AnalyticsSe
1818
}
1919

2020
fun aAnalyticsSettingsState() = AnalyticsSettingsState(
21-
analyticsState = aAnalyticsPreferencesState(),
21+
analyticsPreferencesState = aAnalyticsPreferencesState(),
2222
)

features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fun AnalyticsSettingsView(
2929
title = stringResource(id = CommonStrings.common_analytics)
3030
) {
3131
AnalyticsPreferencesView(
32-
state = state.analyticsState,
32+
state = state.analyticsPreferencesState,
3333
)
3434
}
3535
}

features/preferences/impl/src/test/kotlin/io/element/android/features/preferences/impl/analytics/AnalyticsSettingsPresenterTest.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ import app.cash.molecule.RecompositionMode
1111
import app.cash.molecule.moleculeFlow
1212
import app.cash.turbine.test
1313
import com.google.common.truth.Truth.assertThat
14-
import io.element.android.features.analytics.impl.preferences.DefaultAnalyticsPreferencesPresenter
15-
import io.element.android.libraries.matrix.test.core.aBuildMeta
16-
import io.element.android.services.analytics.test.FakeAnalyticsService
14+
import io.element.android.features.analytics.api.preferences.aAnalyticsPreferencesState
1715
import io.element.android.tests.testutils.WarmUpRule
1816
import kotlinx.coroutines.test.runTest
1917
import org.junit.Rule
@@ -25,15 +23,14 @@ class AnalyticsSettingsPresenterTest {
2523

2624
@Test
2725
fun `present - initial state`() = runTest {
28-
val analyticsPresenter = DefaultAnalyticsPreferencesPresenter(FakeAnalyticsService(), aBuildMeta())
2926
val presenter = AnalyticsSettingsPresenter(
30-
analyticsPresenter,
27+
analyticsPreferencesPresenter = { aAnalyticsPreferencesState() },
3128
)
3229
moleculeFlow(RecompositionMode.Immediate) {
3330
presenter.present()
3431
}.test {
3532
val initialState = awaitItem()
36-
assertThat(initialState.analyticsState.isEnabled).isFalse()
33+
assertThat(initialState.analyticsPreferencesState.isEnabled).isFalse()
3734
}
3835
}
3936
}

0 commit comments

Comments
 (0)