Allow sending queued messages when a task is stopped
This commit is contained in:
@@ -521,6 +521,19 @@ final class ChatModel {
|
||||
}
|
||||
}
|
||||
|
||||
var canSendQueued: Bool {
|
||||
taskId != nil && !closed && !stopping && !paused && session?.state != .running
|
||||
}
|
||||
|
||||
func sendQueued(_ p: PendingSend, _ overlays: Overlays) async {
|
||||
guard let taskId, let inputId = p.inputId else { return }
|
||||
do {
|
||||
_ = try await store.api.client.sendQueuedMessage(path: .init(taskId: taskId, inputId: Int64(inputId))).noContent
|
||||
} catch {
|
||||
overlays.showAlert(errorText(error))
|
||||
}
|
||||
}
|
||||
|
||||
func withdraw(_ p: PendingSend, _ overlays: Overlays) async {
|
||||
guard let taskId, let inputId = p.inputId else {
|
||||
return
|
||||
@@ -1126,6 +1139,7 @@ private struct PendingView: View {
|
||||
let model: ChatModel
|
||||
@Environment(Overlays.self) private var overlays
|
||||
@ViewState private var withdrawing = false
|
||||
@ViewState private var sending = false
|
||||
|
||||
var body: some View {
|
||||
TrailingBubble {
|
||||
@@ -1135,6 +1149,17 @@ private struct PendingView: View {
|
||||
.font(Fonts.font(11, italic: true))
|
||||
.foregroundStyle(Palette.muted)
|
||||
if pending.inputId != nil {
|
||||
if model.canSendQueued {
|
||||
Button("Send") {
|
||||
sending = true
|
||||
Task {
|
||||
await model.sendQueued(pending, overlays)
|
||||
sending = false
|
||||
}
|
||||
}
|
||||
.buttonStyle(WebButtonStyle())
|
||||
.disabled(sending || withdrawing)
|
||||
}
|
||||
Button("×") {
|
||||
withdrawing = true
|
||||
Task {
|
||||
@@ -1143,7 +1168,7 @@ private struct PendingView: View {
|
||||
}
|
||||
}
|
||||
.buttonStyle(ThumbRemoveStyle())
|
||||
.disabled(withdrawing)
|
||||
.disabled(withdrawing || sending)
|
||||
.help("Take this message back into the composer")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user