Get swifty
This commit is contained in:
@@ -182,48 +182,48 @@ extension XPCClient
|
||||
}
|
||||
|
||||
private func handleIncomingXPCEvent(_ event: xpc_object_t) {
|
||||
let type = xpc_get_type(event)
|
||||
switch type {
|
||||
case XPC_TYPE_DICTIONARY:
|
||||
guard let namePtr = xpc_dictionary_get_string(event, "name") else { return }
|
||||
let name = String(cString: namePtr)
|
||||
switch xpc_get_type(event) {
|
||||
case XPC_TYPE_DICTIONARY:
|
||||
guard let eventDict = XPCDictionary(event), let name: String = eventDict["name"] else { return }
|
||||
|
||||
var signal: Signal?
|
||||
if name == "ConversationsUpdated" {
|
||||
signal = .conversationsUpdated
|
||||
} else if name == "MessagesUpdated" {
|
||||
if let args = xpc_dictionary_get_value(event, "arguments"), xpc_get_type(args) == XPC_TYPE_DICTIONARY,
|
||||
let cidPtr = xpc_dictionary_get_string(args, "conversation_id") {
|
||||
signal = .messagesUpdated(conversationId: String(cString: cidPtr))
|
||||
let args = eventDict.object("arguments").flatMap { XPCDictionary($0) }
|
||||
let signal: Signal? = {
|
||||
switch name {
|
||||
case "ConversationsUpdated":
|
||||
return .conversationsUpdated
|
||||
case "MessagesUpdated":
|
||||
if let args, let cid: String = args["conversation_id"] { return .messagesUpdated(conversationId: cid) }
|
||||
return nil
|
||||
case "AttachmentDownloadCompleted":
|
||||
if let args, let aid: String = args["attachment_id"] { return .attachmentDownloaded(attachmentId: aid) }
|
||||
return nil
|
||||
case "AttachmentUploadCompleted":
|
||||
if let args,
|
||||
let uploadGuid: String = args["upload_guid"],
|
||||
let attachmentGuid: String = args["attachment_guid"] {
|
||||
return .attachmentUploaded(uploadGuid: uploadGuid, attachmentGuid: attachmentGuid)
|
||||
}
|
||||
} else if name == "AttachmentDownloadCompleted" {
|
||||
if let args = xpc_dictionary_get_value(event, "arguments"), xpc_get_type(args) == XPC_TYPE_DICTIONARY,
|
||||
let aidPtr = xpc_dictionary_get_string(args, "attachment_id") {
|
||||
signal = .attachmentDownloaded(attachmentId: String(cString: aidPtr))
|
||||
}
|
||||
} else if name == "AttachmentUploadCompleted" {
|
||||
if let args = xpc_dictionary_get_value(event, "arguments"), xpc_get_type(args) == XPC_TYPE_DICTIONARY,
|
||||
let ugPtr = xpc_dictionary_get_string(args, "upload_guid"),
|
||||
let agPtr = xpc_dictionary_get_string(args, "attachment_guid") {
|
||||
signal = .attachmentUploaded(uploadGuid: String(cString: ugPtr), attachmentGuid: String(cString: agPtr))
|
||||
}
|
||||
} else if name == "UpdateStreamReconnected" {
|
||||
signal = .updateStreamReconnected
|
||||
return nil
|
||||
case "UpdateStreamReconnected":
|
||||
return .updateStreamReconnected
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}()
|
||||
|
||||
if let signal {
|
||||
signalLock.lock()
|
||||
let sinks = signalSinks.values
|
||||
signalLock.unlock()
|
||||
for sink in sinks { sink(signal) }
|
||||
}
|
||||
if let signal {
|
||||
signalLock.lock()
|
||||
let sinks = signalSinks.values
|
||||
signalLock.unlock()
|
||||
for sink in sinks { sink(signal) }
|
||||
}
|
||||
|
||||
case XPC_TYPE_ERROR:
|
||||
if let errStr = xpc_string_get_string_ptr(event) {
|
||||
print("XPC event error: \(String(cString: errStr))")
|
||||
}
|
||||
default:
|
||||
break
|
||||
case XPC_TYPE_ERROR:
|
||||
if let errStr = xpc_string_get_string_ptr(event) {
|
||||
print("XPC event error: \(String(cString: errStr))")
|
||||
}
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user