playlistdropzone.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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({tracks=[], onLoad, children }) {
  6. const files = useRef(tracks || [])
  7. const onDrop = useCallback( (acceptedFiles) => {
  8. files.current = ([...files.current,
  9. ...acceptedFiles
  10. ])
  11. console.log(tracks, files.current, acceptedFiles)
  12. onLoad(files.current);
  13. }, []);
  14. const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  15. return (
  16. <div className='drop-zone'{...getRootProps()}>
  17. <input {...getInputProps()} />
  18. {isDragActive ? (
  19. <p >Перетащите файл сюда ...</p>
  20. ) : (
  21. <p>Для добавления трэка нажмите или перетащите файлы СЮДА</p>
  22. )}
  23. {children}
  24. </div>
  25. );
  26. }
  27. export const CPlaylistDropZone = connect(state => ({tracks: state.promise.playlistById?.payload?.tracks || []}),
  28. {onLoad: actionFullUploadPlaylists})(PlaylistDropZone)