in HuggingChat-Mac/Models/SendPromptHandler.swift [202:238]
func sendPromptReq(reqBody: PromptRequestBody) {
postPrompt?.postPrompt(reqBody: reqBody, conversationId: conversationId).sink(receiveCompletion: { [weak self] completion in
switch completion {
case .finished:
self?.privateUpdate.send(completion: .finished)
case .failure(let error):
print("error \(error)")
self?.privateUpdate.send(completion: .failure(error))
}
}, receiveValue: { [weak self] (data: Data) in
guard let self = self, let message = String(data: data, encoding: .utf8) else {
return
}
let messages = message.split(separator: "\n")
for m in messages {
self.tmpMessage = self.tmpMessage + m
guard let sd = self.tmpMessage.data(using: .utf8) else {
continue
}
if let json = try? self.decoder.decode(StreamMessage.self, from: sd),
json.type == "file",
let name = json.name,
let sha = json.sha,
let mime = json.mime {
let fileMessage = FileMessage(name: name, sha: sha, mime: mime)
self.privateUpdate.send(.file(fileMessage))
}
guard let json = try? self.decoder.decode(StreamMessage.self, from: sd) else {
continue
}
self.tmpMessage = ""
self.privateUpdate.send(StreamMessageType.messageType(from: json) ?? .skip)
}
}).store(in: &cancellables)
}