my-tracks.js 2.3 KB

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