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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user