Directly use VectorFeatures inside Fragment
This commit is contained in:
parent
9e3dc4c10f
commit
167fcb5366
@ -36,6 +36,7 @@ import im.vector.app.core.utils.PERMISSIONS_FOR_FOREGROUND_LOCATION_SHARING
|
|||||||
import im.vector.app.core.utils.checkPermissions
|
import im.vector.app.core.utils.checkPermissions
|
||||||
import im.vector.app.core.utils.registerForPermissionsResult
|
import im.vector.app.core.utils.registerForPermissionsResult
|
||||||
import im.vector.app.databinding.FragmentLocationSharingBinding
|
import im.vector.app.databinding.FragmentLocationSharingBinding
|
||||||
|
import im.vector.app.features.VectorFeatures
|
||||||
import im.vector.app.features.home.AvatarRenderer
|
import im.vector.app.features.home.AvatarRenderer
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.MatrixItemColorProvider
|
import im.vector.app.features.home.room.detail.timeline.helper.MatrixItemColorProvider
|
||||||
import im.vector.app.features.location.option.LocationSharingOption
|
import im.vector.app.features.location.option.LocationSharingOption
|
||||||
@ -49,7 +50,8 @@ import javax.inject.Inject
|
|||||||
class LocationSharingFragment @Inject constructor(
|
class LocationSharingFragment @Inject constructor(
|
||||||
private val urlMapProvider: UrlMapProvider,
|
private val urlMapProvider: UrlMapProvider,
|
||||||
private val avatarRenderer: AvatarRenderer,
|
private val avatarRenderer: AvatarRenderer,
|
||||||
private val matrixItemColorProvider: MatrixItemColorProvider
|
private val matrixItemColorProvider: MatrixItemColorProvider,
|
||||||
|
private val vectorFeatures: VectorFeatures,
|
||||||
) : VectorBaseFragment<FragmentLocationSharingBinding>(), LocationTargetChangeListener {
|
) : VectorBaseFragment<FragmentLocationSharingBinding>(), LocationTargetChangeListener {
|
||||||
|
|
||||||
private val viewModel: LocationSharingViewModel by fragmentViewModel()
|
private val viewModel: LocationSharingViewModel by fragmentViewModel()
|
||||||
@ -242,7 +244,7 @@ class LocationSharingFragment @Inject constructor(
|
|||||||
// first, update the options view
|
// first, update the options view
|
||||||
val options: Set<LocationSharingOption> = when (state.areTargetAndUserLocationEqual) {
|
val options: Set<LocationSharingOption> = when (state.areTargetAndUserLocationEqual) {
|
||||||
true -> {
|
true -> {
|
||||||
if (state.isLiveLocationSharingEnabled) {
|
if (vectorFeatures.isLiveLocationEnabled()) {
|
||||||
setOf(LocationSharingOption.USER_CURRENT, LocationSharingOption.USER_LIVE)
|
setOf(LocationSharingOption.USER_CURRENT, LocationSharingOption.USER_LIVE)
|
||||||
} else {
|
} else {
|
||||||
setOf(LocationSharingOption.USER_CURRENT)
|
setOf(LocationSharingOption.USER_CURRENT)
|
||||||
|
@ -24,7 +24,6 @@ import dagger.assisted.AssistedInject
|
|||||||
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
import im.vector.app.core.di.MavericksAssistedViewModelFactory
|
||||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||||
import im.vector.app.core.platform.VectorViewModel
|
import im.vector.app.core.platform.VectorViewModel
|
||||||
import im.vector.app.features.VectorFeatures
|
|
||||||
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
|
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
|
||||||
import im.vector.app.features.location.domain.usecase.CompareLocationsUseCase
|
import im.vector.app.features.location.domain.usecase.CompareLocationsUseCase
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
@ -50,7 +49,6 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||||||
private val locationPinProvider: LocationPinProvider,
|
private val locationPinProvider: LocationPinProvider,
|
||||||
private val session: Session,
|
private val session: Session,
|
||||||
private val compareLocationsUseCase: CompareLocationsUseCase,
|
private val compareLocationsUseCase: CompareLocationsUseCase,
|
||||||
private val vectorFeatures: VectorFeatures,
|
|
||||||
) : VectorViewModel<LocationSharingViewState, LocationSharingAction, LocationSharingViewEvents>(initialState), LocationTracker.Callback {
|
) : VectorViewModel<LocationSharingViewState, LocationSharingAction, LocationSharingViewEvents>(initialState), LocationTracker.Callback {
|
||||||
|
|
||||||
private val room = session.getRoom(initialState.roomId)!!
|
private val room = session.getRoom(initialState.roomId)!!
|
||||||
@ -70,7 +68,6 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||||||
setUserItem()
|
setUserItem()
|
||||||
updatePin()
|
updatePin()
|
||||||
compareTargetAndUserLocation()
|
compareTargetAndUserLocation()
|
||||||
checkVectorFeatures()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setUserItem() {
|
private fun setUserItem() {
|
||||||
@ -112,12 +109,6 @@ class LocationSharingViewModel @AssistedInject constructor(
|
|||||||
?.let { userLocation -> compareLocationsUseCase.execute(userLocation, targetLocation) }
|
?.let { userLocation -> compareLocationsUseCase.execute(userLocation, targetLocation) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkVectorFeatures() {
|
|
||||||
setState {
|
|
||||||
copy(isLiveLocationSharingEnabled = vectorFeatures.isLiveLocationEnabled())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
super.onCleared()
|
super.onCleared()
|
||||||
locationTracker.removeCallback(this)
|
locationTracker.removeCallback(this)
|
||||||
|
@ -19,7 +19,6 @@ package im.vector.app.features.location
|
|||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import com.airbnb.mvrx.MavericksState
|
import com.airbnb.mvrx.MavericksState
|
||||||
import im.vector.app.BuildConfig
|
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import org.matrix.android.sdk.api.extensions.orTrue
|
import org.matrix.android.sdk.api.extensions.orTrue
|
||||||
import org.matrix.android.sdk.api.util.MatrixItem
|
import org.matrix.android.sdk.api.util.MatrixItem
|
||||||
@ -32,7 +31,6 @@ enum class LocationSharingMode(@StringRes val titleRes: Int) {
|
|||||||
data class LocationSharingViewState(
|
data class LocationSharingViewState(
|
||||||
val roomId: String,
|
val roomId: String,
|
||||||
val mode: LocationSharingMode,
|
val mode: LocationSharingMode,
|
||||||
val isLiveLocationSharingEnabled: Boolean,
|
|
||||||
val userItem: MatrixItem.UserItem? = null,
|
val userItem: MatrixItem.UserItem? = null,
|
||||||
val areTargetAndUserLocationEqual: Boolean? = null,
|
val areTargetAndUserLocationEqual: Boolean? = null,
|
||||||
val lastKnownUserLocation: LocationData? = null,
|
val lastKnownUserLocation: LocationData? = null,
|
||||||
@ -42,7 +40,6 @@ data class LocationSharingViewState(
|
|||||||
constructor(locationSharingArgs: LocationSharingArgs) : this(
|
constructor(locationSharingArgs: LocationSharingArgs) : this(
|
||||||
roomId = locationSharingArgs.roomId,
|
roomId = locationSharingArgs.roomId,
|
||||||
mode = locationSharingArgs.mode,
|
mode = locationSharingArgs.mode,
|
||||||
isLiveLocationSharingEnabled = BuildConfig.ENABLE_LIVE_LOCATION_SHARING
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user