myPlaylists.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import {actionCreatePlaylist, actionPlaylistFindByOwner, backURL} from "../actions";
  2. import {connect} from "react-redux";
  3. import {Link} from "react-router-dom";
  4. import {call, select, takeEvery} from "redux-saga/effects";
  5. import {actionPromise, promiseWorker} from "../reducers/promiseReducer";
  6. import {useState} from "react";
  7. import {history} from "../App";
  8. import {store} from "../reducers";
  9. import {CTrack} from "./player";
  10. import {CTrackDropZone} from "./pageMain";
  11. const Track = ({track:{_id,url,originalFileName}={}}) =>
  12. <div className='Tracks'>
  13. <audio controls src={backURL+'/'+url}></audio> <strong>{originalFileName}</strong>
  14. </div>
  15. const MyTracks = ({tracks}={}) =>
  16. <div>
  17. {(tracks || []).map(track => <Track track={track}/>)}
  18. </div>
  19. const CMyTracks = connect(state => ({tracks: state.promise.trackFindByPlaylist?.payload || []}))(MyTracks)
  20. export const MyPlaylistTracks = ({match:{params:{_id}}}) =>
  21. <>
  22. <h1>{_id}</h1>
  23. <CTrackDropZone />
  24. <CMyTracks />
  25. </>
  26. const Playlist = ({playlist:{_id, name}={}}) =>
  27. <li><Link to={`/myplaylist/${_id}`}>{name}</Link></li>
  28. const MyPlaylists = ({playlists={},onCreatePlaylist}) => {
  29. const [p, setP] = useState ('')
  30. return (
  31. <div>
  32. <input placeholder='Название' onChange={e => setP(e.target.value)}/>
  33. <button onClick={() => {onCreatePlaylist(p)}}>Создать плейлист</button>
  34. <ul className='Users'>
  35. {playlists.map(playlist => <Playlist playlist={playlist}/> )}
  36. </ul>
  37. </div>
  38. )
  39. }
  40. export const CMyPlaylists = connect(state => ({playlists: state.promise.playlistFindByOwner1?.payload || []}),{onCreatePlaylist:actionCreatePlaylist})(MyPlaylists)
  41. store.dispatch(actionPlaylistFindByOwner())