Merge branch 'develop' into steve/5903_lls_start

# Conflicts:
#	Riot/Modules/Room/RoomViewController.h
#	RiotSwiftUI/Modules/Room/LocationSharing/Coordinator/LocationSharingCoordinator.swift
#	RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingModels.swift
#	RiotSwiftUI/Modules/Room/LocationSharing/LocationSharingViewModel.swift
This commit is contained in:
SBiOSoftWhare
2022-04-08 11:09:06 +02:00
221 changed files with 8846 additions and 1792 deletions
@@ -41,21 +41,27 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie
// MARK: - Setup
init(mapStyleURL: URL, avatarData: AvatarInputProtocol, location: CLLocationCoordinate2D? = nil, isLiveLocationSharingEnabled: Bool = false) {
init(mapStyleURL: URL, avatarData: AvatarInputProtocol, location: CLLocationCoordinate2D? = nil, coordinateType: LocationSharingCoordinateType, isLiveLocationSharingEnabled: Bool = false) {
var userAnnotation: UserLocationAnnotation?
var annotations: [UserLocationAnnotation] = []
var highlightedAnnotation: UserLocationAnnotation?
var sharedAnnotation: LocationAnnotation?
var annotations: [LocationAnnotation] = []
var highlightedAnnotation: LocationAnnotation?
var showsUserLocation: Bool = false
// Displaying an existing location
if let userCoordinate = location {
let userLocationAnnotation = UserLocationAnnotation(avatarData: avatarData, coordinate: userCoordinate)
if let sharedCoordinate = location {
let sharedLocationAnnotation: LocationAnnotation
switch coordinateType {
case .user:
sharedLocationAnnotation = UserLocationAnnotation(avatarData: avatarData, coordinate: sharedCoordinate)
case .pin:
sharedLocationAnnotation = PinLocationAnnotation(coordinate: sharedCoordinate)
}
annotations.append(userLocationAnnotation)
highlightedAnnotation = userLocationAnnotation
annotations.append(sharedLocationAnnotation)
highlightedAnnotation = sharedLocationAnnotation
userAnnotation = userLocationAnnotation
sharedAnnotation = sharedLocationAnnotation
} else {
// Share current location
showsUserLocation = true
@@ -63,7 +69,7 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie
let viewState = LocationSharingViewState(mapStyleURL: mapStyleURL,
userAvatarData: avatarData,
userAnnotation: userAnnotation,
sharedAnnotation: sharedAnnotation,
annotations: annotations,
highlightedAnnotation: highlightedAnnotation,
showsUserLocation: showsUserLocation,
@@ -85,8 +91,8 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie
completion?(.cancel)
case .share:
// Share existing location
if let location = state.userAnnotation?.coordinate {
completion?(.share(latitude: location.latitude, longitude: location.longitude))
if let location = state.sharedAnnotation?.coordinate {
completion?(.share(latitude: location.latitude, longitude: location.longitude, coordinateType: .user))
return
}
@@ -96,7 +102,16 @@ class LocationSharingViewModel: LocationSharingViewModelType, LocationSharingVie
return
}
completion?(.share(latitude: location.latitude, longitude: location.longitude))
completion?(.share(latitude: location.latitude, longitude: location.longitude, coordinateType: .user))
case .sharePinLocation:
guard let pinLocation = state.bindings.pinLocation else {
processError(.failedLocatingUser)
return
}
completion?(.share(latitude: pinLocation.latitude, longitude: pinLocation.longitude, coordinateType: .pin))
case .goToUserLocation:
state.bindings.pinLocation = nil
case .shareLiveLocation:
completion?(.shareLiveLocation(timeout: Constants.liveLocationSharingDefaultTimeout))
}