import { useRef, useCallback } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { changeMediaOrder } from 'mastodon/actions/compose'; import { Upload } from './upload'; import { UploadProgress } from './upload_progress'; export const UploadForm = () => { const dispatch = useDispatch(); const mediaIds = useSelector(state => state.getIn(['compose', 'media_attachments']).map(item => item.get('id'))); const active = useSelector(state => state.getIn(['compose', 'is_uploading'])); const progress = useSelector(state => state.getIn(['compose', 'progress'])); const isProcessing = useSelector(state => state.getIn(['compose', 'is_processing'])); const dragItem = useRef(); const dragOverItem = useRef(); const handleDragStart = useCallback(id => { dragItem.current = id; }, [dragItem]); const handleDragEnter = useCallback(id => { dragOverItem.current = id; }, [dragOverItem]); const handleDragEnd = useCallback(() => { dispatch(changeMediaOrder(dragItem.current, dragOverItem.current)); dragItem.current = null; dragOverItem.current = null; }, [dispatch, dragItem, dragOverItem]); return ( <> {mediaIds.size > 0 && (
{mediaIds.map(id => ( ))}
)} ); };