Do not expose AnnouncementState in the api module
This commit is contained in:
@@ -174,8 +174,8 @@ class RootFlowNode(
|
||||
state = state,
|
||||
modifier = modifier,
|
||||
onOpenBugReport = this::onOpenBugReport,
|
||||
announcementRenderer = { state, announcementModifier ->
|
||||
announcementService.Render(state, announcementModifier)
|
||||
announcementRenderer = { announcementModifier ->
|
||||
announcementService.Render(announcementModifier)
|
||||
}
|
||||
) {
|
||||
val backstackSlider = rememberBackstackSlider<NavTarget>(
|
||||
|
||||
@@ -13,7 +13,6 @@ import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import dev.zacsweers.metro.Inject
|
||||
import im.vector.app.features.analytics.plan.SuperProperties
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.rageshake.api.crash.CrashDetectionState
|
||||
import io.element.android.features.rageshake.api.detection.RageshakeDetectionState
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
@@ -25,7 +24,6 @@ import io.element.android.services.apperror.api.AppErrorStateService
|
||||
class RootPresenter(
|
||||
private val crashDetectionPresenter: Presenter<CrashDetectionState>,
|
||||
private val rageshakeDetectionPresenter: Presenter<RageshakeDetectionState>,
|
||||
private val announcementPresenter: Presenter<AnnouncementState>,
|
||||
private val appErrorStateService: AppErrorStateService,
|
||||
private val analyticsService: AnalyticsService,
|
||||
private val sdkMetadata: SdkMetadata,
|
||||
@@ -34,7 +32,6 @@ class RootPresenter(
|
||||
override fun present(): RootState {
|
||||
val rageshakeDetectionState = rageshakeDetectionPresenter.present()
|
||||
val crashDetectionState = crashDetectionPresenter.present()
|
||||
val announcementState = announcementPresenter.present()
|
||||
val appErrorState by appErrorStateService.appErrorStateFlow.collectAsState()
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
@@ -51,7 +48,6 @@ class RootPresenter(
|
||||
rageshakeDetectionState = rageshakeDetectionState,
|
||||
crashDetectionState = crashDetectionState,
|
||||
errorState = appErrorState,
|
||||
announcementState = announcementState,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
package io.element.android.appnav.root
|
||||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.rageshake.api.crash.CrashDetectionState
|
||||
import io.element.android.features.rageshake.api.detection.RageshakeDetectionState
|
||||
import io.element.android.services.apperror.api.AppErrorState
|
||||
@@ -18,5 +17,4 @@ data class RootState(
|
||||
val rageshakeDetectionState: RageshakeDetectionState,
|
||||
val crashDetectionState: CrashDetectionState,
|
||||
val errorState: AppErrorState,
|
||||
val announcementState: AnnouncementState,
|
||||
)
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
package io.element.android.appnav.root
|
||||
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||
import io.element.android.features.announcement.api.anAnnouncementState
|
||||
import io.element.android.features.rageshake.api.crash.aCrashDetectionState
|
||||
import io.element.android.features.rageshake.api.detection.aRageshakeDetectionState
|
||||
import io.element.android.services.apperror.api.AppErrorState
|
||||
@@ -34,6 +33,5 @@ open class RootStateProvider : PreviewParameterProvider<RootState> {
|
||||
fun aRootState() = RootState(
|
||||
rageshakeDetectionState = aRageshakeDetectionState(),
|
||||
crashDetectionState = aCrashDetectionState(),
|
||||
announcementState = anAnnouncementState(),
|
||||
errorState = AppErrorState.NoError,
|
||||
)
|
||||
|
||||
@@ -14,7 +14,6 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.rageshake.api.crash.CrashDetectionEvents
|
||||
import io.element.android.features.rageshake.api.crash.CrashDetectionView
|
||||
import io.element.android.features.rageshake.api.detection.RageshakeDetectionEvents
|
||||
@@ -28,7 +27,7 @@ import io.element.android.services.apperror.impl.AppErrorView
|
||||
fun RootView(
|
||||
state: RootState,
|
||||
onOpenBugReport: () -> Unit,
|
||||
announcementRenderer: @Composable (AnnouncementState, Modifier) -> Unit,
|
||||
announcementRenderer: @Composable (Modifier) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
children: @Composable BoxScope.() -> Unit,
|
||||
) {
|
||||
@@ -45,10 +44,7 @@ fun RootView(
|
||||
onOpenBugReport.invoke()
|
||||
}
|
||||
|
||||
announcementRenderer(
|
||||
state.announcementState,
|
||||
Modifier,
|
||||
)
|
||||
announcementRenderer(Modifier)
|
||||
|
||||
RageshakeDetectionView(
|
||||
state = state.rageshakeDetectionState,
|
||||
@@ -70,7 +66,7 @@ internal fun RootViewPreview(@PreviewParameter(RootStateProvider::class) rootSta
|
||||
RootView(
|
||||
state = rootState,
|
||||
onOpenBugReport = {},
|
||||
announcementRenderer = { _, _ -> },
|
||||
announcementRenderer = { },
|
||||
) {
|
||||
Text("Children")
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import app.cash.molecule.moleculeFlow
|
||||
import app.cash.turbine.test
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import io.element.android.appnav.root.RootPresenter
|
||||
import io.element.android.features.announcement.api.anAnnouncementState
|
||||
import io.element.android.features.rageshake.api.crash.aCrashDetectionState
|
||||
import io.element.android.features.rageshake.api.detection.aRageshakeDetectionState
|
||||
import io.element.android.libraries.matrix.test.FakeSdkMetadata
|
||||
@@ -72,7 +71,6 @@ class RootPresenterTest {
|
||||
return RootPresenter(
|
||||
crashDetectionPresenter = { aCrashDetectionState() },
|
||||
rageshakeDetectionPresenter = { aRageshakeDetectionState() },
|
||||
announcementPresenter = { anAnnouncementState() },
|
||||
appErrorStateService = appErrorService,
|
||||
analyticsService = FakeAnalyticsService(),
|
||||
sdkMetadata = FakeSdkMetadata("sha")
|
||||
|
||||
@@ -15,7 +15,6 @@ interface AnnouncementService {
|
||||
|
||||
@Composable
|
||||
fun Render(
|
||||
state: AnnouncementState,
|
||||
modifier: Modifier,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import dev.zacsweers.metro.Inject
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.announcement.impl.store.AnnouncementStore
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.features.announcement.api
|
||||
package io.element.android.features.announcement.impl
|
||||
|
||||
data class AnnouncementState(
|
||||
val showSpaceAnnouncement: Boolean,
|
||||
@@ -18,7 +18,6 @@ import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import io.element.android.features.announcement.api.AnnouncementService
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementState
|
||||
import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementView
|
||||
import io.element.android.features.announcement.impl.store.AnnouncementStore
|
||||
@@ -29,6 +28,7 @@ import kotlinx.coroutines.flow.first
|
||||
@Inject
|
||||
class DefaultAnnouncementService(
|
||||
private val announcementStore: AnnouncementStore,
|
||||
private val announcementPresenter: Presenter<AnnouncementState>,
|
||||
private val spaceAnnouncementPresenter: Presenter<SpaceAnnouncementState>,
|
||||
) : AnnouncementService {
|
||||
override suspend fun onEnteringSpaceTab() {
|
||||
@@ -39,10 +39,11 @@ class DefaultAnnouncementService(
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Render(state: AnnouncementState, modifier: Modifier) {
|
||||
override fun Render(modifier: Modifier) {
|
||||
val announcementState = announcementPresenter.present()
|
||||
Box(modifier = modifier.fillMaxSize()) {
|
||||
AnimatedVisibility(
|
||||
visible = state.showSpaceAnnouncement,
|
||||
visible = announcementState.showSpaceAnnouncement,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
) {
|
||||
|
||||
@@ -11,8 +11,8 @@ import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.BindingContainer
|
||||
import dev.zacsweers.metro.Binds
|
||||
import dev.zacsweers.metro.ContributesTo
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.features.announcement.impl.AnnouncementPresenter
|
||||
import io.element.android.features.announcement.impl.AnnouncementState
|
||||
import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementPresenter
|
||||
import io.element.android.features.announcement.impl.spaces.SpaceAnnouncementState
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
|
||||
@@ -36,9 +36,11 @@ class DefaultAnnouncementServiceTest {
|
||||
|
||||
private fun createDefaultAnnouncementService(
|
||||
announcementStore: AnnouncementStore = InMemoryAnnouncementStore(),
|
||||
announcementPresenter: Presenter<AnnouncementState> = Presenter { anAnnouncementState() },
|
||||
spaceAnnouncementPresenter: Presenter<SpaceAnnouncementState> = Presenter { aSpaceAnnouncementState() },
|
||||
) = DefaultAnnouncementService(
|
||||
announcementStore = announcementStore,
|
||||
announcementPresenter = announcementPresenter,
|
||||
spaceAnnouncementPresenter = spaceAnnouncementPresenter,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -10,19 +10,18 @@ package io.element.android.features.rageshake.test.logs
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import io.element.android.features.announcement.api.AnnouncementService
|
||||
import io.element.android.features.announcement.api.AnnouncementState
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
|
||||
class FakeAnnouncementService(
|
||||
val onEnteringSpaceTabResult: () -> Unit = { lambdaError() },
|
||||
val renderResult: (AnnouncementState, Modifier) -> Unit = { _, _ -> lambdaError() },
|
||||
val renderResult: (Modifier) -> Unit = { lambdaError() },
|
||||
) : AnnouncementService {
|
||||
override suspend fun onEnteringSpaceTab() {
|
||||
onEnteringSpaceTabResult()
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun Render(state: AnnouncementState, modifier: Modifier) {
|
||||
renderResult(state, modifier)
|
||||
override fun Render(modifier: Modifier) {
|
||||
renderResult(modifier)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user