Skip to content

Commit f75109d

Browse files
committed
Исправления после ребейза на develop
1 parent ac05101 commit f75109d

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

SwiftUI-WorkoutApp/Screens/Parks/Map/ParksMapScreen.swift

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,27 +34,31 @@ struct ParksMapScreen: View {
3434
parksContent
3535
.overlay { noParksFoundView }
3636
}
37-
.loadingOverlay(if: parksManager.isLoading)
37+
.loadingOverlay(if: parksManager.isLoading || viewModel.newParkState.isProcessingNewPark)
3838
.background(Color.swBackground)
3939
.onFirstAppear {
4040
viewModel.userCityDidChange(defaults.mainUserInfo)
4141
}
4242
.onChange(of: defaults.mainUserCityId) { _ in
4343
viewModel.userCityDidChange(defaults.mainUserInfo)
4444
}
45+
.onChange(of: sheetItem) { [oldItem = sheetItem] newValue in
46+
if case .createNewPark = oldItem, newValue == nil {
47+
viewModel.finishCreatingNewPark()
48+
}
49+
}
50+
.onChange(of: viewModel.newParkState) { newState in
51+
if case let .ready(model) = newState {
52+
sheetItem = .createNewPark(model)
53+
}
54+
}
4555
.task {
4656
do {
4757
try await parksManager.loadParksIfNeeded()
4858
} catch {
4959
SWAlert.shared.presentDefaultUIKit(error)
5060
}
5161
}
52-
.onAppear {
53-
viewModel.setLocationTracking(true)
54-
}
55-
.onDisappear {
56-
viewModel.setLocationTracking(false)
57-
}
5862
.sheet(item: $sheetItem) { makeContentView(for: $0) }
5963
.toolbar {
6064
ToolbarItemGroup(placement: .topBarLeading) {
@@ -98,7 +102,7 @@ struct ParksMapScreen: View {
98102
}
99103

100104
private extension ParksMapScreen {
101-
enum SheetItem: Identifiable {
105+
enum SheetItem: Identifiable, Equatable {
102106
var id: String {
103107
switch self {
104108
case .filters: "filters"
@@ -224,9 +228,7 @@ private extension ParksMapScreen {
224228
@ViewBuilder
225229
var rightBarButton: some View {
226230
if defaults.isAuthorized {
227-
Button {
228-
sheetItem = .createNewPark(viewModel.newParkMapModel)
229-
} label: {
231+
Button(action: viewModel.requestLocationForNewPark) {
230232
Icons.Regular.plus.view
231233
.symbolVariant(.circle)
232234
}
@@ -250,6 +252,7 @@ private extension ParksMapScreen {
250252
}
251253
)
252254
}
255+
.environment(\.updateGeocodingCache, viewModel.updateGeocodingCache)
253256
case let .searchCity(storedCities):
254257
NavigationView {
255258
ItemListScreen(

0 commit comments

Comments
 (0)