Add share live location item
This commit is contained in:
@@ -39,10 +39,12 @@ dependencies {
|
||||
implementation(projects.services.analytics.api)
|
||||
implementation(libs.accompanist.permission)
|
||||
implementation(projects.libraries.uiStrings)
|
||||
implementation(projects.libraries.featureflag.api)
|
||||
|
||||
testCommonDependencies(libs, true)
|
||||
testImplementation(projects.libraries.matrix.test)
|
||||
testImplementation(projects.libraries.testtags)
|
||||
testImplementation(projects.services.analytics.test)
|
||||
testImplementation(projects.features.messages.test)
|
||||
testImplementation(projects.libraries.featureflag.test)
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ package io.element.android.features.location.impl.share
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
@@ -29,6 +30,8 @@ import io.element.android.features.messages.api.MessageComposerContext
|
||||
import io.element.android.libraries.architecture.Presenter
|
||||
import io.element.android.libraries.core.extensions.flatMap
|
||||
import io.element.android.libraries.core.meta.BuildMeta
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||
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.location.AssetType
|
||||
@@ -46,6 +49,7 @@ class ShareLocationPresenter(
|
||||
private val messageComposerContext: MessageComposerContext,
|
||||
private val locationActions: LocationActions,
|
||||
private val buildMeta: BuildMeta,
|
||||
private val featureFlagService: FeatureFlagService,
|
||||
) : Presenter<ShareLocationState> {
|
||||
@AssistedFactory
|
||||
fun interface Factory {
|
||||
@@ -66,6 +70,9 @@ class ShareLocationPresenter(
|
||||
}
|
||||
)
|
||||
}
|
||||
val isLiveLocationSharingEnabled by remember {
|
||||
featureFlagService.isFeatureEnabledFlow(FeatureFlags.LiveLocationSharing)
|
||||
}.collectAsState(false)
|
||||
val appName by remember { derivedStateOf { buildMeta.applicationName } }
|
||||
var permissionDialog: ShareLocationState.Dialog by remember {
|
||||
mutableStateOf(ShareLocationState.Dialog.None)
|
||||
@@ -104,6 +111,7 @@ class ShareLocationPresenter(
|
||||
permissionDialog = permissionDialog,
|
||||
mode = mode,
|
||||
hasLocationPermission = permissionsState.isAnyGranted,
|
||||
canShareLiveLocation = isLiveLocationSharingEnabled,
|
||||
appName = appName,
|
||||
eventSink = ::handleEvent,
|
||||
)
|
||||
|
||||
@@ -13,7 +13,8 @@ data class ShareLocationState(
|
||||
val mode: Mode,
|
||||
val hasLocationPermission: Boolean,
|
||||
val appName: String,
|
||||
val eventSink: (ShareLocationEvents) -> Unit,
|
||||
val canShareLiveLocation: Boolean,
|
||||
val eventSink: (ShareLocationEvent) -> Unit,
|
||||
) {
|
||||
sealed interface Mode {
|
||||
data object SenderLocation : Mode
|
||||
|
||||
@@ -47,11 +47,13 @@ private fun aShareLocationState(
|
||||
permissionDialog: ShareLocationState.Dialog,
|
||||
mode: ShareLocationState.Mode,
|
||||
hasLocationPermission: Boolean,
|
||||
canShareLiveLocation: Boolean = false,
|
||||
): ShareLocationState {
|
||||
return ShareLocationState(
|
||||
permissionDialog = permissionDialog,
|
||||
mode = mode,
|
||||
hasLocationPermission = hasLocationPermission,
|
||||
canShareLiveLocation = canShareLiveLocation,
|
||||
appName = APP_NAME,
|
||||
eventSink = {}
|
||||
)
|
||||
|
||||
@@ -141,6 +141,11 @@ fun ShareLocationView(
|
||||
)
|
||||
navigateUp()
|
||||
}
|
||||
if(state.canShareLiveLocation){
|
||||
LiveLocationItem {
|
||||
state.eventSink(ShareLocationEvent.SelectLiveLocationDuration)
|
||||
}
|
||||
}
|
||||
Spacer(modifier = Modifier.height(16.dp + navBarPadding))
|
||||
},
|
||||
modifier = modifier,
|
||||
|
||||
Reference in New Issue
Block a user