The AnimatedContent gate on the composer's send button required inputFieldValue.text.isNotBlank() in addition to canSend, so attaching an image or file with an empty input hid the button entirely — the attachment could never be sent on its own. ChatInputPolicy.canSend already allowed attachment-only sends and ChatViewModel.sendMessage already accepted blank text with pending attachments, but the button never rendered to trigger it. Drop the stale text gate so the send affordance tracks canSend (non-empty text OR pending attachments, plus connection). The backend handles image-only turns natively: prompt.submit with empty text + queued images routes through build_native_content_parts, which wraps the pixels with an [Image attached at: ...] hint. Add a Compose UI regression test asserting the send button is displayed with a pending image attachment and an empty input. Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
69578e7818
commit
7540f7228a
2 files changed
+42
-2
No files matched your search
@@ -278,9 +278,12 @@ fun ChatInputBar(
|
||||
innerTextField()
|
||||
}
|
||||
|
||||
// Send button INSIDE the field
|
||||
// Send button INSIDE the field. Shown whenever a send is
|
||||
// possible — text typed OR an attachment pending (issue
|
||||
// #956): the old text-only gate hid the button entirely
|
||||
// for attachment-only sends.
|
||||
AnimatedContent(
|
||||
targetState = canSend && inputFieldValue.text.isNotBlank(),
|
||||
targetState = canSend,
|
||||
transitionSpec = {
|
||||
(scaleIn(initialScale = 0.8f) + fadeIn())
|
||||
.togetherWith(scaleOut(targetScale = 0.8f) + fadeOut())
|
||||
|
||||
Reference in new issue
Block a user