// Autogenerated from Pigeon (v26.3.4), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation #if os(iOS) import Flutter #elseif os(macOS) import FlutterMacOS #else #error("Unsupported platform.") #endif private func wrapResult(_ result: Any?) -> [Any?] { return [result] } private func wrapError(_ error: Any) -> [Any?] { if let pigeonError = error as? PigeonError { return [ pigeonError.code, pigeonError.message, pigeonError.details, ] } if let flutterError = error as? FlutterError { return [ flutterError.code, flutterError.message, flutterError.details, ] } return [ "\(error)", "\(Swift.type(of: error))", "Stacktrace: \(Thread.callStackSymbols)", ] } private func createConnectionError(withChannelName channelName: String) -> PigeonError { return PigeonError(code: "channel-error", message: "Unable to establish connection on channel: '\(channelName)'.", details: "") } private func isNullish(_ value: Any?) -> Bool { return value is NSNull || value == nil } private func nilOrValue(_ value: Any?) -> T? { if value is NSNull { return nil } return value as! T? } private func doubleEqualsBackgroundWorker(_ lhs: Double, _ rhs: Double) -> Bool { return (lhs.isNaN && rhs.isNaN) || lhs == rhs } private func doubleHashBackgroundWorker(_ value: Double, _ hasher: inout Hasher) { if value.isNaN { hasher.combine(0x7FF8000000000000) } else { // Normalize -0.0 to 0.0 hasher.combine(value == 0 ? 0 : value) } } func deepEqualsBackgroundWorker(_ lhs: Any?, _ rhs: Any?) -> Bool { let cleanLhs = nilOrValue(lhs) as Any? let cleanRhs = nilOrValue(rhs) as Any? switch (cleanLhs, cleanRhs) { case (nil, nil): return true case (nil, _), (_, nil): return false case (let lhs as AnyObject, let rhs as AnyObject) where lhs === rhs: return true case is (Void, Void): return true case (let lhsArray, let rhsArray) as ([Any?], [Any?]): guard lhsArray.count == rhsArray.count else { return false } for (index, element) in lhsArray.enumerated() { if !deepEqualsBackgroundWorker(element, rhsArray[index]) { return false } } return true case (let lhsArray, let rhsArray) as ([Double], [Double]): guard lhsArray.count == rhsArray.count else { return false } for (index, element) in lhsArray.enumerated() { if !doubleEqualsBackgroundWorker(element, rhsArray[index]) { return false } } return true case (let lhsDictionary, let rhsDictionary) as ([AnyHashable: Any?], [AnyHashable: Any?]): guard lhsDictionary.count == rhsDictionary.count else { return false } for (lhsKey, lhsValue) in lhsDictionary { var found = false for (rhsKey, rhsValue) in rhsDictionary { if deepEqualsBackgroundWorker(lhsKey, rhsKey) { if deepEqualsBackgroundWorker(lhsValue, rhsValue) { found = true break } else { return false } } } if !found { return false } } return true case (let lhs as Double, let rhs as Double): return doubleEqualsBackgroundWorker(lhs, rhs) case (let lhsHashable, let rhsHashable) as (AnyHashable, AnyHashable): return lhsHashable == rhsHashable default: return false } } func deepHashBackgroundWorker(value: Any?, hasher: inout Hasher) { let cleanValue = nilOrValue(value) as Any? if let cleanValue = cleanValue { if let doubleValue = cleanValue as? Double { doubleHashBackgroundWorker(doubleValue, &hasher) } else if let valueList = cleanValue as? [Any?] { for item in valueList { deepHashBackgroundWorker(value: item, hasher: &hasher) } } else if let valueList = cleanValue as? [Double] { for item in valueList { doubleHashBackgroundWorker(item, &hasher) } } else if let valueDict = cleanValue as? [AnyHashable: Any?] { var result = 0 for (key, value) in valueDict { var entryKeyHasher = Hasher() deepHashBackgroundWorker(value: key, hasher: &entryKeyHasher) var entryValueHasher = Hasher() deepHashBackgroundWorker(value: value, hasher: &entryValueHasher) result = result &+ ((entryKeyHasher.finalize() &* 31) ^ entryValueHasher.finalize()) } hasher.combine(result) } else if let hashableValue = cleanValue as? AnyHashable { hasher.combine(hashableValue) } else { hasher.combine(String(describing: cleanValue)) } } else { hasher.combine(0) } } /// Generated class from Pigeon that represents data sent in messages. struct BackgroundWorkerSettings: Hashable { var requiresCharging: Bool var minimumDelaySeconds: Int64 // swift-format-ignore: AlwaysUseLowerCamelCase static func fromList(_ pigeonVar_list: [Any?]) -> BackgroundWorkerSettings? { let requiresCharging = pigeonVar_list[0] as! Bool let minimumDelaySeconds = pigeonVar_list[1] as! Int64 return BackgroundWorkerSettings( requiresCharging: requiresCharging, minimumDelaySeconds: minimumDelaySeconds ) } func toList() -> [Any?] { return [ requiresCharging, minimumDelaySeconds, ] } static func == (lhs: BackgroundWorkerSettings, rhs: BackgroundWorkerSettings) -> Bool { if Swift.type(of: lhs) != Swift.type(of: rhs) { return false } return deepEqualsBackgroundWorker(lhs.requiresCharging, rhs.requiresCharging) && deepEqualsBackgroundWorker(lhs.minimumDelaySeconds, rhs.minimumDelaySeconds) } func hash(into hasher: inout Hasher) { hasher.combine("BackgroundWorkerSettings") deepHashBackgroundWorker(value: requiresCharging, hasher: &hasher) deepHashBackgroundWorker(value: minimumDelaySeconds, hasher: &hasher) } } private class BackgroundWorkerPigeonCodecReader: FlutterStandardReader { override func readValue(ofType type: UInt8) -> Any? { switch type { case 129: return BackgroundWorkerSettings.fromList(self.readValue() as! [Any?]) default: return super.readValue(ofType: type) } } } private class BackgroundWorkerPigeonCodecWriter: FlutterStandardWriter { override func writeValue(_ value: Any) { if let value = value as? BackgroundWorkerSettings { super.writeByte(129) super.writeValue(value.toList()) } else { super.writeValue(value) } } } private class BackgroundWorkerPigeonCodecReaderWriter: FlutterStandardReaderWriter { override func reader(with data: Data) -> FlutterStandardReader { return BackgroundWorkerPigeonCodecReader(data: data) } override func writer(with data: NSMutableData) -> FlutterStandardWriter { return BackgroundWorkerPigeonCodecWriter(data: data) } } class BackgroundWorkerPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable { static let shared = BackgroundWorkerPigeonCodec(readerWriter: BackgroundWorkerPigeonCodecReaderWriter()) } /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol BackgroundWorkerFgHostApi { func enable() throws func saveNotificationMessage(title: String, body: String) throws func configure(settings: BackgroundWorkerSettings) throws func disable() throws } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class BackgroundWorkerFgHostApiSetup { static var codec: FlutterStandardMessageCodec { BackgroundWorkerPigeonCodec.shared } /// Sets up an instance of `BackgroundWorkerFgHostApi` to handle messages through the `binaryMessenger`. static func setUp(binaryMessenger: FlutterBinaryMessenger, api: BackgroundWorkerFgHostApi?, messageChannelSuffix: String = "") { let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" let enableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.enable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { enableChannel.setMessageHandler { _, reply in do { try api.enable() reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { enableChannel.setMessageHandler(nil) } let saveNotificationMessageChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.saveNotificationMessage\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { saveNotificationMessageChannel.setMessageHandler { message, reply in let args = message as! [Any?] let titleArg = args[0] as! String let bodyArg = args[1] as! String do { try api.saveNotificationMessage(title: titleArg, body: bodyArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { saveNotificationMessageChannel.setMessageHandler(nil) } let configureChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.configure\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { configureChannel.setMessageHandler { message, reply in let args = message as! [Any?] let settingsArg = args[0] as! BackgroundWorkerSettings do { try api.configure(settings: settingsArg) reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { configureChannel.setMessageHandler(nil) } let disableChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFgHostApi.disable\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { disableChannel.setMessageHandler { _, reply in do { try api.disable() reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { disableChannel.setMessageHandler(nil) } } } /// Generated protocol from Pigeon that represents a handler of messages from Flutter. protocol BackgroundWorkerBgHostApi { func onInitialized() throws func close() throws } /// Generated setup class from Pigeon to handle messages through the `binaryMessenger`. class BackgroundWorkerBgHostApiSetup { static var codec: FlutterStandardMessageCodec { BackgroundWorkerPigeonCodec.shared } /// Sets up an instance of `BackgroundWorkerBgHostApi` to handle messages through the `binaryMessenger`. static func setUp(binaryMessenger: FlutterBinaryMessenger, api: BackgroundWorkerBgHostApi?, messageChannelSuffix: String = "") { let channelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" let onInitializedChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.onInitialized\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { onInitializedChannel.setMessageHandler { _, reply in do { try api.onInitialized() reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { onInitializedChannel.setMessageHandler(nil) } let closeChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.immich_mobile.BackgroundWorkerBgHostApi.close\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec) if let api = api { closeChannel.setMessageHandler { _, reply in do { try api.close() reply(wrapResult(nil)) } catch { reply(wrapError(error)) } } } else { closeChannel.setMessageHandler(nil) } } } /// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. protocol BackgroundWorkerFlutterApiProtocol { func onIosUpload(isRefresh isRefreshArg: Bool, maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result) -> Void) func onAndroidUpload(completion: @escaping (Result) -> Void) func cancel(completion: @escaping (Result) -> Void) } class BackgroundWorkerFlutterApi: BackgroundWorkerFlutterApiProtocol { private let binaryMessenger: FlutterBinaryMessenger private let messageChannelSuffix: String init(binaryMessenger: FlutterBinaryMessenger, messageChannelSuffix: String = "") { self.binaryMessenger = binaryMessenger self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" } var codec: BackgroundWorkerPigeonCodec { return BackgroundWorkerPigeonCodec.shared } func onIosUpload(isRefresh isRefreshArg: Bool, maxSeconds maxSecondsArg: Int64?, completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.onIosUpload\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage([isRefreshArg, maxSecondsArg] as [Any?]) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func onAndroidUpload(completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.onAndroidUpload\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } func cancel(completion: @escaping (Result) -> Void) { let channelName: String = "dev.flutter.pigeon.immich_mobile.BackgroundWorkerFlutterApi.cancel\(messageChannelSuffix)" let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) channel.sendMessage(nil) { response in guard let listResponse = response as? [Any?] else { completion(.failure(createConnectionError(withChannelName: channelName))) return } if listResponse.count > 1 { let code: String = listResponse[0] as! String let message: String? = nilOrValue(listResponse[1]) let details: String? = nilOrValue(listResponse[2]) completion(.failure(PigeonError(code: code, message: message, details: details))) } else { completion(.success(())) } } } }