my-tracks.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import {connect} from "react-redux";
  2. import {CTrack} from "../track";
  3. import {CPlaylistDropZone} from "../tools";
  4. import {SortableContainer, SortableElement} from 'react-sortable-hoc';
  5. import {arrayMoveImmutable} from 'array-move';
  6. import {useState,useEffect} from "react";
  7. import {CPreloaded} from "../preloader";
  8. import {actionSetPlaylist} from "../../reducers";
  9. const MyTracks = ({playlist:{_id, name, tracks}={}}) =>
  10. <div className='Category'>
  11. <h1>{name}</h1>
  12. <CPreloaded promiseName='playlistById'>
  13. {(tracks || []).map(track => <CTrack track={track}/>)}
  14. </CPreloaded>
  15. </div>
  16. const CMyTracks = connect(state => ({playlist: state.promise.playlistById?.payload || []}),
  17. {setPlaylist: actionSetPlaylist})(MyTracks)
  18. export const MyPlaylistTracks = ({match:{params:{_id}}}) =>
  19. <>
  20. <CPlaylistDropZone >
  21. <CMyTracks />
  22. </CPlaylistDropZone >
  23. </>
  24. // const SortableItem = SortableElement(CTrack);
  25. //
  26. // const MyTracks = ( {children}) =>
  27. // <div className='Category'>
  28. // {children}
  29. // </div>
  30. // const SortableList = SortableContainer(MyTracks)
  31. // // const CMyTracks = connect(state => ({playlist: state.promise.playlistById?.payload || []}))(MyTracks)
  32. //
  33. //
  34. // export const MyPlaylistTracks = ({match:{params:{_id}}}) =>
  35. // <>
  36. // <CPlaylistDropZone >
  37. // <CPreloaded promiseName='playlistById'>
  38. // <CSortableComponent />
  39. // </CPreloaded>
  40. // </CPlaylistDropZone >
  41. // </>
  42. //
  43. //
  44. // function SortableComponent({tracks=[]}) {
  45. // const [state, setState] = useState(tracks)
  46. // useEffect(() => {
  47. // setState (tracks)
  48. // },[tracks])
  49. // const onSortEnd = ({oldIndex, newIndex}) => {
  50. // setState((state) => (arrayMoveImmutable(state, oldIndex, newIndex)));
  51. // };
  52. //
  53. // return <SortableList tracks={tracks} onSortEnd={onSortEnd}>
  54. // {state.map((value, index) => <SortableItem key={`item-${value}`} index={index} track={value}/>)}
  55. // {/*{console.log(state)}*/}
  56. // </SortableList>;
  57. // }
  58. //
  59. // const CSortableComponent = connect(state => ({tracks: state.promise.playlistById?.payload?.tracks || []}))(SortableComponent)