Using the override setting in the LocationSharing screen
This commit is contained in:
parent
424f70bc58
commit
cfce144b61
|
@ -29,7 +29,6 @@ import com.airbnb.mvrx.fragmentViewModel
|
|||
import com.airbnb.mvrx.withState
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.mapbox.mapboxsdk.maps.MapView
|
||||
import im.vector.app.BuildConfig
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.platform.VectorBaseFragment
|
||||
import im.vector.app.core.utils.PERMISSIONS_FOR_BACKGROUND_LOCATION_SHARING
|
||||
|
@ -243,7 +242,7 @@ class LocationSharingFragment @Inject constructor(
|
|||
// first, update the options view
|
||||
val options: Set<LocationSharingOption> = when (state.areTargetAndUserLocationEqual) {
|
||||
true -> {
|
||||
if (BuildConfig.ENABLE_LIVE_LOCATION_SHARING) {
|
||||
if (state.isLiveLocationSharingEnabled) {
|
||||
setOf(LocationSharingOption.USER_CURRENT, LocationSharingOption.USER_LIVE)
|
||||
} else {
|
||||
setOf(LocationSharingOption.USER_CURRENT)
|
||||
|
|
|
@ -21,9 +21,11 @@ import com.airbnb.mvrx.MavericksViewModelFactory
|
|||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import im.vector.app.BuildConfig
|
||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.VectorOverrides
|
||||
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
|
||||
import im.vector.app.features.location.domain.usecase.CompareLocationsUseCase
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
|
@ -48,7 +50,8 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||
private val locationTracker: LocationTracker,
|
||||
private val locationPinProvider: LocationPinProvider,
|
||||
private val session: Session,
|
||||
private val compareLocationsUseCase: CompareLocationsUseCase
|
||||
private val compareLocationsUseCase: CompareLocationsUseCase,
|
||||
private val vectorOverrides: VectorOverrides
|
||||
) : VectorViewModel<LocationSharingViewState, LocationSharingAction, LocationSharingViewEvents>(initialState), LocationTracker.Callback {
|
||||
|
||||
private val room = session.getRoom(initialState.roomId)!!
|
||||
|
@ -68,6 +71,7 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||
setUserItem()
|
||||
updatePin()
|
||||
compareTargetAndUserLocation()
|
||||
observeVectorOverrides()
|
||||
}
|
||||
|
||||
private fun setUserItem() {
|
||||
|
@ -109,6 +113,12 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||
?.let { userLocation -> compareLocationsUseCase.execute(userLocation, targetLocation) }
|
||||
}
|
||||
|
||||
private fun observeVectorOverrides() {
|
||||
vectorOverrides.forceEnableLiveLocationSharing.setOnEach { forceLiveLocation ->
|
||||
copy(isLiveLocationSharingEnabled = forceLiveLocation || BuildConfig.ENABLE_LIVE_LOCATION_SHARING)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
locationTracker.removeCallback(this)
|
||||
|
|
|
@ -19,6 +19,7 @@ package im.vector.app.features.location
|
|||
import android.graphics.drawable.Drawable
|
||||
import androidx.annotation.StringRes
|
||||
import com.airbnb.mvrx.MavericksState
|
||||
import im.vector.app.BuildConfig
|
||||
import im.vector.app.R
|
||||
import org.matrix.android.sdk.api.extensions.orTrue
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
@ -31,6 +32,7 @@ enum class LocationSharingMode(@StringRes val titleRes: Int) {
|
|||
data class LocationSharingViewState(
|
||||
val roomId: String,
|
||||
val mode: LocationSharingMode,
|
||||
val isLiveLocationSharingEnabled: Boolean,
|
||||
val userItem: MatrixItem.UserItem? = null,
|
||||
val areTargetAndUserLocationEqual: Boolean? = null,
|
||||
val lastKnownUserLocation: LocationData? = null,
|
||||
|
@ -39,7 +41,8 @@ data class LocationSharingViewState(
|
|||
|
||||
constructor(locationSharingArgs: LocationSharingArgs) : this(
|
||||
roomId = locationSharingArgs.roomId,
|
||||
mode = locationSharingArgs.mode
|
||||
mode = locationSharingArgs.mode,
|
||||
isLiveLocationSharingEnabled = BuildConfig.ENABLE_LIVE_LOCATION_SHARING
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue