Add current user to ShareLocationState

This commit is contained in:
ganfra 2026-03-03 21:56:45 +01:00
parent 904657e86f
commit ec1d6ebabb
3 changed files with 13 additions and 0 deletions

View file

@ -32,10 +32,13 @@ import io.element.android.libraries.core.extensions.flatMap
import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.core.meta.BuildMeta
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.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.room.CreateTimelineParams import io.element.android.libraries.matrix.api.room.CreateTimelineParams
import io.element.android.libraries.matrix.api.room.JoinedRoom import io.element.android.libraries.matrix.api.room.JoinedRoom
import io.element.android.libraries.matrix.api.room.location.AssetType import io.element.android.libraries.matrix.api.room.location.AssetType
import io.element.android.libraries.matrix.api.timeline.Timeline import io.element.android.libraries.matrix.api.timeline.Timeline
import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.libraries.textcomposer.model.MessageComposerMode
import io.element.android.services.analytics.api.AnalyticsService import io.element.android.services.analytics.api.AnalyticsService
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -50,6 +53,7 @@ class ShareLocationPresenter(
private val locationActions: LocationActions, private val locationActions: LocationActions,
private val buildMeta: BuildMeta, private val buildMeta: BuildMeta,
private val featureFlagService: FeatureFlagService, private val featureFlagService: FeatureFlagService,
private val client: MatrixClient,
) : Presenter<ShareLocationState> { ) : Presenter<ShareLocationState> {
@AssistedFactory @AssistedFactory
fun interface Factory { fun interface Factory {
@ -69,6 +73,7 @@ class ShareLocationPresenter(
var dialogState: ShareLocationState.Dialog by remember { var dialogState: ShareLocationState.Dialog by remember {
mutableStateOf(ShareLocationState.Dialog.None) mutableStateOf(ShareLocationState.Dialog.None)
} }
val currentUser by client.userProfile.collectAsState()
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
LaunchedEffect(permissionsState.permissions) { LaunchedEffect(permissionsState.permissions) {
@ -108,6 +113,7 @@ class ShareLocationPresenter(
} }
return ShareLocationState( return ShareLocationState(
currentUser = currentUser,
dialogState = dialogState, dialogState = dialogState,
trackUserLocation = trackUserPosition, trackUserLocation = trackUserPosition,
hasLocationPermission = permissionsState.isAnyGranted, hasLocationPermission = permissionsState.isAnyGranted,

View file

@ -8,7 +8,10 @@
package io.element.android.features.location.impl.share package io.element.android.features.location.impl.share
import io.element.android.libraries.matrix.api.user.MatrixUser
data class ShareLocationState( data class ShareLocationState(
val currentUser: MatrixUser,
val dialogState: Dialog, val dialogState: Dialog,
val trackUserLocation: Boolean, val trackUserLocation: Boolean,
val hasLocationPermission: Boolean, val hasLocationPermission: Boolean,

View file

@ -9,6 +9,8 @@
package io.element.android.features.location.impl.share package io.element.android.features.location.impl.share
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.user.MatrixUser
private const val APP_NAME = "ApplicationName" private const val APP_NAME = "ApplicationName"
@ -50,12 +52,14 @@ class ShareLocationStateProvider : PreviewParameterProvider<ShareLocationState>
} }
private fun aShareLocationState( private fun aShareLocationState(
currentUser: MatrixUser = MatrixUser(UserId("@user:matrix.org")),
permissionDialog: ShareLocationState.Dialog, permissionDialog: ShareLocationState.Dialog,
trackUserPosition: Boolean, trackUserPosition: Boolean,
hasLocationPermission: Boolean, hasLocationPermission: Boolean,
canShareLiveLocation: Boolean = false, canShareLiveLocation: Boolean = false,
): ShareLocationState { ): ShareLocationState {
return ShareLocationState( return ShareLocationState(
currentUser = currentUser,
dialogState = permissionDialog, dialogState = permissionDialog,
trackUserLocation = trackUserPosition, trackUserLocation = trackUserPosition,
hasLocationPermission = hasLocationPermission, hasLocationPermission = hasLocationPermission,