ios: share prompt field across chat and agent views
TestFlight / Build and upload (push) Successful in 1m44s

This commit is contained in:
2026-10-14 15:08:34 -07:00
parent 4389f805f4
commit 153aa5d2fa
4 changed files with 99 additions and 92 deletions
@@ -194,31 +194,31 @@ struct SybilAgentView: View {
}
}
private var canSendComposer: Bool {
!room.composer.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty && room.composer.utf16.count <= 40_000
}
private var composer: some View {
HStack(alignment: .bottom, spacing: 10) {
TextField("Message Sybil…", text: $room.composer, axis: .vertical)
.lineLimit(1...6)
.font(.sybil(.body))
.focused($composerFocused)
.accessibilityIdentifier("agent-composer")
Button {
let content = room.composer
if room.send(content) { room.composer = ""; atLatest = true }
} label: {
Image(systemName: "arrow.up")
.font(.system(size: 17, weight: .semibold))
.foregroundStyle(.white)
.frame(width: 38, height: 38)
.background(SybilTheme.primaryGradient, in: Circle())
}
.disabled(room.composer.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || room.composer.utf16.count > 40_000)
.accessibilityLabel("Send message")
SybilPromptField(
text: $room.composer,
focused: $composerFocused,
submit: submitComposer
)
.accessibilityIdentifier("agent-composer")
SybilPromptSendButton(canSend: canSendComposer, submit: submitComposer)
.accessibilityIdentifier("agent-send")
}
.padding(12)
.background(SybilTheme.surfaceStrong, in: RoundedRectangle(cornerRadius: 22))
.overlay(RoundedRectangle(cornerRadius: 22).stroke(SybilTheme.border))
.padding(.horizontal, 12).padding(.bottom, 10).padding(.top, 6)
.padding(.horizontal, 14)
.padding(.bottom, 12)
.padding(.top, 6)
}
private func submitComposer() {
guard canSendComposer, room.send(room.composer) else { return }
room.composer = ""
atLatest = true
}
}