diff --git a/geteduroam/GeteduroamPackage/Sources/Connect/ConnectFeature.swift b/geteduroam/GeteduroamPackage/Sources/Connect/ConnectFeature.swift index 8466fa6..392de09 100644 --- a/geteduroam/GeteduroamPackage/Sources/Connect/ConnectFeature.swift +++ b/geteduroam/GeteduroamPackage/Sources/Connect/ConnectFeature.swift @@ -138,6 +138,7 @@ public struct Connect: Reducer { case dismissTapped case logInButtonTapped case onAppear + case onDisappear // Hacky way to fix destination not getting nilled on macOS 13+ case select(Profile.ID) case startAgainTapped case updatePassword(String) @@ -279,6 +280,9 @@ public struct Connect: Reducer { // Auto connect if there is only a single profile or a reminder was tapped return connect(state: &state, dryRun: true) + case .onDisappear: + return .none + case let .destination(.presented(.termsAlert(action))): switch action { case .agreeButtonTapped: diff --git a/geteduroam/GeteduroamPackage/Sources/Connect/ConnectView-Mac.swift b/geteduroam/GeteduroamPackage/Sources/Connect/ConnectView-Mac.swift index db047ba..9fcec93 100644 --- a/geteduroam/GeteduroamPackage/Sources/Connect/ConnectView-Mac.swift +++ b/geteduroam/GeteduroamPackage/Sources/Connect/ConnectView-Mac.swift @@ -117,6 +117,12 @@ public struct ConnectView_Mac: View { .onAppear { viewStore.send(.onAppear) } + .onDisappear { + // Hacky way to fix destination not getting nilled on macOS 13+ + if #available(macOS 13.0, *) { + viewStore.send(.onDisappear) + } + } .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center) .alert( store: store.scope(state: \.$destination, action: Connect.Action.destination), diff --git a/geteduroam/GeteduroamPackage/Sources/Main/MainFeature.swift b/geteduroam/GeteduroamPackage/Sources/Main/MainFeature.swift index e609692..ab247f5 100644 --- a/geteduroam/GeteduroamPackage/Sources/Main/MainFeature.swift +++ b/geteduroam/GeteduroamPackage/Sources/Main/MainFeature.swift @@ -187,6 +187,11 @@ public struct Main: Reducer { state.destination = .connect(.init(organization: organization)) return .none + case .destination(.presented(.connect(.onDisappear))): + // Hacky way to fix destination not getting nilled on macOS 13+ + state.destination = nil + return .none + case .destination: return .none }