my-playlist-tracks-actions.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import {call, put, select, takeEvery} from "redux-saga/effects";
  2. import {actionPromise, promiseWorker} from "../reducers/promiseReducer";
  3. import {backURL, gql} from "./index";
  4. import {actionAboutMe} from "./index";
  5. import {actionPlaylistFindByOwner} from "./index";
  6. import {connect} from "react-redux";
  7. export const actionCreatePlaylist = (name) =>
  8. ({type:'CREATE_PLAYLIST', name})
  9. export function* createPlaylistWorker (action) {
  10. let {name} = action
  11. let {auth} = yield select()
  12. yield call(promiseWorker,actionPromise('createPlaylist', gql(`mutation p($playlist:PlaylistInput) {
  13. PlaylistUpsert(playlist:$playlist) {
  14. _id
  15. }
  16. }`, {playlist: {name}})))
  17. yield put (actionPlaylistFindByOwner())
  18. }
  19. export function* createPlaylistWatcher() {
  20. yield takeEvery ('CREATE_PLAYLIST',createPlaylistWorker)
  21. }
  22. export const actionUploadTrackToPlaylist = (array) => {
  23. let fd = new FormData();
  24. fd.append("track", array);
  25. return actionPromise(
  26. "uploadFile",
  27. fetch(backURL+'/track', {
  28. method: "POST",
  29. headers: localStorage.authToken
  30. ? { Authorization: "Bearer " + localStorage.authToken }
  31. : {},
  32. body: fd,
  33. }).then((res) => res.json())
  34. );
  35. };
  36. export const actionFullUploadPlaylists = (array=[]) =>
  37. ({type:'FULL_UPLOAD', array})
  38. export function* fullUploadPlaylistsWorker (action) {
  39. const {array} = action
  40. console.log(array,action,'eeeeeeeee')
  41. let { route } = yield select()
  42. let playlistId = route.params?._id;
  43. let arr = []
  44. for (let i=0; i<array.length; i++) {
  45. if ('_id' in array[i]) {
  46. arr.push({_id:array[i]._id})
  47. console.log(arr, array,'if')
  48. }else {
  49. let result = yield call(promiseWorker,actionUploadTrackToPlaylist(array[i]));
  50. let trackId = result?._id
  51. arr.push({_id: trackId})
  52. console.log(arr, 'else')
  53. }
  54. }
  55. console.log(arr,'4to polu4')
  56. yield put(actionSetTrackToPlaylist(playlistId, arr))
  57. yield put(actionAboutMe())
  58. }
  59. export function* fullUploadPlaylistsWatcher () {
  60. yield takeEvery ('FULL_UPLOAD',fullUploadPlaylistsWorker)
  61. }
  62. export const actionSetTrackToPlaylist = (playlistId,arr) =>
  63. ({type:'SET_TRACK_TO_PLAYLIST', playlistId,arr})
  64. export function* setTrackToPlaylistWorker (action) {
  65. const {playlistId,arr} = action
  66. yield call(
  67. promiseWorker,actionPromise('createPlaylist', gql(`mutation p($playlist:PlaylistInput) {
  68. PlaylistUpsert(playlist:$playlist) {
  69. _id
  70. }
  71. }`, {playlist: {_id: playlistId,tracks: arr}}))
  72. );
  73. yield put(actionAboutMe());
  74. };
  75. export function* setTrackToPlaylistWatcher() {
  76. yield takeEvery ('SET_TRACK_TO_PLAYLIST', setTrackToPlaylistWorker)
  77. }