Repository navigation
Conversation
Images dropped on the bottom bar, pasted, or inserted from a keyboard are copied into the capture directory and staged like picked photos. Rejected when the conversation does not accept media or for non-image items.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dragging an image onto the chat bottom bar now stages it as a photo, the same as picking it. Keyboard image insertion and rich paste into the field go through the same path.
Modifier.composerImageReceiveris acontentReceiveron the bar's outerColumn.BasicTextFieldreads its drop and paste configuration from an ancestorcontentReceiver, so one receiver covers the field and the attachment strip. Compose's drop handling also requests the drag-and-drop URI permission beforeonReceive, whichdragAndDropTargetwould leave to us.Only items whose
ContentResolver.getTypestarts withimage/are taken; anything else stays unconsumed, so text still reaches the field. Nothing is taken whenacceptsMediais false, and items past the remaining photo slots are skipped.The picker path reads its URI later, after the blob sealer and a possible preload fetch. A drag URI's grant only lasts as long as the activity, so each dropped image is copied into
cacheDir/chat_captureon drop and staged throughStagePhotos(captured = true), the camera's path, which already cleans up those files.iOS counterpart: code-payments/code-ios-app#1032