|
@@ -1,6 +1,11 @@
|
|
|
-import {actionPromise} from '../reducers'
|
|
|
-import {actionAuthLogin, actionAuthLogout} from '../reducers'
|
|
|
-import {store} from "../reducers";
|
|
|
+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 =>
|
|
|
async (query, variables = {}) => {
|
|
@@ -38,26 +43,43 @@ export const actionLogin = (login, password) => {
|
|
|
|
|
|
|
|
|
export const actionFullLogin = (login, password) =>
|
|
|
- async function i(dispatch) {
|
|
|
- let token = await dispatch(actionLogin(login, password));
|
|
|
- if (token) {
|
|
|
- dispatch(actionAuthLogin(token));
|
|
|
- dispatch(actionAboutMe())
|
|
|
- dispatch(actionUserFind())
|
|
|
- dispatch(actionFindMyTracks())
|
|
|
- }
|
|
|
+ ({type:'FULL_LOGIN', login, password})
|
|
|
+
|
|
|
+export function* loginWorker (action) {
|
|
|
+ const {login, password} = action
|
|
|
+
|
|
|
+ let token = yield call(promiseWorker, actionLogin(login, password)) //dispatch(actionLogin(login, password));
|
|
|
+ if (token) {
|
|
|
+ yield put(actionAuthLogin(token));
|
|
|
+ yield put(actionUserFind())
|
|
|
+ yield put(actionFindMyTracks())
|
|
|
+ yield put(actionAboutMe())
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+export function* loginWatcher() {
|
|
|
+ yield takeEvery ('FULL_LOGIN',loginWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
export const actionFullReg = (login, password) =>
|
|
|
- async function a(dispatch) {
|
|
|
- try {
|
|
|
- await dispatch(actionReg(login, password));
|
|
|
- } catch (e) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
- await dispatch(actionFullLogin(login, password));
|
|
|
+ ({type:'FULL_REG', login, password})
|
|
|
+
|
|
|
+function* regWorker(action) {
|
|
|
+ const {login, password} = action
|
|
|
+ let regId = yield call(promiseWorker, actionReg(login, password))
|
|
|
+ if (regId) {
|
|
|
+ yield put(actionFullLogin(login, password))
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+export function* regWatcher() {
|
|
|
+ yield takeEvery('FULL_REG', regWorker)
|
|
|
+}
|
|
|
|
|
|
export const actionReg = (login, password) => {
|
|
|
return actionPromise(
|
|
@@ -81,22 +103,57 @@ export const actionUserFind = () => actionPromise('userFind', gql(`query {
|
|
|
}`))
|
|
|
|
|
|
|
|
|
-export const actionTrackFindByOwner = (_id) => actionPromise('trackFindByOwner1', gql(`query trackFindByOwner($q: String){
|
|
|
+export const actionTrackFindByOwner = (myid) => actionPromise('trackFindByOwner1', gql(`query trackFindByOwner($q: String){
|
|
|
TrackFind(query: $q){
|
|
|
_id url originalFileName
|
|
|
}
|
|
|
- }`, { q: JSON.stringify([{ ___owner: _id }]) }))
|
|
|
+ }`, { q: JSON.stringify([{ ___owner: myid }]) }))
|
|
|
+
|
|
|
|
|
|
|
|
|
export const actionFindMyTracks = () =>
|
|
|
- actionPromise('findMyTracks1', gql(`query findMyTracks($q: String){
|
|
|
+ ({type:'FIND_MY_TRACKS'})
|
|
|
+
|
|
|
+export function* findMyTracksWorker () {
|
|
|
+ let { auth } = yield select();
|
|
|
+ let userId = auth?.payload?.sub?.id;
|
|
|
+ yield call(
|
|
|
+ promiseWorker, actionPromise('findMyTracks1', gql(`query findMyTracks($q: String){
|
|
|
TrackFind(query: $q){
|
|
|
_id url originalFileName
|
|
|
}
|
|
|
- }`, { q: JSON.stringify([{ ___owner: "61cda244e9472933a6785efc" }]) }))
|
|
|
+ }`, { q: JSON.stringify([{ ___owner: userId }]) }))
|
|
|
+ );
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
+export function* findMyTracksWatcher() {
|
|
|
+ yield takeEvery ('FIND_MY_TRACKS',findMyTracksWorker)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const actionTracksFind = () =>
|
|
|
+ actionPromise('findAllTracks1', gql(`query findAllTracks {
|
|
|
+ TrackFind (query: "[{}]"){
|
|
|
+ _id url originalFileName
|
|
|
+ }
|
|
|
+}`))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const actionPlaylistFindByOwner = () =>
|
|
|
+ actionPromise('playlistFindByOwner1', gql(`query playlistFindByOwner ($u: String) {
|
|
|
+ PlaylistFind(query: $u) {
|
|
|
+ _id name
|
|
|
+ }
|
|
|
+}`, { q: JSON.stringify([{ ___owner: '61cda244e9472933a6785efc' }]) }))
|
|
|
|
|
|
-// const CactionFindMyTracks = connect (state => ({myId: state.auth?.payload.sub.id}))(actionFindMyTracks)
|
|
|
|
|
|
|
|
|
export const actionUserFindOne = (_id, name = "userFindOne") =>
|
|
@@ -113,21 +170,31 @@ export const actionUserFindOne = (_id, name = "userFindOne") =>
|
|
|
);
|
|
|
|
|
|
|
|
|
-export const actionAboutMe = () => async (dispatch, getState) => {
|
|
|
- let { auth } = getState();
|
|
|
+export const actionAboutMe = () =>
|
|
|
+ ({type:'ABOUT_ME'})
|
|
|
+
|
|
|
+export function* aboutMeWorker () {
|
|
|
+ let { auth } = yield select();
|
|
|
let id = auth?.payload?.sub.id;
|
|
|
if (id) {
|
|
|
- await dispatch(actionUserFindOne(id, "aboutMe"));
|
|
|
+ yield put(actionUserFindOne(id, "aboutMe"));
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+export function* aboutMeWatcher() {
|
|
|
+ yield takeEvery ('ABOUT_ME',aboutMeWorker)
|
|
|
+}
|
|
|
|
|
|
-export const actionUploadImage = (file) => {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+export const actionUploadTrack = (file) => {
|
|
|
let fd = new FormData();
|
|
|
- fd.append("photo", file);
|
|
|
+ fd.append("track", file);
|
|
|
return actionPromise(
|
|
|
"uploadFile",
|
|
|
- fetch('http://player.asmer.fs.a-level.com.ua/upload', {
|
|
|
+ fetch(backURL+'/track', {
|
|
|
method: "POST",
|
|
|
headers: localStorage.authToken
|
|
|
? { Authorization: "Bearer " + localStorage.authToken }
|
|
@@ -137,12 +204,13 @@ export const actionUploadImage = (file) => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
-export const actionUploadTrack = (file) => {
|
|
|
+
|
|
|
+export const actionUploadImage = (file) => {
|
|
|
let fd = new FormData();
|
|
|
- fd.append("track", file);
|
|
|
+ fd.append("photo", file);
|
|
|
return actionPromise(
|
|
|
"uploadFile",
|
|
|
- fetch('http://player.asmer.fs.a-level.com.ua/track', {
|
|
|
+ fetch(backURL+'/upload', {
|
|
|
method: "POST",
|
|
|
headers: localStorage.authToken
|
|
|
? { Authorization: "Bearer " + localStorage.authToken }
|
|
@@ -152,13 +220,18 @@ export const actionUploadTrack = (file) => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
-export const actionSetAvatar = (file) => async (dispatch, getState) => {
|
|
|
- let result = await dispatch(actionUploadImage(file));
|
|
|
- let { auth } = getState();
|
|
|
+
|
|
|
+export const actionSetAvatar = (file) =>
|
|
|
+ ({type:'SET_AVATAR', file})
|
|
|
+
|
|
|
+export function* setAvatarWorker (action) {
|
|
|
+ const {file} = action
|
|
|
+ let result = yield call(promiseWorker,actionUploadImage(file));
|
|
|
+ let { auth } = yield select();
|
|
|
let imageId = result._id;
|
|
|
let userId = auth?.payload?.sub?.id;
|
|
|
- await dispatch(
|
|
|
- actionPromise(
|
|
|
+ yield call(
|
|
|
+ promiseWorker,actionPromise(
|
|
|
"setAvatar",
|
|
|
gql(
|
|
|
`mutation setAva($userId: String, $imageId: ID){
|
|
@@ -167,7 +240,10 @@ export const actionSetAvatar = (file) => async (dispatch, getState) => {
|
|
|
)
|
|
|
)
|
|
|
);
|
|
|
- await dispatch(actionAboutMe());
|
|
|
+ yield put(actionAboutMe());
|
|
|
};
|
|
|
|
|
|
-store.dispatch(actionAboutMe())
|
|
|
+export function* setAvatarWatcher() {
|
|
|
+ yield takeEvery ('SET_AVATAR',setAvatarWorker)
|
|
|
+}
|
|
|
+
|