Match pending sends by a send id the server echoes
This commit is contained in:
@@ -519,16 +519,21 @@ struct ComposerView: View {
|
||||
let imgs = images.take(draftKey)
|
||||
text = ""
|
||||
let sent = drafts.startSend(draftKey, value, imgs.count)
|
||||
let cancel = chat.team ? {} : chat.builder.showPending(value, imgs)
|
||||
let sendID = UUID().uuidString
|
||||
let cancel = chat.team ? { true } : chat.builder.showPending(value, imgs, sendID)
|
||||
Task {
|
||||
do {
|
||||
let ids = try await uploadImages(store.api, imgs)
|
||||
try await chat.send(sessionId: m.live?.id, text: value, images: ids, model: m.selected != m.current ? m.selected : nil, firstModel: m.selected)
|
||||
try await chat.send(sessionId: m.live?.id, text: value, images: ids, model: m.selected != m.current ? m.selected : nil, firstModel: m.selected, sendID: sendID)
|
||||
modelChoices[m.modelKey] = nil
|
||||
pick = nil
|
||||
drafts.endSend(sent, true)
|
||||
} catch {
|
||||
cancel()
|
||||
guard cancel() else {
|
||||
log.notice("send failed after the server confirmed it: \(errorText(error), privacy: .public)")
|
||||
drafts.endSend(sent, true)
|
||||
return
|
||||
}
|
||||
drafts.endSend(sent, false)
|
||||
text = drafts.composerText(draftKey)
|
||||
images.restore(draftKey, imgs)
|
||||
|
||||
Reference in New Issue
Block a user