func sendPromptReq()

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)
    }