Drag and drop files (#283)
* Add file drop * Skip if no files are droped * Show the page is not accepting file on the welcome page
This commit is contained in:
parent
b155d7d1ba
commit
552a324e08
3 changed files with 32 additions and 1 deletions
|
@ -58,9 +58,11 @@ function RoomViewInput({
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
settings.on(cons.events.settings.MARKDOWN_TOGGLED, setIsMarkdown);
|
settings.on(cons.events.settings.MARKDOWN_TOGGLED, setIsMarkdown);
|
||||||
|
roomsInput.on(cons.events.roomsInput.ATTACHMENT_SET, setAttachment);
|
||||||
viewEvent.on('focus_msg_input', requestFocusInput);
|
viewEvent.on('focus_msg_input', requestFocusInput);
|
||||||
return () => {
|
return () => {
|
||||||
settings.removeListener(cons.events.settings.MARKDOWN_TOGGLED, setIsMarkdown);
|
settings.removeListener(cons.events.settings.MARKDOWN_TOGGLED, setIsMarkdown);
|
||||||
|
roomsInput.removeListener(cons.events.roomsInput.ATTACHMENT_SET, setAttachment);
|
||||||
viewEvent.removeListener('focus_msg_input', requestFocusInput);
|
viewEvent.removeListener('focus_msg_input', requestFocusInput);
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
|
@ -12,6 +12,8 @@ import EmojiBoardOpener from '../../organisms/emoji-board/EmojiBoardOpener';
|
||||||
import logout from '../../../client/action/logout';
|
import logout from '../../../client/action/logout';
|
||||||
|
|
||||||
import initMatrix from '../../../client/initMatrix';
|
import initMatrix from '../../../client/initMatrix';
|
||||||
|
import navigation from '../../../client/state/navigation';
|
||||||
|
import cons from '../../../client/state/cons';
|
||||||
|
|
||||||
function Client() {
|
function Client() {
|
||||||
const [isLoading, changeLoading] = useState(true);
|
const [isLoading, changeLoading] = useState(true);
|
||||||
|
@ -54,8 +56,34 @@ function Client() {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleDrag = (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
if (!navigation.selectedRoomId) {
|
||||||
|
e.dataTransfer.dropEffect = 'none';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDrop = (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
const roomId = navigation.selectedRoomId;
|
||||||
|
if (!roomId) return;
|
||||||
|
|
||||||
|
const { files } = e.dataTransfer;
|
||||||
|
if (!files) return;
|
||||||
|
const file = files[0];
|
||||||
|
initMatrix.roomsInput.setAttachment(roomId, file);
|
||||||
|
initMatrix.roomsInput.emit(cons.events.roomsInput.ATTACHMENT_SET, file);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="client-container">
|
<div
|
||||||
|
className="client-container"
|
||||||
|
onDragOver={handleDrag}
|
||||||
|
onDrop={handleDrop}
|
||||||
|
>
|
||||||
<div className="navigation__wrapper">
|
<div className="navigation__wrapper">
|
||||||
<Navigation />
|
<Navigation />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -108,6 +108,7 @@ const cons = {
|
||||||
},
|
},
|
||||||
roomsInput: {
|
roomsInput: {
|
||||||
MESSAGE_SENT: 'MESSAGE_SENT',
|
MESSAGE_SENT: 'MESSAGE_SENT',
|
||||||
|
ATTACHMENT_SET: 'ATTACHMENT_SET',
|
||||||
FILE_UPLOADED: 'FILE_UPLOADED',
|
FILE_UPLOADED: 'FILE_UPLOADED',
|
||||||
UPLOAD_PROGRESS_CHANGES: 'UPLOAD_PROGRESS_CHANGES',
|
UPLOAD_PROGRESS_CHANGES: 'UPLOAD_PROGRESS_CHANGES',
|
||||||
FILE_UPLOAD_CANCELED: 'FILE_UPLOAD_CANCELED',
|
FILE_UPLOAD_CANCELED: 'FILE_UPLOAD_CANCELED',
|
||||||
|
|
Loading…
Reference in a new issue