Refactor and redesign Location Sharing Screen (#5155)
* refactored the static location screen to the location sharing screen # Conflicts: # UnitTests/Sources/LocationSharingScreenViewModelTests.swift # Conflicts: # ElementX.xcodeproj/project.pbxproj * implemented a custom pin with an overlayable view * implemented the render of the user when the location is sender instead of the pin type * removed description and body they are not used at all. * reimplemented single button for sharing this or user location + implemented an experimental way to update annotations * removed unnecessary @Suite description * implemented a way to display the alert on top of the sheet and added a spinner to the center user location button * fixed alerts strings * fixed a failing test * improved preview tests
This commit is contained in:
@@ -11,20 +11,23 @@ import Combine
|
||||
import Testing
|
||||
|
||||
@MainActor
|
||||
struct StaticLocationScreenViewModelTests {
|
||||
struct LocationSharingScreenViewModelTests {
|
||||
private let timelineProxy = TimelineProxyMock(.init())
|
||||
private var viewModel: StaticLocationScreenViewModelProtocol
|
||||
private var viewModel: LocationSharingScreenViewModelProtocol
|
||||
|
||||
private var context: StaticLocationScreenViewModel.Context {
|
||||
private var context: LocationSharingScreenViewModel.Context {
|
||||
viewModel.context
|
||||
}
|
||||
|
||||
init() {
|
||||
let viewModel = StaticLocationScreenViewModel(interactionMode: .picker,
|
||||
mapURLBuilder: ServiceLocator.shared.settings.mapTilerConfiguration,
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: UserIndicatorControllerMock())
|
||||
let viewModel = LocationSharingScreenViewModel(interactionMode: .picker,
|
||||
mapURLBuilder: ServiceLocator.shared.settings.mapTilerConfiguration,
|
||||
liveLocationSharingEnabled: true,
|
||||
roomProxy: JoinedRoomProxyMock(.init()),
|
||||
timelineController: MockTimelineController(timelineProxy: timelineProxy),
|
||||
analytics: ServiceLocator.shared.analytics,
|
||||
userIndicatorController: UserIndicatorControllerMock(),
|
||||
mediaProvider: MediaProviderMock(configuration: .init()))
|
||||
viewModel.state.bindings.isLocationAuthorized = true
|
||||
self.viewModel = viewModel
|
||||
}
|
||||
@@ -68,11 +71,11 @@ struct StaticLocationScreenViewModelTests {
|
||||
@Test
|
||||
func errorMapping() {
|
||||
let mapError = AlertInfo(locationSharingViewError: .mapError(.failedLoadingMap))
|
||||
#expect(mapError.message == L10n.errorFailedLoadingMap(InfoPlistReader.main.bundleDisplayName))
|
||||
#expect(mapError.title == L10n.errorFailedLoadingMap(InfoPlistReader.main.bundleDisplayName))
|
||||
let locationError = AlertInfo(locationSharingViewError: .mapError(.failedLocatingUser))
|
||||
#expect(locationError.message == L10n.errorFailedLocatingUser(InfoPlistReader.main.bundleDisplayName))
|
||||
#expect(locationError.title == L10n.errorFailedLocatingUser(InfoPlistReader.main.bundleDisplayName))
|
||||
let authorizationError = AlertInfo(locationSharingViewError: .missingAuthorization)
|
||||
#expect(authorizationError.message == L10n.dialogPermissionLocationDescriptionIos)
|
||||
#expect(authorizationError.message == L10n.dialogPermissionLocationDescriptionIos(InfoPlistReader.main.bundleDisplayName))
|
||||
}
|
||||
|
||||
@Test
|
||||
Reference in New Issue
Block a user