diff --git a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift index 860e084b69158b33889c6b3f882ed585d1208797..cd78765910d84d7242ee96ff145c3cd612c2492d 100644 --- a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift +++ b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift @@ -204,10 +204,10 @@ final class SingleChatViewModel { } guard let contact = try? session.dbManager.fetchContacts(.init(id: [message.senderId])).first else { - return ("You", message.text) + fatalError() } - let contactTitle = (contact.nickname ?? contact.username) ?? "Fetching username..." + let contactTitle = (contact.nickname ?? contact.username) ?? "You" return (contactTitle, message.text) } diff --git a/Sources/Integration/Session/Session+Chat.swift b/Sources/Integration/Session/Session+Chat.swift index ec582ff87bdfecef983bf74aa725aa5244bcac14..a0835167e5debbaf34986bcfa80eea3af2c2d2ef 100644 --- a/Sources/Integration/Session/Session+Chat.swift +++ b/Sources/Integration/Session/Session+Chat.swift @@ -115,9 +115,17 @@ extension Session { private func send(message: Message) { var message = message + var reply: Reply? + if let replyId = message.replyMessageId, + let replyMessage = try? dbManager.fetchMessages(Message.Query(networkId: replyId)).first { + reply = Reply(messageId: replyId, senderId: replyMessage.senderId) + } + + let payloadData = Payload(text: message.text, reply: reply).asData() + DispatchQueue.global().async { [weak self] in guard let self = self else { return } - switch self.client.bindings.send(message.text.data(using: .utf8)!, to: message.recipientId!) { + switch self.client.bindings.send(payloadData, to: message.recipientId!) { case .success(let report): message.roundURL = report.roundURL diff --git a/Sources/Integration/Session/Session+Group.swift b/Sources/Integration/Session/Session+Group.swift index 9a37e4b8a1c350ece156ca3a147f2fc2a463f4b1..0275c8545a201319e169953046aa1f662006b607 100644 --- a/Sources/Integration/Session/Session+Group.swift +++ b/Sources/Integration/Session/Session+Group.swift @@ -116,10 +116,18 @@ extension Session { guard let manager = client.groupManager else { fatalError("A group manager was not created") } var message = message + var reply: Reply? + if let replyId = message.replyMessageId, + let replyMessage = try? dbManager.fetchMessages(Message.Query(networkId: replyId)).first { + reply = Reply(messageId: replyId, senderId: replyMessage.senderId) + } + + let payloadData = Payload(text: message.text, reply: reply).asData() + DispatchQueue.global().async { [weak self] in guard let self = self else { return } - switch manager.send(message.text.data(using: .utf8)!, to: message.groupId!) { + switch manager.send(payloadData, to: message.groupId!) { case .success((let roundId, let uniqueId, let roundURL)): message.roundURL = roundURL