Location centring user's sharing location (#7398)

* fix issue on timeline bubbles not showing proper content after decrypt

* fix location sharing centring to other users

* Update RiotSwiftUI/Modules/LocationSharing/LiveLocationSharingViewer/LiveLocationSharingViewerViewModel.swift

Co-authored-by: Alfonso Grillo <alfogrillo@element.io>

---------

Co-authored-by: Alfonso Grillo <alfogrillo@element.io>
This commit is contained in:
Flescio
2023-03-02 11:28:00 +01:00
committed by GitHub
parent 11ce4a2ca6
commit c7d6dd25a2
13 changed files with 53 additions and 22 deletions
@@ -43,7 +43,8 @@ struct StaticLocationViewingViewState: BindableState {
/// Shared annotation to display existing location
let sharedAnnotation: LocationAnnotation
var showsUserLocation = false
/// Behavior mode of the current user's location, can be hidden, only shown and shown following the user
var showsUserLocationMode: ShowUserLocationMode = .hide
var showLoadingIndicator = false
@@ -98,7 +98,7 @@ class StaticLocationViewingViewModel: StaticLocationViewingViewModelType, Static
private func showsCurrentUserLocation() {
if staticLocationSharingViewerService.requestAuthorizationIfNeeded() {
state.showsUserLocation = true
state.showsUserLocationMode = .follow
} else {
state.errorSubject.send(.invalidLocationAuthorization)
}
@@ -81,9 +81,9 @@ class StaticLocationViewingViewModelTests: XCTestCase {
func testToggleShowUserLocation() {
let viewModel = buildViewModel()
XCTAssertFalse(viewModel.context.viewState.showsUserLocation)
XCTAssertEqual(viewModel.context.viewState.showsUserLocationMode, .hide)
viewModel.context.send(viewAction: .showUserLocation)
XCTAssertTrue(viewModel.context.viewState.showsUserLocation)
XCTAssertEqual(viewModel.context.viewState.showsUserLocationMode, .follow)
}
private func buildViewModel() -> StaticLocationViewingViewModel {
@@ -34,7 +34,7 @@ struct StaticLocationView: View {
annotations: [viewModel.viewState.sharedAnnotation],
highlightedAnnotation: viewModel.viewState.sharedAnnotation,
userAvatarData: nil,
showsUserLocation: viewModel.viewState.showsUserLocation,
showsUserLocationMode: viewModel.viewState.showsUserLocationMode,
userLocation: Binding.constant(nil),
mapCenterCoordinate: Binding.constant(nil),
errorSubject: viewModel.viewState.errorSubject)