my-playlist-tracks-actions.js 2.7 KB

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