PermissionsEvents -> PermissionsEvent

This commit is contained in:
Benoit Marty
2026-08-25 09:59:31 +02:00
parent ee30d6aa41
commit e07099f116
8 changed files with 20 additions and 20 deletions
@@ -41,9 +41,9 @@ class DefaultPermissionsPresenter(
permissionsRequested = true permissionsRequested = true
} }
fun handleEvent(event: PermissionsEvents) { fun handleEvent(event: PermissionsEvent) {
when (event) { when (event) {
PermissionsEvents.RequestPermissions -> { PermissionsEvent.RequestPermissions -> {
multiplePermissionsState.launchMultiplePermissionRequest() multiplePermissionsState.launchMultiplePermissionRequest()
} }
} }
@@ -8,6 +8,6 @@
package io.element.android.features.location.impl.common.permissions package io.element.android.features.location.impl.common.permissions
sealed interface PermissionsEvents { sealed interface PermissionsEvent {
data object RequestPermissions : PermissionsEvents data object RequestPermissions : PermissionsEvent
} }
@@ -12,7 +12,7 @@ data class PermissionsState(
val permissions: Permissions, val permissions: Permissions,
val shouldShowRationale: Boolean, val shouldShowRationale: Boolean,
val permissionsAlreadyRequested: Boolean, val permissionsAlreadyRequested: Boolean,
val eventSink: (PermissionsEvents) -> Unit, val eventSink: (PermissionsEvent) -> Unit,
) { ) {
sealed interface Permissions { sealed interface Permissions {
data object AllGranted : Permissions data object AllGranted : Permissions
@@ -29,7 +29,7 @@ import io.element.android.features.location.impl.common.MapDefaults
import io.element.android.features.location.impl.common.SendLiveLocationPermissions import io.element.android.features.location.impl.common.SendLiveLocationPermissions
import io.element.android.features.location.impl.common.actions.LocationActions import io.element.android.features.location.impl.common.actions.LocationActions
import io.element.android.features.location.impl.common.checkLocationConstraints import io.element.android.features.location.impl.common.checkLocationConstraints
import io.element.android.features.location.impl.common.permissions.PermissionsEvents import io.element.android.features.location.impl.common.permissions.PermissionsEvent
import io.element.android.features.location.impl.common.permissions.PermissionsPresenter import io.element.android.features.location.impl.common.permissions.PermissionsPresenter
import io.element.android.features.location.impl.common.permissions.PermissionsState import io.element.android.features.location.impl.common.permissions.PermissionsState
import io.element.android.features.location.impl.common.sendLiveLocationPermissions import io.element.android.features.location.impl.common.sendLiveLocationPermissions
@@ -111,7 +111,7 @@ class ShareLocationPresenter(
sendLiveLocationPermissions = SendLiveLocationPermissions.GRANTED sendLiveLocationPermissions = SendLiveLocationPermissions.GRANTED
) )
if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) { if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) {
permissionsState.eventSink(PermissionsEvents.RequestPermissions) permissionsState.eventSink(PermissionsEvent.RequestPermissions)
} }
trackUserPosition = locationConstraints is LocationConstraintsCheck.Success trackUserPosition = locationConstraints is LocationConstraintsCheck.Success
dialogState = ShareLocationState.Dialog.Constraints(locationConstraints.toDialogState()) dialogState = ShareLocationState.Dialog.Constraints(locationConstraints.toDialogState())
@@ -137,7 +137,7 @@ class ShareLocationPresenter(
} }
else -> { else -> {
if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) { if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) {
permissionsState.eventSink(PermissionsEvents.RequestPermissions) permissionsState.eventSink(PermissionsEvent.RequestPermissions)
} }
dialogState = ShareLocationState.Dialog.Constraints(locationConstraints.toDialogState()) dialogState = ShareLocationState.Dialog.Constraints(locationConstraints.toDialogState())
} }
@@ -195,7 +195,7 @@ class ShareLocationPresenter(
} }
ShareLocationEvent.RequestPermissions -> { ShareLocationEvent.RequestPermissions -> {
dialogState = ShareLocationState.Dialog.None dialogState = ShareLocationState.Dialog.None
permissionsState.eventSink(PermissionsEvents.RequestPermissions) permissionsState.eventSink(PermissionsEvent.RequestPermissions)
} }
} }
} }
@@ -32,7 +32,7 @@ import io.element.android.features.location.impl.common.MapDefaults
import io.element.android.features.location.impl.common.SendLiveLocationPermissions import io.element.android.features.location.impl.common.SendLiveLocationPermissions
import io.element.android.features.location.impl.common.actions.LocationActions import io.element.android.features.location.impl.common.actions.LocationActions
import io.element.android.features.location.impl.common.checkLocationConstraints import io.element.android.features.location.impl.common.checkLocationConstraints
import io.element.android.features.location.impl.common.permissions.PermissionsEvents import io.element.android.features.location.impl.common.permissions.PermissionsEvent
import io.element.android.features.location.impl.common.permissions.PermissionsPresenter import io.element.android.features.location.impl.common.permissions.PermissionsPresenter
import io.element.android.features.location.impl.common.permissions.PermissionsState import io.element.android.features.location.impl.common.permissions.PermissionsState
import io.element.android.features.location.impl.common.toDialogState import io.element.android.features.location.impl.common.toDialogState
@@ -99,7 +99,7 @@ class ShowLocationPresenter(
sendLiveLocationPermissions = SendLiveLocationPermissions.GRANTED sendLiveLocationPermissions = SendLiveLocationPermissions.GRANTED
) )
if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) { if (locationConstraints is LocationConstraintsCheck.PermissionShouldBeRequested) {
permissionsState.eventSink(PermissionsEvents.RequestPermissions) permissionsState.eventSink(PermissionsEvent.RequestPermissions)
} }
isTrackMyLocation = locationConstraints is LocationConstraintsCheck.Success isTrackMyLocation = locationConstraints is LocationConstraintsCheck.Success
dialogState = locationConstraints.toDialogState() dialogState = locationConstraints.toDialogState()
@@ -130,7 +130,7 @@ class ShowLocationPresenter(
locationActions.openLocationSettings() locationActions.openLocationSettings()
dialogState = LocationConstraintsDialogState.None dialogState = LocationConstraintsDialogState.None
} }
ShowLocationEvent.RequestPermissions -> permissionsState.eventSink(PermissionsEvents.RequestPermissions) ShowLocationEvent.RequestPermissions -> permissionsState.eventSink(PermissionsEvent.RequestPermissions)
ShowLocationEvent.StopLocationSharing -> coroutineScope.launch { ShowLocationEvent.StopLocationSharing -> coroutineScope.launch {
liveLocationShareManager.stopShare(joinedRoom.roomId) liveLocationShareManager.stopShare(joinedRoom.roomId)
} }
@@ -11,9 +11,9 @@ package io.element.android.features.location.impl.common.permissions
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
class FakePermissionsPresenter : PermissionsPresenter { class FakePermissionsPresenter : PermissionsPresenter {
val events = mutableListOf<PermissionsEvents>() val events = mutableListOf<PermissionsEvent>()
private fun handleEvent(event: PermissionsEvents) { private fun handleEvent(event: PermissionsEvent) {
events += event events += event
} }
@@ -26,7 +26,7 @@ import io.element.android.features.location.impl.aPermissionsState
import io.element.android.features.location.impl.common.FakeUserLocationStateFactory import io.element.android.features.location.impl.common.FakeUserLocationStateFactory
import io.element.android.features.location.impl.common.actions.FakeLocationActions import io.element.android.features.location.impl.common.actions.FakeLocationActions
import io.element.android.features.location.impl.common.permissions.FakePermissionsPresenter import io.element.android.features.location.impl.common.permissions.FakePermissionsPresenter
import io.element.android.features.location.impl.common.permissions.PermissionsEvents import io.element.android.features.location.impl.common.permissions.PermissionsEvent
import io.element.android.features.location.impl.common.permissions.PermissionsState import io.element.android.features.location.impl.common.permissions.PermissionsState
import io.element.android.features.location.impl.common.ui.LocationConstraintsDialogState import io.element.android.features.location.impl.common.ui.LocationConstraintsDialogState
import io.element.android.features.location.impl.live.LiveLocationStore import io.element.android.features.location.impl.live.LiveLocationStore
@@ -174,7 +174,7 @@ class ShareLocationPresenterTest {
shareLocationPresenter.test { shareLocationPresenter.test {
skipItems(2) skipItems(2)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
assertThat(fakePermissionsPresenter.events).contains(PermissionsEvents.RequestPermissions) assertThat(fakePermissionsPresenter.events).contains(PermissionsEvent.RequestPermissions)
} }
} }
@@ -298,7 +298,7 @@ class ShareLocationPresenterTest {
// Wait for dialog to be dismissed // Wait for dialog to be dismissed
awaitItem() awaitItem()
assertThat(fakePermissionsPresenter.events.last()).isEqualTo(PermissionsEvents.RequestPermissions) assertThat(fakePermissionsPresenter.events.last()).isEqualTo(PermissionsEvent.RequestPermissions)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }
@@ -20,7 +20,7 @@ import io.element.android.features.location.impl.aPermissionsState
import io.element.android.features.location.impl.common.FakeUserLocationStateFactory import io.element.android.features.location.impl.common.FakeUserLocationStateFactory
import io.element.android.features.location.impl.common.actions.FakeLocationActions import io.element.android.features.location.impl.common.actions.FakeLocationActions
import io.element.android.features.location.impl.common.permissions.FakePermissionsPresenter import io.element.android.features.location.impl.common.permissions.FakePermissionsPresenter
import io.element.android.features.location.impl.common.permissions.PermissionsEvents import io.element.android.features.location.impl.common.permissions.PermissionsEvent
import io.element.android.features.location.impl.common.permissions.PermissionsState import io.element.android.features.location.impl.common.permissions.PermissionsState
import io.element.android.features.location.impl.common.ui.LocationConstraintsDialogState import io.element.android.features.location.impl.common.ui.LocationConstraintsDialogState
import io.element.android.features.location.test.FakeActiveLiveLocationShareManager import io.element.android.features.location.test.FakeActiveLiveLocationShareManager
@@ -188,7 +188,7 @@ class ShowLocationPresenterTest {
// Continue the dialog sends permission request to the permissions presenter // Continue the dialog sends permission request to the permissions presenter
trackLocationState.eventSink(ShowLocationEvent.RequestPermissions) trackLocationState.eventSink(ShowLocationEvent.RequestPermissions)
assertThat(fakePermissionsPresenter.events.last()).isEqualTo(PermissionsEvents.RequestPermissions) assertThat(fakePermissionsPresenter.events.last()).isEqualTo(PermissionsEvent.RequestPermissions)
} }
} }
@@ -208,7 +208,7 @@ class ShowLocationPresenterTest {
initialState.eventSink(ShowLocationEvent.TrackMyLocation(true)) initialState.eventSink(ShowLocationEvent.TrackMyLocation(true))
assertThat(fakePermissionsPresenter.events).contains(PermissionsEvents.RequestPermissions) assertThat(fakePermissionsPresenter.events).contains(PermissionsEvent.RequestPermissions)
cancelAndIgnoreRemainingEvents() cancelAndIgnoreRemainingEvents()
} }
} }