diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-09-10 16:14:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-10 16:14:28 +0100 |
commit | 08f5f37b34cd7905f4c656800caa3545021acdef (patch) | |
tree | 5ebc002d5515d93f82e76e595b89eb188275eb08 /src/view/com/composer/text-input | |
parent | 6bc5a05f4bdfd3bf9dea400b3a6b5d9ac356457a (diff) | |
download | voidsky-08f5f37b34cd7905f4c656800caa3545021acdef.tar.zst |
[Video] Allow drag-and-drop & pasting video (#5252)
* allow DnD/pasting video * rm await
Diffstat (limited to 'src/view/com/composer/text-input')
-rw-r--r-- | src/view/com/composer/text-input/TextInput.web.tsx | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx index c477ada06..3db25746f 100644 --- a/src/view/com/composer/text-input/TextInput.web.tsx +++ b/src/view/com/composer/text-input/TextInput.web.tsx @@ -93,9 +93,9 @@ export const TextInput = React.forwardRef(function TextInputImpl( } }, [onPressPublish]) React.useEffect(() => { - textInputWebEmitter.addListener('photo-pasted', onPhotoPasted) + textInputWebEmitter.addListener('media-pasted', onPhotoPasted) return () => { - textInputWebEmitter.removeListener('photo-pasted', onPhotoPasted) + textInputWebEmitter.removeListener('media-pasted', onPhotoPasted) } }, [onPhotoPasted]) @@ -105,8 +105,8 @@ export const TextInput = React.forwardRef(function TextInputImpl( if (transfer) { const items = transfer.items - getImageFromUri(items, (uri: string) => { - textInputWebEmitter.emit('photo-pasted', uri) + getImageOrVideoFromUri(items, (uri: string) => { + textInputWebEmitter.emit('media-pasted', uri) }) } @@ -160,8 +160,8 @@ export const TextInput = React.forwardRef(function TextInputImpl( view.pasteText(text) preventDefault = true } - getImageFromUri(clipboardData.items, (uri: string) => { - textInputWebEmitter.emit('photo-pasted', uri) + getImageOrVideoFromUri(clipboardData.items, (uri: string) => { + textInputWebEmitter.emit('media-pasted', uri) }) if (preventDefault) { // Return `true` to prevent ProseMirror's default paste behavior. @@ -346,7 +346,7 @@ const styles = StyleSheet.create({ }, }) -function getImageFromUri( +function getImageOrVideoFromUri( items: DataTransferItemList, callback: (uri: string) => void, ) { @@ -363,6 +363,10 @@ function getImageFromUri( if (blob.type.startsWith('image/')) { blobToDataUri(blob).then(callback, err => console.error(err)) } + + if (blob.type.startsWith('video/')) { + blobToDataUri(blob).then(callback, err => console.error(err)) + } } }) } else if (type.startsWith('image/')) { @@ -371,6 +375,12 @@ function getImageFromUri( if (file) { blobToDataUri(file).then(callback, err => console.error(err)) } + } else if (type.startsWith('video/')) { + const file = item.getAsFile() + + if (file) { + blobToDataUri(file).then(callback, err => console.error(err)) + } } } } |