diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Managers/VPNConfigurationManager.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Managers/VPNConfigurationManager.swift index 103bfab39..ae25cc80b 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Managers/VPNConfigurationManager.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Managers/VPNConfigurationManager.swift @@ -320,7 +320,7 @@ public class VPNConfigurationManager { updateInternetResourceState() } - func fetchResources(callback: @escaping (ResourceList) -> Void) { + func fetchResources(callback: @escaping @MainActor (ResourceList) -> Void) { guard session()?.status == .connected else { return } do { @@ -338,7 +338,7 @@ public class VPNConfigurationManager { self.resourcesListCache = ResourceList.loaded(decoded) } - callback(self.resourcesListCache) + Task { await MainActor.run { callback(self.resourcesListCache) } } } } catch { Log.error(error) diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/Store.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/Store.swift index 7bfe1ea08..0a79c04b2 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/Store.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Stores/Store.swift @@ -160,7 +160,7 @@ public final class Store: ObservableObject { // Network Extensions don't have a 2-way binding up to the GUI process, // so we need to periodically ask the tunnel process for them. - func beginUpdatingResources(callback: @escaping (ResourceList) -> Void) { + func beginUpdatingResources(callback: @escaping @MainActor (ResourceList) -> Void) { Log.log("\(#function)") if self.resourcesTimer != nil { diff --git a/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/SessionView.swift b/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/SessionView.swift index ed7acaaa7..564fd41f2 100644 --- a/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/SessionView.swift +++ b/swift/apple/FirezoneKit/Sources/FirezoneKit/Views/SessionView.swift @@ -63,7 +63,6 @@ public final class SessionViewModel: ObservableObject { public func isInternetResourceEnabled() -> Bool { store.internetResourceEnabled() } - } #if os(iOS)