diff --git a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt index 19a456c788..96a8915611 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewFragment.kt @@ -194,7 +194,7 @@ class LiveLocationMapViewFragment : updateMap(viewState.userLocations) } updateUserListBottomSheet(viewState.userLocations) - updateLocateButton(showLocateButton = false) + updateLocateButton(showLocateButton = viewState.showLocateButton) } private fun updateUserListBottomSheet(userLocations: List) { diff --git a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewModel.kt b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewModel.kt index 33c584ff85..eb9de0aa74 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewModel.kt @@ -28,10 +28,12 @@ import im.vector.app.features.location.live.tracking.LocationSharingServiceConne import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch +import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.room.location.UpdateLiveLocationShareResult class LiveLocationMapViewModel @AssistedInject constructor( @Assisted private val initialState: LiveLocationMapViewState, + private val session: Session, getListOfUserLiveLocationUseCase: GetListOfUserLiveLocationUseCase, private val locationSharingServiceConnection: LocationSharingServiceConnection, private val stopLiveLocationShareUseCase: StopLiveLocationShareUseCase, @@ -46,7 +48,7 @@ class LiveLocationMapViewModel @AssistedInject constructor( init { getListOfUserLiveLocationUseCase.execute(initialState.roomId) - .onEach { setState { copy(userLocations = it) } } + .onEach { setState { copy(userLocations = it, showLocateButton = it.none { it.matrixItem.id == session.myUserId }) } } .launchIn(viewModelScope) locationSharingServiceConnection.bind(this) } diff --git a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewState.kt b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewState.kt index ddd1cd2369..29447bb9ba 100644 --- a/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewState.kt +++ b/vector/src/main/java/im/vector/app/features/location/live/map/LiveLocationMapViewState.kt @@ -29,6 +29,7 @@ data class LiveLocationMapViewState( */ val mapSymbolIds: Map = emptyMap(), val loadingMapHasFailed: Boolean = false, + val showLocateButton: Boolean = false, ) : MavericksState { constructor(liveLocationMapViewArgs: LiveLocationMapViewArgs) : this( roomId = liveLocationMapViewArgs.roomId