Send pin-drop location (#1179)

* add location sharing action in room, and open location sharing screen

* add pin location sharing

* fix asset, add tests for location viewModel, add send location request

* fix map zoom level, fix assets for location

* add feature flag for location sharing

* hide attribution button
This commit is contained in:
Flescio
2023-06-28 11:39:38 +02:00
committed by GitHub
parent e25ca2e120
commit 102e6a64fa
29 changed files with 548 additions and 42 deletions
@@ -30,6 +30,7 @@ struct DeveloperOptionsScreenViewStateBindings {
var readReceiptsEnabled: Bool
var isEncryptionSyncEnabled: Bool
var locationEventsEnabled: Bool
var shareLocationEnabled: Bool
}
enum DeveloperOptionsScreenViewAction {
@@ -38,5 +39,6 @@ enum DeveloperOptionsScreenViewAction {
case changedReadReceiptsEnabled
case changedIsEncryptionSyncEnabled
case changedLocationEventsEnabled
case changedShareLocationEnabled
case clearCache
}
@@ -30,7 +30,8 @@ class DeveloperOptionsScreenViewModel: DeveloperOptionsScreenViewModelType, Deve
userSuggestionsEnabled: appSettings.userSuggestionsEnabled,
readReceiptsEnabled: appSettings.readReceiptsEnabled,
isEncryptionSyncEnabled: appSettings.isEncryptionSyncEnabled,
locationEventsEnabled: appSettings.locationEventsEnabled)
locationEventsEnabled: appSettings.locationEventsEnabled,
shareLocationEnabled: appSettings.shareLocationEnabled)
let state = DeveloperOptionsScreenViewState(bindings: bindings)
super.init(initialViewState: state)
@@ -52,6 +53,8 @@ class DeveloperOptionsScreenViewModel: DeveloperOptionsScreenViewModelType, Deve
appSettings.isEncryptionSyncEnabled = state.bindings.isEncryptionSyncEnabled
case .changedLocationEventsEnabled:
appSettings.locationEventsEnabled = state.bindings.locationEventsEnabled
case .changedShareLocationEnabled:
appSettings.shareLocationEnabled = state.bindings.shareLocationEnabled
case .clearCache:
callback?(.clearCache)
}
@@ -59,6 +59,13 @@ struct DeveloperOptionsScreen: View {
.onChange(of: context.locationEventsEnabled) { _ in
context.send(viewAction: .changedLocationEventsEnabled)
}
Toggle(isOn: $context.shareLocationEnabled) {
Text("Show share location action")
}
.onChange(of: context.shareLocationEnabled) { _ in
context.send(viewAction: .changedShareLocationEnabled)
}
}
Section {