From bcb817b4ba16731032247266cd5250491dd93fec Mon Sep 17 00:00:00 2001 From: Alexander Ignatov Date: Mon, 28 Aug 2023 10:32:47 +0300 Subject: [PATCH] Use new navigation tools --- .../SearchStationReducer.swift | 24 +++++++++---------- .../SearchStationView/SearchStationView.swift | 6 ++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/BDZDelays/bdz-delays/Sources/SearchStationDomain/SearchStationReducer.swift b/BDZDelays/bdz-delays/Sources/SearchStationDomain/SearchStationReducer.swift index 442036c..35ee3e7 100644 --- a/BDZDelays/bdz-delays/Sources/SearchStationDomain/SearchStationReducer.swift +++ b/BDZDelays/bdz-delays/Sources/SearchStationDomain/SearchStationReducer.swift @@ -31,21 +31,21 @@ public struct SearchStationReducer: Reducer { public var query: String public var locationStatus: LocationStatus - // Child screen - public var stationState: StationReducer.State? + @PresentationState + public var stationDetailsState: StationReducer.State? public init( filteredStations: [BGStation] = BGStation.allCases, favoriteStations: [BGStation] = [], query: String = "", locationStatus: LocationStatus = .unableToUseLocation, - selectedStation: StationReducer.State? = nil + stationDetailsState: StationReducer.State? = nil ) { self.filteredStations = filteredStations self.favoriteStations = favoriteStations self.query = query self.locationStatus = locationStatus - self.stationState = selectedStation + self.stationDetailsState = stationDetailsState } public var isSearching: Bool { @@ -75,7 +75,7 @@ public struct SearchStationReducer: Reducer { case task /// Child screen action - case stationAction(StationReducer.Action) + case stationAction(PresentationAction) } @Dependency(\.locationService) var locationService @@ -123,16 +123,16 @@ public struct SearchStationReducer: Reducer { case .selectStation(let station): guard let new = station else { - return .send(.stationAction(.finalize)) + return .send(.stationAction(.presented(.finalize))) } - guard new != state.stationState?.station else { + guard new != state.stationDetailsState?.station else { // the station is already selected return .none } - state.stationState = .init(station: new) - return .send(.stationAction(.refresh)) + state.stationDetailsState = .init(station: new) + return .send(.stationAction(.presented(.refresh))) case .loadSavedStations(let statons): state.favoriteStations = statons @@ -183,13 +183,13 @@ public struct SearchStationReducer: Reducer { case .stationAction(let childAction): // Child screen - if case .finalize = childAction { - state.stationState = nil + if case .presented(.finalize) = childAction { + state.stationDetailsState = nil } return .none } - }.ifLet(\.stationState, action: /Action.stationAction) { + }.ifLet(\.$stationDetailsState, action: /Action.stationAction) { StationReducer() } } diff --git a/BDZDelays/bdz-delays/Sources/SearchStationView/SearchStationView.swift b/BDZDelays/bdz-delays/Sources/SearchStationView/SearchStationView.swift index 4ffbd83..307fdc7 100644 --- a/BDZDelays/bdz-delays/Sources/SearchStationView/SearchStationView.swift +++ b/BDZDelays/bdz-delays/Sources/SearchStationView/SearchStationView.swift @@ -26,10 +26,10 @@ public struct SearchStationView: View { NavigationSplitView { MasterView(vs: vs) } detail: { - if let selected = vs.stationState { + if let selected = vs.stationDetailsState { StationView(store: store.scope( state: { _ in selected }, - action: SearchStationReducer.Action.stationAction + action: { .stationAction(.presented($0)) } )) } else { Text("Изберете гара, за която да се покаже информация за спиращите и тръгващите влакове в следващите 6 часа.") @@ -53,7 +53,7 @@ private struct MasterView: View { var body: some View { List(selection: Binding( - get: { vs.stationState?.station }, + get: { vs.stationDetailsState?.station }, set: { vs.send(.selectStation($0)) } )) { if vs.locationStatus != .unableToUseLocation