mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-04 01:19:33 +00:00
AnalyticsOptInEvents -> AnalyticsOptInEvent
This commit is contained in:
+2
-2
@@ -8,6 +8,6 @@
|
|||||||
|
|
||||||
package io.element.android.features.analytics.api
|
package io.element.android.features.analytics.api
|
||||||
|
|
||||||
sealed interface AnalyticsOptInEvents {
|
sealed interface AnalyticsOptInEvent {
|
||||||
data class EnableAnalytics(val isEnabled: Boolean) : AnalyticsOptInEvents
|
data class EnableAnalytics(val isEnabled: Boolean) : AnalyticsOptInEvent
|
||||||
}
|
}
|
||||||
+2
-2
@@ -8,11 +8,11 @@
|
|||||||
|
|
||||||
package io.element.android.features.analytics.api.preferences
|
package io.element.android.features.analytics.api.preferences
|
||||||
|
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
|
|
||||||
data class AnalyticsPreferencesState(
|
data class AnalyticsPreferencesState(
|
||||||
val applicationName: String,
|
val applicationName: String,
|
||||||
val isEnabled: Boolean,
|
val isEnabled: Boolean,
|
||||||
val policyUrl: String,
|
val policyUrl: String,
|
||||||
val eventSink: (AnalyticsOptInEvents) -> Unit,
|
val eventSink: (AnalyticsOptInEvent) -> Unit,
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.features.analytics.api.R
|
import io.element.android.features.analytics.api.R
|
||||||
import io.element.android.libraries.designsystem.components.LINK_TAG
|
import io.element.android.libraries.designsystem.components.LINK_TAG
|
||||||
import io.element.android.libraries.designsystem.components.list.ListItemContent
|
import io.element.android.libraries.designsystem.components.list.ListItemContent
|
||||||
@@ -30,7 +30,7 @@ fun AnalyticsPreferencesView(
|
|||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
fun onEnabledChanged(isEnabled: Boolean) {
|
fun onEnabledChanged(isEnabled: Boolean) {
|
||||||
state.eventSink(AnalyticsOptInEvents.EnableAnalytics(isEnabled = isEnabled))
|
state.eventSink(AnalyticsOptInEvent.EnableAnalytics(isEnabled = isEnabled))
|
||||||
}
|
}
|
||||||
|
|
||||||
val supportingText = stringResource(
|
val supportingText = stringResource(
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import dev.zacsweers.metro.Inject
|
import dev.zacsweers.metro.Inject
|
||||||
import io.element.android.appconfig.AnalyticsConfig
|
import io.element.android.appconfig.AnalyticsConfig
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.services.analytics.api.AnalyticsService
|
import io.element.android.services.analytics.api.AnalyticsService
|
||||||
@@ -28,9 +28,9 @@ class AnalyticsOptInPresenter(
|
|||||||
override fun present(): AnalyticsOptInState {
|
override fun present(): AnalyticsOptInState {
|
||||||
val localCoroutineScope = rememberCoroutineScope()
|
val localCoroutineScope = rememberCoroutineScope()
|
||||||
|
|
||||||
fun handleEvent(event: AnalyticsOptInEvents) {
|
fun handleEvent(event: AnalyticsOptInEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is AnalyticsOptInEvents.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled)
|
is AnalyticsOptInEvent.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled)
|
||||||
}
|
}
|
||||||
localCoroutineScope.launch {
|
localCoroutineScope.launch {
|
||||||
analyticsService.setDidAskUserConsent()
|
analyticsService.setDidAskUserConsent()
|
||||||
|
|||||||
+2
-2
@@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
package io.element.android.features.analytics.impl
|
package io.element.android.features.analytics.impl
|
||||||
|
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
|
|
||||||
data class AnalyticsOptInState(
|
data class AnalyticsOptInState(
|
||||||
val applicationName: String,
|
val applicationName: String,
|
||||||
val hasPolicyLink: Boolean,
|
val hasPolicyLink: Boolean,
|
||||||
val eventSink: (AnalyticsOptInEvents) -> Unit
|
val eventSink: (AnalyticsOptInEvent) -> Unit
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -28,7 +28,7 @@ import androidx.compose.ui.unit.dp
|
|||||||
import io.element.android.appconfig.AnalyticsConfig
|
import io.element.android.appconfig.AnalyticsConfig
|
||||||
import io.element.android.compound.theme.ElementTheme
|
import io.element.android.compound.theme.ElementTheme
|
||||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule
|
import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule
|
||||||
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
|
import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule
|
||||||
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
|
import io.element.android.libraries.designsystem.atomic.pages.HeaderFooterPage
|
||||||
@@ -55,11 +55,11 @@ fun AnalyticsOptInView(
|
|||||||
val eventSink = state.eventSink
|
val eventSink = state.eventSink
|
||||||
|
|
||||||
fun onAcceptTerms() {
|
fun onAcceptTerms() {
|
||||||
eventSink(AnalyticsOptInEvents.EnableAnalytics(true))
|
eventSink(AnalyticsOptInEvent.EnableAnalytics(true))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDeclineTerms() {
|
fun onDeclineTerms() {
|
||||||
eventSink(AnalyticsOptInEvents.EnableAnalytics(false))
|
eventSink(AnalyticsOptInEvent.EnableAnalytics(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
BackHandler(onBack = ::onDeclineTerms)
|
BackHandler(onBack = ::onDeclineTerms)
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import androidx.compose.runtime.collectAsState
|
|||||||
import androidx.compose.runtime.rememberCoroutineScope
|
import androidx.compose.runtime.rememberCoroutineScope
|
||||||
import dev.zacsweers.metro.Inject
|
import dev.zacsweers.metro.Inject
|
||||||
import io.element.android.appconfig.AnalyticsConfig
|
import io.element.android.appconfig.AnalyticsConfig
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState
|
import io.element.android.features.analytics.api.preferences.AnalyticsPreferencesState
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
@@ -31,9 +31,9 @@ class AnalyticsPreferencesPresenter(
|
|||||||
val localCoroutineScope = rememberCoroutineScope()
|
val localCoroutineScope = rememberCoroutineScope()
|
||||||
val isEnabled = analyticsService.userConsentFlow.collectAsState(initial = false)
|
val isEnabled = analyticsService.userConsentFlow.collectAsState(initial = false)
|
||||||
|
|
||||||
fun handleEvent(event: AnalyticsOptInEvents) {
|
fun handleEvent(event: AnalyticsOptInEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is AnalyticsOptInEvents.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled)
|
is AnalyticsOptInEvent.EnableAnalytics -> localCoroutineScope.setIsEnabled(event.isEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -12,7 +12,7 @@ import app.cash.molecule.RecompositionMode
|
|||||||
import app.cash.molecule.moleculeFlow
|
import app.cash.molecule.moleculeFlow
|
||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
||||||
import io.element.android.services.analytics.test.FakeAnalyticsService
|
import io.element.android.services.analytics.test.FakeAnalyticsService
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
@@ -37,7 +37,7 @@ class AnalyticsOptInPresenterTest {
|
|||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(analyticsService.didAskUserConsentFlow.first()).isFalse()
|
assertThat(analyticsService.didAskUserConsentFlow.first()).isFalse()
|
||||||
initialState.eventSink.invoke(AnalyticsOptInEvents.EnableAnalytics(true))
|
initialState.eventSink.invoke(AnalyticsOptInEvent.EnableAnalytics(true))
|
||||||
assertThat(analyticsService.didAskUserConsentFlow.first()).isTrue()
|
assertThat(analyticsService.didAskUserConsentFlow.first()).isTrue()
|
||||||
assertThat(analyticsService.userConsentFlow.first()).isTrue()
|
assertThat(analyticsService.userConsentFlow.first()).isTrue()
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ class AnalyticsOptInPresenterTest {
|
|||||||
}.test {
|
}.test {
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(analyticsService.didAskUserConsentFlow.first()).isFalse()
|
assertThat(analyticsService.didAskUserConsentFlow.first()).isFalse()
|
||||||
initialState.eventSink.invoke(AnalyticsOptInEvents.EnableAnalytics(false))
|
initialState.eventSink.invoke(AnalyticsOptInEvent.EnableAnalytics(false))
|
||||||
assertThat(analyticsService.didAskUserConsentFlow.first()).isTrue()
|
assertThat(analyticsService.didAskUserConsentFlow.first()).isTrue()
|
||||||
assertThat(analyticsService.userConsentFlow.first()).isFalse()
|
assertThat(analyticsService.userConsentFlow.first()).isFalse()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import app.cash.molecule.moleculeFlow
|
|||||||
import app.cash.turbine.test
|
import app.cash.turbine.test
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.appconfig.AnalyticsConfig
|
import io.element.android.appconfig.AnalyticsConfig
|
||||||
import io.element.android.features.analytics.api.AnalyticsOptInEvents
|
import io.element.android.features.analytics.api.AnalyticsOptInEvent
|
||||||
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
||||||
import io.element.android.services.analytics.test.FakeAnalyticsService
|
import io.element.android.services.analytics.test.FakeAnalyticsService
|
||||||
import io.element.android.tests.testutils.WarmUpRule
|
import io.element.android.tests.testutils.WarmUpRule
|
||||||
@@ -67,9 +67,9 @@ class AnalyticsPreferencesPresenterTest {
|
|||||||
skipItems(1)
|
skipItems(1)
|
||||||
val initialState = awaitItem()
|
val initialState = awaitItem()
|
||||||
assertThat(initialState.isEnabled).isTrue()
|
assertThat(initialState.isEnabled).isTrue()
|
||||||
initialState.eventSink.invoke(AnalyticsOptInEvents.EnableAnalytics(false))
|
initialState.eventSink.invoke(AnalyticsOptInEvent.EnableAnalytics(false))
|
||||||
assertThat(awaitItem().isEnabled).isFalse()
|
assertThat(awaitItem().isEnabled).isFalse()
|
||||||
initialState.eventSink.invoke(AnalyticsOptInEvents.EnableAnalytics(true))
|
initialState.eventSink.invoke(AnalyticsOptInEvent.EnableAnalytics(true))
|
||||||
assertThat(awaitItem().isEnabled).isTrue()
|
assertThat(awaitItem().isEnabled).isTrue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user