ios: fix editing w/t change (#2710)

This commit is contained in:
spaced4ndy
2023-07-17 16:55:19 +04:00
committed by GitHub
parent 396abdbfab
commit b69f422708
2 changed files with 28 additions and 11 deletions

View File

@@ -665,17 +665,21 @@ struct ComposeView: View {
if let oldMsgContent = ei.content.msgContent {
do {
let mc = updateMsgContent(oldMsgContent)
let chatItem = try await apiUpdateChatItem(
type: chat.chatInfo.chatType,
id: chat.chatInfo.apiId,
itemId: ei.id,
msg: mc,
live: live
)
await MainActor.run {
_ = self.chatModel.upsertChatItem(self.chat.chatInfo, chatItem)
if mc != oldMsgContent || (ei.meta.itemLive ?? false) {
let chatItem = try await apiUpdateChatItem(
type: chat.chatInfo.chatType,
id: chat.chatInfo.apiId,
itemId: ei.id,
msg: mc,
live: live
)
await MainActor.run {
_ = self.chatModel.upsertChatItem(self.chat.chatInfo, chatItem)
}
return chatItem
} else {
return nil
}
return chatItem
} catch {
logger.error("ChatView.sendMessage error: \(error.localizedDescription)")
AlertManager.shared.showAlertMsg(title: "Error updating message", message: "Error: \(responseError(error))")

View File

@@ -2724,7 +2724,7 @@ public enum CIFileStatus: Decodable, Equatable {
}
}
public enum MsgContent {
public enum MsgContent: Equatable {
case text(String)
case link(text: String, preview: LinkPreview)
case image(text: String, image: String)
@@ -2785,6 +2785,19 @@ public enum MsgContent {
case image
case duration
}
public static func == (lhs: MsgContent, rhs: MsgContent) -> Bool {
switch (lhs, rhs) {
case let (.text(lt), .text(rt)): return lt == rt
case let (.link(lt, lp), .link(rt, rp)): return lt == rt && lp == rp
case let (.image(lt, li), .image(rt, ri)): return lt == rt && li == ri
case let (.video(lt, li, ld), .video(rt, ri, rd)): return lt == rt && li == ri && ld == rd
case let (.voice(lt, ld), .voice(rt, rd)): return lt == rt && ld == rd
case let (.file(lf), .file(rf)): return lf == rf
case let (.unknown(lType, lt), .unknown(rType, rt)): return lType == rType && lt == rt
default: return false
}
}
}
extension MsgContent: Decodable {