fixed a bug that made the map still follow your location, even whan trying to center the map on an annotation.

This commit is contained in:
Mauro Romito
2026-04-17 16:29:59 +02:00
committed by Mauro
parent f540c5a79a
commit f23d6fe69a
4 changed files with 15 additions and 8 deletions

View File

@@ -179,6 +179,7 @@ enum LocationSharingScreenViewAction {
case centerToUser
case userDidPan
case stopLiveLocation
case setMapCenter(CLLocationCoordinate2D)
}
extension AlertInfo where T == LocationSharingViewAlert {

View File

@@ -85,6 +85,9 @@ class LocationSharingScreenViewModel: LocationSharingScreenViewModelType, Locati
}
case .stopLiveLocation:
stopLiveLocation()
case .setMapCenter(let coordinate):
state.bindings.showsUserLocationMode = .show
state.bindings.mapCenterLocation = coordinate
}
}

View File

@@ -67,13 +67,15 @@ struct LiveLocationSheet: View {
if let profile = context.viewState.userProfiles[liveLocationShare.userID] {
Button {
guard let geoURI = liveLocationShare.geoURI else { return }
context.mapCenterLocation = .init(latitude: geoURI.latitude, longitude: geoURI.longitude)
context.send(viewAction: .setMapCenter(.init(latitude: geoURI.latitude, longitude: geoURI.longitude)))
} label: {
UserLocationCell(profile: profile,
isOwnUser: context.viewState.isOwnUser(liveLocationShare.userID),
kind: .live,
mediaProvider: context.mediaProvider,
onShare: { context.sharedAnnotation = context.viewState.annotations.first { $0.id == liveLocationShare.id }},
onShare: {
context.sharedAnnotation = context.viewState.annotations.first { $0.id == liveLocationShare.id }
},
onStop: { context.send(viewAction: .stopLiveLocation) })
}
}

View File

@@ -37,8 +37,8 @@ struct StaticLocationSheet: View {
if case let .viewStatic(location) = context.viewState.interactionMode,
let profile = context.viewState.userProfiles.values.first {
Button {
context.mapCenterLocation = .init(latitude: location.geoURI.latitude,
longitude: location.geoURI.longitude)
context.send(viewAction: .setMapCenter(.init(latitude: location.geoURI.latitude,
longitude: location.geoURI.longitude)))
} label: {
UserLocationCell(profile: profile,
isOwnUser: context.viewState.isOwnUser(profile.userID),
@@ -47,13 +47,14 @@ struct StaticLocationSheet: View {
mediaProvider: context.mediaProvider,
onShare: {
context.sharedAnnotation = context.viewState.annotations.first
})
}
.popover(item: $context.sharedAnnotation) { annotation in
LocationShareSheet(annotation: annotation)
},
onStop: nil)
}
}
}
.popover(item: $context.sharedAnnotation) { annotation in
LocationShareSheet(annotation: annotation)
}
}
}