Remove dependencies to other presenters to FullScreenIntentPermissionsPresenter.
Also do some renaming since FullScreenIntentPermissionsPresenter interface can be removed.
This commit is contained in:
committed by
Benoit Marty
parent
cf05a9680f
commit
724c183639
@@ -83,7 +83,6 @@ dependencies {
|
|||||||
testImplementation(projects.features.logout.test)
|
testImplementation(projects.features.logout.test)
|
||||||
testImplementation(projects.libraries.indicator.impl)
|
testImplementation(projects.libraries.indicator.impl)
|
||||||
testImplementation(projects.libraries.pushproviders.test)
|
testImplementation(projects.libraries.pushproviders.test)
|
||||||
testImplementation(projects.libraries.fullscreenintent.test)
|
|
||||||
testImplementation(projects.features.logout.impl)
|
testImplementation(projects.features.logout.impl)
|
||||||
testImplementation(projects.services.analytics.test)
|
testImplementation(projects.services.analytics.test)
|
||||||
testImplementation(projects.services.toolbox.test)
|
testImplementation(projects.services.toolbox.test)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import io.element.android.libraries.architecture.AsyncAction
|
|||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
import io.element.android.libraries.architecture.runUpdatingStateNoSuccess
|
import io.element.android.libraries.architecture.runUpdatingStateNoSuccess
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsPresenter
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
|
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
|
||||||
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||||
@@ -47,7 +47,7 @@ class NotificationSettingsPresenter @Inject constructor(
|
|||||||
private val matrixClient: MatrixClient,
|
private val matrixClient: MatrixClient,
|
||||||
private val pushService: PushService,
|
private val pushService: PushService,
|
||||||
private val systemNotificationsEnabledProvider: SystemNotificationsEnabledProvider,
|
private val systemNotificationsEnabledProvider: SystemNotificationsEnabledProvider,
|
||||||
private val fullScreenIntentPermissionsPresenter: FullScreenIntentPermissionsPresenter,
|
private val fullScreenIntentPermissionsPresenter: Presenter<FullScreenIntentPermissionsState>,
|
||||||
) : Presenter<NotificationSettingsState> {
|
) : Presenter<NotificationSettingsState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): NotificationSettingsState {
|
override fun present(): NotificationSettingsState {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
|||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
|
import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.toImmutableList
|
import kotlinx.collections.immutable.toImmutableList
|
||||||
@@ -87,15 +88,3 @@ fun aInvalidNotificationSettingsState(
|
|||||||
fullScreenIntentPermissionsState = aFullScreenIntentPermissionsState(),
|
fullScreenIntentPermissionsState = aFullScreenIntentPermissionsState(),
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
)
|
)
|
||||||
|
|
||||||
internal fun aFullScreenIntentPermissionsState(
|
|
||||||
permissionGranted: Boolean = true,
|
|
||||||
shouldDisplay: Boolean = false,
|
|
||||||
openFullScreenIntentSettings: () -> Unit = {},
|
|
||||||
dismissFullScreenIntentBanner: () -> Unit = {},
|
|
||||||
) = FullScreenIntentPermissionsState(
|
|
||||||
permissionGranted = permissionGranted,
|
|
||||||
shouldDisplayBanner = shouldDisplay,
|
|
||||||
openFullScreenIntentSettings = openFullScreenIntentSettings,
|
|
||||||
dismissFullScreenIntentBanner = dismissFullScreenIntentBanner,
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ 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.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
import io.element.android.libraries.fullscreenintent.test.FakeFullScreenIntentPermissionsPresenter
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
|
import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
import io.element.android.libraries.matrix.api.room.RoomNotificationMode
|
||||||
import io.element.android.libraries.matrix.test.A_THROWABLE
|
import io.element.android.libraries.matrix.test.A_THROWABLE
|
||||||
@@ -263,12 +264,11 @@ class NotificationSettingsPresenterTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `present - RefreshSystemNotificationsEnabled also refreshes fullScreenIntentState`() = runTest {
|
fun `present - RefreshSystemNotificationsEnabled also refreshes fullScreenIntentState`() = runTest {
|
||||||
val fullScreenIntentPermissionsPresenter = FakeFullScreenIntentPermissionsPresenter().apply {
|
var lambdaResult = aFullScreenIntentPermissionsState(permissionGranted = false)
|
||||||
state = state.copy(permissionGranted = false)
|
val fullScreenIntentPermissionsStateLambda = { lambdaResult }
|
||||||
}
|
|
||||||
val presenter = createNotificationSettingsPresenter(
|
val presenter = createNotificationSettingsPresenter(
|
||||||
pushService = createFakePushService(),
|
pushService = createFakePushService(),
|
||||||
fullScreenIntentPermissionsPresenter = fullScreenIntentPermissionsPresenter,
|
fullScreenIntentPermissionsStateLambda = fullScreenIntentPermissionsStateLambda,
|
||||||
)
|
)
|
||||||
moleculeFlow(RecompositionMode.Immediate) {
|
moleculeFlow(RecompositionMode.Immediate) {
|
||||||
presenter.present()
|
presenter.present()
|
||||||
@@ -277,7 +277,7 @@ class NotificationSettingsPresenterTest {
|
|||||||
assertThat(initialState.fullScreenIntentPermissionsState.permissionGranted).isFalse()
|
assertThat(initialState.fullScreenIntentPermissionsState.permissionGranted).isFalse()
|
||||||
|
|
||||||
// Change the notification settings
|
// Change the notification settings
|
||||||
fullScreenIntentPermissionsPresenter.state = fullScreenIntentPermissionsPresenter.state.copy(permissionGranted = true)
|
lambdaResult = lambdaResult.copy(permissionGranted = true)
|
||||||
// Check it's not changed unless we refresh
|
// Check it's not changed unless we refresh
|
||||||
expectNoEvents()
|
expectNoEvents()
|
||||||
|
|
||||||
@@ -336,7 +336,7 @@ class NotificationSettingsPresenterTest {
|
|||||||
private fun createNotificationSettingsPresenter(
|
private fun createNotificationSettingsPresenter(
|
||||||
notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
|
notificationSettingsService: FakeNotificationSettingsService = FakeNotificationSettingsService(),
|
||||||
pushService: PushService = FakePushService(),
|
pushService: PushService = FakePushService(),
|
||||||
fullScreenIntentPermissionsPresenter: FakeFullScreenIntentPermissionsPresenter = FakeFullScreenIntentPermissionsPresenter()
|
fullScreenIntentPermissionsStateLambda: () -> FullScreenIntentPermissionsState = { aFullScreenIntentPermissionsState() },
|
||||||
): NotificationSettingsPresenter {
|
): NotificationSettingsPresenter {
|
||||||
val matrixClient = FakeMatrixClient(notificationSettingsService = notificationSettingsService)
|
val matrixClient = FakeMatrixClient(notificationSettingsService = notificationSettingsService)
|
||||||
return NotificationSettingsPresenter(
|
return NotificationSettingsPresenter(
|
||||||
@@ -345,7 +345,7 @@ class NotificationSettingsPresenterTest {
|
|||||||
matrixClient = matrixClient,
|
matrixClient = matrixClient,
|
||||||
pushService = pushService,
|
pushService = pushService,
|
||||||
systemNotificationsEnabledProvider = FakeSystemNotificationsEnabledProvider(),
|
systemNotificationsEnabledProvider = FakeSystemNotificationsEnabledProvider(),
|
||||||
fullScreenIntentPermissionsPresenter = fullScreenIntentPermissionsPresenter,
|
fullScreenIntentPermissionsPresenter = { fullScreenIntentPermissionsStateLambda() },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ dependencies {
|
|||||||
testImplementation(projects.libraries.dateformatter.test)
|
testImplementation(projects.libraries.dateformatter.test)
|
||||||
testImplementation(projects.libraries.eventformatter.test)
|
testImplementation(projects.libraries.eventformatter.test)
|
||||||
testImplementation(projects.libraries.indicator.impl)
|
testImplementation(projects.libraries.indicator.impl)
|
||||||
testImplementation(projects.libraries.fullscreenintent.test)
|
|
||||||
testImplementation(projects.libraries.permissions.noop)
|
testImplementation(projects.libraries.permissions.noop)
|
||||||
testImplementation(projects.libraries.permissions.test)
|
testImplementation(projects.libraries.permissions.test)
|
||||||
testImplementation(projects.libraries.preferences.test)
|
testImplementation(projects.libraries.preferences.test)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package io.element.android.features.roomlist.impl
|
|||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
import io.element.android.features.roomlist.impl.model.RoomListRoomSummary
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
|
import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState
|
||||||
import kotlinx.collections.immutable.ImmutableList
|
import kotlinx.collections.immutable.ImmutableList
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
||||||
@@ -37,15 +38,3 @@ internal fun aRoomsContentState(
|
|||||||
internal fun aSkeletonContentState() = RoomListContentState.Skeleton(16)
|
internal fun aSkeletonContentState() = RoomListContentState.Skeleton(16)
|
||||||
|
|
||||||
internal fun anEmptyContentState() = RoomListContentState.Empty
|
internal fun anEmptyContentState() = RoomListContentState.Empty
|
||||||
|
|
||||||
internal fun aFullScreenIntentPermissionsState(
|
|
||||||
permissionGranted: Boolean = true,
|
|
||||||
shouldDisplay: Boolean = false,
|
|
||||||
openFullScreenIntentSettings: () -> Unit = {},
|
|
||||||
dismissFullScreenIntentBanner: () -> Unit = {},
|
|
||||||
) = FullScreenIntentPermissionsState(
|
|
||||||
permissionGranted = permissionGranted,
|
|
||||||
shouldDisplayBanner = shouldDisplay,
|
|
||||||
openFullScreenIntentSettings = openFullScreenIntentSettings,
|
|
||||||
dismissFullScreenIntentBanner = dismissFullScreenIntentBanner,
|
|
||||||
)
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatch
|
|||||||
import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState
|
import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsPresenter
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.indicator.api.IndicatorService
|
import io.element.android.libraries.indicator.api.IndicatorService
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
@@ -89,7 +89,7 @@ class RoomListPresenter @Inject constructor(
|
|||||||
private val sessionPreferencesStore: SessionPreferencesStore,
|
private val sessionPreferencesStore: SessionPreferencesStore,
|
||||||
private val analyticsService: AnalyticsService,
|
private val analyticsService: AnalyticsService,
|
||||||
private val acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState>,
|
private val acceptDeclineInvitePresenter: Presenter<AcceptDeclineInviteState>,
|
||||||
private val fullScreenIntentPermissionsPresenter: FullScreenIntentPermissionsPresenter,
|
private val fullScreenIntentPermissionsPresenter: Presenter<FullScreenIntentPermissionsState>,
|
||||||
private val notificationCleaner: NotificationCleaner,
|
private val notificationCleaner: NotificationCleaner,
|
||||||
private val logoutPresenter: Presenter<DirectLogoutState>,
|
private val logoutPresenter: Presenter<DirectLogoutState>,
|
||||||
) : Presenter<RoomListState> {
|
) : Presenter<RoomListState> {
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ package io.element.android.features.roomlist.impl.components
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import io.element.android.features.roomlist.impl.R
|
import io.element.android.features.roomlist.impl.R
|
||||||
import io.element.android.features.roomlist.impl.aFullScreenIntentPermissionsState
|
|
||||||
import io.element.android.libraries.designsystem.atomic.molecules.DialogLikeBannerMolecule
|
import io.element.android.libraries.designsystem.atomic.molecules.DialogLikeBannerMolecule
|
||||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
|
import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun FullScreenIntentPermissionBanner(state: FullScreenIntentPermissionsState) {
|
fun FullScreenIntentPermissionBanner(state: FullScreenIntentPermissionsState) {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import io.element.android.libraries.eventformatter.api.RoomLastMessageFormatter
|
|||||||
import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageFormatter
|
import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageFormatter
|
||||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||||
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
|
||||||
import io.element.android.libraries.fullscreenintent.test.FakeFullScreenIntentPermissionsPresenter
|
import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.indicator.impl.DefaultIndicatorService
|
import io.element.android.libraries.indicator.impl.DefaultIndicatorService
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
@@ -709,7 +709,7 @@ class RoomListPresenterTest {
|
|||||||
filtersPresenter = filtersPresenter,
|
filtersPresenter = filtersPresenter,
|
||||||
analyticsService = analyticsService,
|
analyticsService = analyticsService,
|
||||||
acceptDeclineInvitePresenter = acceptDeclineInvitePresenter,
|
acceptDeclineInvitePresenter = acceptDeclineInvitePresenter,
|
||||||
fullScreenIntentPermissionsPresenter = FakeFullScreenIntentPermissionsPresenter(),
|
fullScreenIntentPermissionsPresenter = { aFullScreenIntentPermissionsState() },
|
||||||
notificationCleaner = notificationCleaner,
|
notificationCleaner = notificationCleaner,
|
||||||
logoutPresenter = { aDirectLogoutState() },
|
logoutPresenter = { aDirectLogoutState() },
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.libraries.fullscreenintent.api
|
|
||||||
|
|
||||||
import io.element.android.libraries.architecture.Presenter
|
|
||||||
|
|
||||||
interface FullScreenIntentPermissionsPresenter : Presenter<FullScreenIntentPermissionsState>
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* 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.libraries.fullscreenintent.api
|
||||||
|
|
||||||
|
fun aFullScreenIntentPermissionsState(
|
||||||
|
permissionGranted: Boolean = true,
|
||||||
|
shouldDisplay: Boolean = false,
|
||||||
|
openFullScreenIntentSettings: () -> Unit = {},
|
||||||
|
dismissFullScreenIntentBanner: () -> Unit = {},
|
||||||
|
) = FullScreenIntentPermissionsState(
|
||||||
|
permissionGranted = permissionGranted,
|
||||||
|
shouldDisplayBanner = shouldDisplay,
|
||||||
|
openFullScreenIntentSettings = openFullScreenIntentSettings,
|
||||||
|
dismissFullScreenIntentBanner = dismissFullScreenIntentBanner,
|
||||||
|
)
|
||||||
@@ -27,7 +27,6 @@ dependencies {
|
|||||||
implementation(projects.services.toolbox.api)
|
implementation(projects.services.toolbox.api)
|
||||||
implementation(libs.androidx.datastore.preferences)
|
implementation(libs.androidx.datastore.preferences)
|
||||||
|
|
||||||
testImplementation(projects.libraries.fullscreenintent.test)
|
|
||||||
testImplementation(libs.test.junit)
|
testImplementation(libs.test.junit)
|
||||||
testImplementation(libs.coroutines.test)
|
testImplementation(libs.coroutines.test)
|
||||||
testImplementation(libs.molecule.runtime)
|
testImplementation(libs.molecule.runtime)
|
||||||
|
|||||||
@@ -19,11 +19,10 @@ import androidx.compose.runtime.rememberCoroutineScope
|
|||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.datastore.preferences.core.booleanPreferencesKey
|
import androidx.datastore.preferences.core.booleanPreferencesKey
|
||||||
import androidx.datastore.preferences.core.edit
|
import androidx.datastore.preferences.core.edit
|
||||||
import com.squareup.anvil.annotations.ContributesBinding
|
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.libraries.di.AppScope
|
import io.element.android.libraries.di.AppScope
|
||||||
import io.element.android.libraries.di.SingleIn
|
import io.element.android.libraries.di.SingleIn
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsPresenter
|
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
|
import io.element.android.libraries.preferences.api.store.PreferenceDataStoreFactory
|
||||||
import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher
|
import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher
|
||||||
@@ -33,14 +32,13 @@ import kotlinx.coroutines.launch
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@SingleIn(AppScope::class)
|
@SingleIn(AppScope::class)
|
||||||
@ContributesBinding(AppScope::class)
|
class FullScreenIntentPermissionsPresenter @Inject constructor(
|
||||||
class DefaultFullScreenIntentPermissionsPresenter @Inject constructor(
|
|
||||||
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
|
private val buildVersionSdkIntProvider: BuildVersionSdkIntProvider,
|
||||||
private val externalIntentLauncher: ExternalIntentLauncher,
|
private val externalIntentLauncher: ExternalIntentLauncher,
|
||||||
private val buildMeta: BuildMeta,
|
private val buildMeta: BuildMeta,
|
||||||
private val notificationManagerCompat: NotificationManagerCompat,
|
private val notificationManagerCompat: NotificationManagerCompat,
|
||||||
preferencesDataStoreFactory: PreferenceDataStoreFactory,
|
preferencesDataStoreFactory: PreferenceDataStoreFactory,
|
||||||
) : FullScreenIntentPermissionsPresenter {
|
) : Presenter<FullScreenIntentPermissionsState> {
|
||||||
companion object {
|
companion object {
|
||||||
private const val PREF_KEY_FULL_SCREEN_INTENT_BANNER_DISMISSED = "PREF_KEY_FULL_SCREEN_INTENT_BANNER_DISMISSED"
|
private const val PREF_KEY_FULL_SCREEN_INTENT_BANNER_DISMISSED = "PREF_KEY_FULL_SCREEN_INTENT_BANNER_DISMISSED"
|
||||||
}
|
}
|
||||||
@@ -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.libraries.fullscreenintent.impl.di
|
||||||
|
|
||||||
|
import com.squareup.anvil.annotations.ContributesTo
|
||||||
|
import dagger.Binds
|
||||||
|
import dagger.Module
|
||||||
|
import io.element.android.libraries.architecture.Presenter
|
||||||
|
import io.element.android.libraries.di.AppScope
|
||||||
|
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
||||||
|
import io.element.android.libraries.fullscreenintent.impl.FullScreenIntentPermissionsPresenter
|
||||||
|
|
||||||
|
@ContributesTo(AppScope::class)
|
||||||
|
@Module
|
||||||
|
interface FullScreenIntentModule {
|
||||||
|
@Binds
|
||||||
|
fun bindFullScreenIntentPermissionsPresenter(presenter: FullScreenIntentPermissionsPresenter): Presenter<FullScreenIntentPermissionsState>
|
||||||
|
}
|
||||||
@@ -15,7 +15,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.libraries.core.meta.BuildMeta
|
import io.element.android.libraries.core.meta.BuildMeta
|
||||||
import io.element.android.libraries.fullscreenintent.impl.DefaultFullScreenIntentPermissionsPresenter
|
import io.element.android.libraries.fullscreenintent.impl.FullScreenIntentPermissionsPresenter
|
||||||
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
import io.element.android.libraries.matrix.test.core.aBuildMeta
|
||||||
import io.element.android.libraries.preferences.test.FakePreferenceDataStoreFactory
|
import io.element.android.libraries.preferences.test.FakePreferenceDataStoreFactory
|
||||||
import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher
|
import io.element.android.services.toolbox.api.intent.ExternalIntentLauncher
|
||||||
@@ -32,7 +32,7 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
@OptIn(ExperimentalCoroutinesApi::class)
|
@OptIn(ExperimentalCoroutinesApi::class)
|
||||||
class DefaultFullScreenIntentPermissionsPresenterTest {
|
class FullScreenIntentPermissionsPresenterTest {
|
||||||
@get:Rule
|
@get:Rule
|
||||||
val warmUpRule = WarmUpRule()
|
val warmUpRule = WarmUpRule()
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ class DefaultFullScreenIntentPermissionsPresenterTest {
|
|||||||
externalIntentLauncher: ExternalIntentLauncher = FakeExternalIntentLauncher(),
|
externalIntentLauncher: ExternalIntentLauncher = FakeExternalIntentLauncher(),
|
||||||
buildMeta: BuildMeta = aBuildMeta(),
|
buildMeta: BuildMeta = aBuildMeta(),
|
||||||
notificationManagerCompat: NotificationManagerCompat = mockk(relaxed = true)
|
notificationManagerCompat: NotificationManagerCompat = mockk(relaxed = true)
|
||||||
) = DefaultFullScreenIntentPermissionsPresenter(
|
) = FullScreenIntentPermissionsPresenter(
|
||||||
buildVersionSdkIntProvider = buildVersionSdkIntProvider,
|
buildVersionSdkIntProvider = buildVersionSdkIntProvider,
|
||||||
externalIntentLauncher = externalIntentLauncher,
|
externalIntentLauncher = externalIntentLauncher,
|
||||||
buildMeta = buildMeta,
|
buildMeta = buildMeta,
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2024 New Vector Ltd.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
* Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id("io.element.android-compose-library")
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace = "io.element.android.libraries.fullscreenintent.test"
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
api(projects.libraries.fullscreenintent.api)
|
|
||||||
implementation(projects.libraries.architecture)
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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.libraries.fullscreenintent.test
|
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsPresenter
|
|
||||||
import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState
|
|
||||||
|
|
||||||
class FakeFullScreenIntentPermissionsPresenter : FullScreenIntentPermissionsPresenter {
|
|
||||||
var state = FullScreenIntentPermissionsState(
|
|
||||||
permissionGranted = true,
|
|
||||||
shouldDisplayBanner = false,
|
|
||||||
dismissFullScreenIntentBanner = {},
|
|
||||||
openFullScreenIntentSettings = {},
|
|
||||||
)
|
|
||||||
@Composable
|
|
||||||
override fun present(): FullScreenIntentPermissionsState {
|
|
||||||
return state
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user