playlistdropzone.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import {useCallback, useRef} from "react";
  2. import {useDropzone} from "react-dropzone";
  3. import {connect} from "react-redux";
  4. import {actionFullUploadPlaylists} from "../../actions";
  5. function PlaylistDropZone({playlist={}, onLoad, children }) {
  6. const files = useRef(playlist.tracks || [])
  7. const onDrop = useCallback( (acceptedFiles) => {
  8. files.current = ([...files.current,
  9. ...acceptedFiles
  10. ])
  11. onLoad(files.current);
  12. }, []);
  13. const { getRootProps, isDragActive } = useDropzone({ onDrop });
  14. return (
  15. <div className='drop-zone'{...getRootProps()}>
  16. {isDragActive ? (
  17. <p >Перетащите файл сюда ...</p>
  18. ) : (
  19. <p>Для добавления трэка перетащите файлы в плейлист</p>
  20. )}
  21. {children}
  22. </div>
  23. );
  24. }
  25. export const CPlaylistDropZone = connect(state => ({playlist: state.promise.playlistById?.payload || []}),
  26. {onLoad: actionFullUploadPlaylists})(PlaylistDropZone)