Fix previews
This commit is contained in:
parent
b284984dad
commit
22a2bba354
3 changed files with 25 additions and 30 deletions
|
|
@ -8,14 +8,20 @@
|
||||||
package io.element.android.features.location.impl.common.ui
|
package io.element.android.features.location.impl.common.ui
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.platform.LocalInspectionMode
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import io.element.android.compound.theme.ElementTheme
|
import io.element.android.compound.theme.ElementTheme
|
||||||
import org.maplibre.compose.camera.CameraState
|
import org.maplibre.compose.camera.CameraState
|
||||||
|
import org.maplibre.compose.location.DesiredAccuracy
|
||||||
import org.maplibre.compose.location.LocationPuck
|
import org.maplibre.compose.location.LocationPuck
|
||||||
import org.maplibre.compose.location.LocationPuckColors
|
import org.maplibre.compose.location.LocationPuckColors
|
||||||
import org.maplibre.compose.location.LocationPuckSizes
|
import org.maplibre.compose.location.LocationPuckSizes
|
||||||
import org.maplibre.compose.location.LocationTrackingEffect
|
import org.maplibre.compose.location.LocationTrackingEffect
|
||||||
import org.maplibre.compose.location.UserLocationState
|
import org.maplibre.compose.location.UserLocationState
|
||||||
|
import org.maplibre.compose.location.rememberAndroidLocationProvider
|
||||||
|
import org.maplibre.compose.location.rememberNullLocationProvider
|
||||||
|
import org.maplibre.compose.location.rememberUserLocationState
|
||||||
|
import kotlin.time.Duration.Companion.minutes
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun UserLocationPuck(
|
fun UserLocationPuck(
|
||||||
|
|
@ -50,3 +56,18 @@ fun UserLocationPuck(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun rememberUserLocationState(hasLocationPermission: Boolean): UserLocationState {
|
||||||
|
val isPreview = LocalInspectionMode.current
|
||||||
|
val locationProvider = if (isPreview || !hasLocationPermission) {
|
||||||
|
rememberNullLocationProvider()
|
||||||
|
} else {
|
||||||
|
rememberAndroidLocationProvider(
|
||||||
|
updateInterval = 1.minutes,
|
||||||
|
desiredAccuracy = DesiredAccuracy.Balanced,
|
||||||
|
minDistanceMeters = 50f,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return rememberUserLocationState(locationProvider)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import io.element.android.features.location.impl.common.ui.LocationFloatingActio
|
||||||
import io.element.android.features.location.impl.common.ui.LocationServiceDisabledDialog
|
import io.element.android.features.location.impl.common.ui.LocationServiceDisabledDialog
|
||||||
import io.element.android.features.location.impl.common.ui.MapBottomSheetScaffold
|
import io.element.android.features.location.impl.common.ui.MapBottomSheetScaffold
|
||||||
import io.element.android.features.location.impl.common.ui.UserLocationPuck
|
import io.element.android.features.location.impl.common.ui.UserLocationPuck
|
||||||
|
import io.element.android.features.location.impl.common.ui.rememberUserLocationState
|
||||||
import io.element.android.libraries.designsystem.components.LocationPin
|
import io.element.android.libraries.designsystem.components.LocationPin
|
||||||
import io.element.android.libraries.designsystem.components.PinVariant
|
import io.element.android.libraries.designsystem.components.PinVariant
|
||||||
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
|
||||||
|
|
@ -60,13 +61,8 @@ import org.maplibre.compose.camera.CameraMoveReason
|
||||||
import org.maplibre.compose.camera.CameraPosition
|
import org.maplibre.compose.camera.CameraPosition
|
||||||
import org.maplibre.compose.camera.CameraState
|
import org.maplibre.compose.camera.CameraState
|
||||||
import org.maplibre.compose.camera.rememberCameraState
|
import org.maplibre.compose.camera.rememberCameraState
|
||||||
import org.maplibre.compose.location.DesiredAccuracy
|
|
||||||
import org.maplibre.compose.location.UserLocationState
|
import org.maplibre.compose.location.UserLocationState
|
||||||
import org.maplibre.compose.location.rememberDefaultLocationProvider
|
|
||||||
import org.maplibre.compose.location.rememberNullLocationProvider
|
|
||||||
import org.maplibre.compose.location.rememberUserLocationState
|
|
||||||
import kotlin.time.Duration
|
import kotlin.time.Duration
|
||||||
import kotlin.time.Duration.Companion.minutes
|
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -108,16 +104,7 @@ fun ShareLocationView(
|
||||||
bottomSheetState = rememberStandardBottomSheetState(initialValue = SheetValue.Expanded)
|
bottomSheetState = rememberStandardBottomSheetState(initialValue = SheetValue.Expanded)
|
||||||
)
|
)
|
||||||
val cameraState = rememberCameraState(firstPosition = CameraPosition(zoom = MapDefaults.DEFAULT_ZOOM))
|
val cameraState = rememberCameraState(firstPosition = CameraPosition(zoom = MapDefaults.DEFAULT_ZOOM))
|
||||||
val locationProvider = if (state.hasLocationPermission) {
|
val userLocationState = rememberUserLocationState(state.hasLocationPermission)
|
||||||
rememberDefaultLocationProvider(
|
|
||||||
updateInterval = 1.minutes,
|
|
||||||
desiredAccuracy = DesiredAccuracy.Balanced,
|
|
||||||
minDistanceMeters = 50.0,
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
rememberNullLocationProvider()
|
|
||||||
}
|
|
||||||
val userLocationState = rememberUserLocationState(locationProvider)
|
|
||||||
|
|
||||||
LaunchedEffect(cameraState.isCameraMoving) {
|
LaunchedEffect(cameraState.isCameraMoving) {
|
||||||
if (cameraState.moveReason == CameraMoveReason.GESTURE) {
|
if (cameraState.moveReason == CameraMoveReason.GESTURE) {
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ import io.element.android.features.location.impl.common.ui.LocationPinMarkers
|
||||||
import io.element.android.features.location.impl.common.ui.LocationShareRow
|
import io.element.android.features.location.impl.common.ui.LocationShareRow
|
||||||
import io.element.android.features.location.impl.common.ui.MapBottomSheetScaffold
|
import io.element.android.features.location.impl.common.ui.MapBottomSheetScaffold
|
||||||
import io.element.android.features.location.impl.common.ui.UserLocationPuck
|
import io.element.android.features.location.impl.common.ui.UserLocationPuck
|
||||||
|
import io.element.android.features.location.impl.common.ui.rememberUserLocationState
|
||||||
import io.element.android.libraries.designsystem.components.button.BackButton
|
import io.element.android.libraries.designsystem.components.button.BackButton
|
||||||
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
|
||||||
|
|
@ -46,12 +47,7 @@ import kotlinx.coroutines.launch
|
||||||
import org.maplibre.compose.camera.CameraMoveReason
|
import org.maplibre.compose.camera.CameraMoveReason
|
||||||
import org.maplibre.compose.camera.CameraPosition
|
import org.maplibre.compose.camera.CameraPosition
|
||||||
import org.maplibre.compose.camera.rememberCameraState
|
import org.maplibre.compose.camera.rememberCameraState
|
||||||
import org.maplibre.compose.location.DesiredAccuracy
|
|
||||||
import org.maplibre.compose.location.rememberDefaultLocationProvider
|
|
||||||
import org.maplibre.compose.location.rememberNullLocationProvider
|
|
||||||
import org.maplibre.compose.location.rememberUserLocationState
|
|
||||||
import org.maplibre.spatialk.geojson.Position
|
import org.maplibre.spatialk.geojson.Position
|
||||||
import kotlin.time.Duration.Companion.minutes
|
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -86,16 +82,7 @@ fun ShowLocationView(
|
||||||
ShowLocationMode.Live -> MapDefaults.centerCameraPosition
|
ShowLocationMode.Live -> MapDefaults.centerCameraPosition
|
||||||
}
|
}
|
||||||
val cameraState = rememberCameraState(firstPosition = initialPosition)
|
val cameraState = rememberCameraState(firstPosition = initialPosition)
|
||||||
val locationProvider = if (state.hasLocationPermission) {
|
val userLocationState = rememberUserLocationState(state.hasLocationPermission)
|
||||||
rememberDefaultLocationProvider(
|
|
||||||
updateInterval = 1.minutes,
|
|
||||||
desiredAccuracy = DesiredAccuracy.Balanced,
|
|
||||||
minDistanceMeters = 50.0,
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
rememberNullLocationProvider()
|
|
||||||
}
|
|
||||||
val userLocationState = rememberUserLocationState(locationProvider)
|
|
||||||
LaunchedEffect(cameraState.isCameraMoving) {
|
LaunchedEffect(cameraState.isCameraMoving) {
|
||||||
if (cameraState.moveReason == CameraMoveReason.GESTURE) {
|
if (cameraState.moveReason == CameraMoveReason.GESTURE) {
|
||||||
state.eventSink(ShowLocationEvents.TrackMyLocation(false))
|
state.eventSink(ShowLocationEvents.TrackMyLocation(false))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue