From fd0686be0ca1e2939db1cc29ac7a0ae11a41e90d Mon Sep 17 00:00:00 2001 From: Max Goedjen Date: Mon, 8 Sep 2025 23:21:41 -0700 Subject: [PATCH] Cleanup. --- .../XPCWrappers/XPCServiceDelegate.swift | 27 ++++++++++++++++++- .../Sources/XPCWrappers/XPCTypedSession.swift | 8 +++--- .../SecretiveUpdater/SecretiveUpdater.swift | 2 -- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/Sources/Packages/Sources/XPCWrappers/XPCServiceDelegate.swift b/Sources/Packages/Sources/XPCWrappers/XPCServiceDelegate.swift index 736b11f..5108ed2 100644 --- a/Sources/Packages/Sources/XPCWrappers/XPCServiceDelegate.swift +++ b/Sources/Packages/Sources/XPCWrappers/XPCServiceDelegate.swift @@ -31,7 +31,11 @@ public final class XPCServiceDelegate: NSObject, NSXPCListenerDelegate { let encoded = try JSONEncoder().encode(result) reply(encoded, nil) } catch { - reply(nil, error) + if let error = error as? Codable & Error { + reply(nil, NSError(error)) + } else { + reply(nil, error) + } } } } @@ -43,3 +47,24 @@ public final class XPCServiceDelegate: NSObject, NSXPCListenerDelegate { } + +extension NSError { + + private enum Constants { + static let domain = "com.maxgoedjen.secretive.xpcwrappers" + static let code = -1 + static let dataKey = "underlying" + } + + @nonobjc convenience init(_ error: ErrorType) { + let encoded = try? JSONEncoder().encode(error) + self.init(domain: Constants.domain, code: Constants.code, userInfo: [Constants.dataKey: encoded as Any]) + } + + @nonobjc public func underlying(as errorType: ErrorType.Type) -> ErrorType? { + guard domain == Constants.domain && code == Constants.code, let data = userInfo[Constants.dataKey] as? Data else { return nil } + return try? JSONDecoder().decode(ErrorType.self, from: data) + } + +} + diff --git a/Sources/Packages/Sources/XPCWrappers/XPCTypedSession.swift b/Sources/Packages/Sources/XPCWrappers/XPCTypedSession.swift index 940cceb..5dd87a0 100644 --- a/Sources/Packages/Sources/XPCWrappers/XPCTypedSession.swift +++ b/Sources/Packages/Sources/XPCWrappers/XPCTypedSession.swift @@ -32,10 +32,12 @@ public struct XPCTypedSession