|
@@ -2,9 +2,6 @@ import {actionPromise, store} from '../reducers'
|
|
|
import {actionAuthLogin} from '../reducers'
|
|
|
import {all, takeEvery, put, call,select} from 'redux-saga/effects';
|
|
|
import {promiseWorker} from "../reducers/promiseReducer";
|
|
|
-import jwtDecode from "jwt-decode";
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
const getGQL = url =>
|
|
@@ -102,13 +99,12 @@ export const actionUserFind = () => actionPromise('userFind', gql(`query {
|
|
|
}
|
|
|
}`))
|
|
|
|
|
|
-
|
|
|
-export const actionTrackFindByOwner = (myid) => actionPromise('trackFindByOwner1', gql(`query trackFindByOwner($q: String){
|
|
|
- TrackFind(query: $q){
|
|
|
- _id url originalFileName
|
|
|
- }
|
|
|
- }`, { q: JSON.stringify([{ ___owner: myid }]) }))
|
|
|
-
|
|
|
+// export const actionTrackFindByOwner = (myid) => actionPromise('trackFindByOwner1', gql(`query trackFindByOwner($q: String){
|
|
|
+// TrackFind(query: $q){
|
|
|
+// _id url originalFileName
|
|
|
+// }
|
|
|
+// }`, { q: JSON.stringify([{ ___owner: myid }]) }))
|
|
|
+//
|
|
|
|
|
|
|
|
|
export const actionFindMyTracks = () =>
|
|
@@ -133,6 +129,24 @@ export function* findMyTracksWatcher() {
|
|
|
|
|
|
|
|
|
|
|
|
+export const actionCreatePlaylist = (name) =>
|
|
|
+ ({type:'CREATE_PLAYLIST', name})
|
|
|
+
|
|
|
+export function* createPlaylistWorker (action) {
|
|
|
+ let {name} = action
|
|
|
+ let {auth} = yield select()
|
|
|
+ yield call(promiseWorker,actionPromise('createPlaylist', gql(`mutation p($playlist:PlaylistInput) {
|
|
|
+ PlaylistUpsert(playlist:$playlist) {
|
|
|
+ _id
|
|
|
+ }
|
|
|
+ }`, {playlist: {name}})))
|
|
|
+ yield put (actionPlaylistFindByOwner())
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+export function* createPlaylistWatcher() {
|
|
|
+ yield takeEvery ('CREATE_PLAYLIST',createPlaylistWorker)
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
@@ -145,14 +159,23 @@ export const actionTracksFind = () =>
|
|
|
}`))
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
export const actionPlaylistFindByOwner = () =>
|
|
|
- actionPromise('playlistFindByOwner1', gql(`query playlistFindByOwner ($u: String) {
|
|
|
- PlaylistFind(query: $u) {
|
|
|
- _id name
|
|
|
+ ({type:'FIND_MY_PLAYLISTS'})
|
|
|
+
|
|
|
+export function* playlistFindByOwnerWorker () {
|
|
|
+ let { auth } = yield select();
|
|
|
+ let userId = auth?.payload?.sub?.id;
|
|
|
+ yield call (promiseWorker, actionPromise('playlistFindByOwner1', gql(`query playlistFindByOwner ($q: String) {
|
|
|
+ PlaylistFind(query: $q) {
|
|
|
+ _id name owner {login}
|
|
|
}
|
|
|
-}`, { q: JSON.stringify([{ ___owner: '61cda244e9472933a6785efc' }]) }))
|
|
|
+}`, { q: JSON.stringify([{ ___owner: userId }]) })))
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+export function* playlistFindByOwnerWatcher() {
|
|
|
+ yield takeEvery ('FIND_MY_PLAYLISTS',playlistFindByOwnerWorker)
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
@@ -189,6 +212,7 @@ export function* aboutMeWatcher() {
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
export const actionUploadTrack = (file) => {
|
|
|
let fd = new FormData();
|
|
|
fd.append("track", file);
|
|
@@ -221,6 +245,39 @@ export const actionUploadImage = (file) => {
|
|
|
};
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const actionSetTrackToPlaylist = (file) =>
|
|
|
+ ({type:'SET_TRACK_TO_PLAYLIST', file})
|
|
|
+
|
|
|
+export function* setTrackToPlaylistWorker (action) {
|
|
|
+ const {file} = action
|
|
|
+ let result = yield call(promiseWorker,actionUploadTrack(file));
|
|
|
+ let trackId = result._id;
|
|
|
+ let { route } = yield select();
|
|
|
+ let playlistId = route.params?._id
|
|
|
+ console.log(playlistId)
|
|
|
+ yield call(
|
|
|
+ promiseWorker,actionPromise('createPlaylist', gql(`mutation p($playlist:PlaylistInput) {
|
|
|
+ PlaylistUpsert(playlist:$playlist) {
|
|
|
+ _id
|
|
|
+ }
|
|
|
+ }`, {playlist: {_id: playlistId,tracks:{_id: trackId }}}))
|
|
|
+ );
|
|
|
+ yield put(actionAboutMe());
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+export function* setTrackToPlaylistWatcher() {
|
|
|
+ yield takeEvery ('SET_TRACK_TO_PLAYLIST', setTrackToPlaylistWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
export const actionSetAvatar = (file) =>
|
|
|
({type:'SET_AVATAR', file})
|
|
|
|
|
@@ -238,8 +295,7 @@ export function* setAvatarWorker (action) {
|
|
|
UserUpsert(user:{_id: $userId, avatar: {_id: $imageId}}){_id}}`,
|
|
|
{ userId: userId, imageId: imageId }
|
|
|
)
|
|
|
- )
|
|
|
- );
|
|
|
+ ));
|
|
|
yield put(actionAboutMe());
|
|
|
};
|
|
|
|
|
@@ -247,3 +303,16 @@ export function* setAvatarWatcher() {
|
|
|
yield takeEvery ('SET_AVATAR',setAvatarWorker)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+export const queries = {
|
|
|
+ "/user/:_id": match => ({name: 'trackFindByOwner1',
|
|
|
+ query: `query trackFindByOwner($q: String){
|
|
|
+ TrackFind(query: $q){ _id url originalFileName}}`,
|
|
|
+ variables: { q: JSON.stringify([{ ___owner: match.params._id }]) } }),
|
|
|
+
|
|
|
+ "/myplaylist/:_id": match => ({name: 'trackFindByPlaylist',
|
|
|
+ query: `query trackFindByPlaylist($q: String){
|
|
|
+ TrackFind(query: $q){ _id url originalFileName}}`,
|
|
|
+ variables:{ q: JSON.stringify([{ ___playlist: match.params._id }]) } }),
|
|
|
+}
|
|
|
+
|