pageMain.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {useCallback} from "react";
  2. import {store} from "../reducers";
  3. import {useDropzone} from "react-dropzone";
  4. import {connect} from "react-redux";
  5. import {actionUploadTrack, actionFindMyTracks, backURL} from "../actions";
  6. import {CPreloaded} from "./preloader";
  7. const defaultTrack = {
  8. "_id": "61dc5a42e9472933a6785f18",
  9. "url": "track/fe15599bbb13c96d70dd5a1591a0b158",
  10. "originalFileName": "cart.png",
  11. "owner": {
  12. "login": "mfdok43"
  13. }
  14. }
  15. export const PageMain = () =>
  16. <div>
  17. <h1>Главная страница</h1>
  18. <CTrackDropZone />
  19. </div>
  20. function TrackDropZone({ onLoad }) {
  21. const onDrop = useCallback((acceptedFiles) => {
  22. // Do something with the files
  23. onLoad(acceptedFiles[0]);
  24. }, []);
  25. const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });
  26. return (
  27. <div {...getRootProps()}>
  28. <input {...getInputProps()} />
  29. {isDragActive ? (
  30. <p>Перетащите файл сюда ...</p>
  31. ) : (
  32. <p>Для добавления трэка перетащите файлы в плейлист</p>
  33. )}
  34. {/*<CPreloaded>*/}
  35. <CMyTracks />
  36. {/*</CPreloaded>*/}
  37. </div>
  38. );
  39. }
  40. const CTrackDropZone = connect (null, {onLoad: actionUploadTrack}) (TrackDropZone)
  41. const Track = ({track:{url,originalFileName}={}}) => {
  42. return (
  43. <div className='Tracks'>
  44. <audio controls src={backURL+'/'+url}></audio>
  45. <strong>{originalFileName}</strong></div>
  46. )
  47. }
  48. const MyTracks = ({tracks=defaultTrack}) => {
  49. return(
  50. <div>
  51. {console.log(tracks,'kak dela')}
  52. {tracks.map(track => <Track track={track}/> )}
  53. </div>
  54. )
  55. }
  56. const CMyTracks = connect(state => ({tracks: state.promise.findMyTracks1?.payload || []}))(MyTracks)
  57. store.dispatch(actionFindMyTracks())