123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import {actionPromise} from '../reducers'
- import {actionAuthLogin, actionAuthLogout} from '../reducers'
- import {store} from "../reducers";
- import {connect} from "react-redux";
- const getGQL = url =>
- async (query, variables = {}) => {
- let obj = await fetch(url, {
- method: 'POST',
- headers: {
- "Content-Type": "application/json",
- Authorization: localStorage.authToken ? 'Bearer ' + localStorage.authToken : {},
- },
- body: JSON.stringify({ query, variables })
- })
- let a = await obj.json()
- if (!a.data && a.errors)
- throw new Error(JSON.stringify(a.errors))
- return a.data[Object.keys(a.data)[0]]
- }
- export const backURL = 'http://player.asmer.fs.a-level.com.ua'
- export const gql = getGQL(backURL + '/graphql');
- export const actionLogin = (login, password) => {
- return actionPromise(
- "login",
- gql(
- `query log($login:String!, $password:String!) {
- login(login:$login, password:$password)
- }`,
- {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())
- }
- }
- export const actionFullReg = (login, password) =>
- async function a(dispatch) {
- try {
- await dispatch(actionReg(login, password));
- } catch (e) {
- return 0;
- }
- await dispatch(actionFullLogin(login, password));
- }
- export const actionReg = (login, password) => {
- return actionPromise(
- "reg",
- gql(
- `mutation reg($l: String!, $p: String!){
- createUser(login: $l, password:$p){
- _id login
- }
- }`,
- { l: login, p: password }
- )
- );
- };
- export const actionUserFind = () => actionPromise('userFind', gql(`query {
- UserFind(query: "[{}]"){
- _id login
- }
- }`))
- export const actionTrackFindByOwner = (_id) => actionPromise('trackFindByOwner1', gql(`query trackFindByOwner($q: String){
- TrackFind(query: $q){
- _id url originalFileName
- }
- }`, { q: JSON.stringify([{ ___owner: _id }]) }))
- export const actionFindMyTracks = () =>
- actionPromise('findMyTracks1', gql(`query findMyTracks($q: String){
- TrackFind(query: $q){
- _id url originalFileName
- }
- }`, { q: JSON.stringify([{ ___owner: "61cda244e9472933a6785efc" }]) }))
- // const CactionFindMyTracks = connect (state => ({myId: state.auth?.payload.sub.id}))(actionFindMyTracks)
- export const actionUserFindOne = (_id, name = "userFindOne") =>
- actionPromise(
- name,
- gql(
- `query userFindOne($myid: String) {
- UserFindOne(query: $myid) {
- _id createdAt login nick avatar {url}
- }
- }`,
- { myid: JSON.stringify([{ _id }]) }
- )
- );
- export const actionAboutMe = () => async (dispatch, getState) => {
- let { auth } = getState();
- let id = auth?.payload?.sub.id;
- if (id) {
- await dispatch(actionUserFindOne(id, "aboutMe"));
- }
- };
- export const actionUploadImage = (file) => {
- let fd = new FormData();
- fd.append("photo", file);
- return actionPromise(
- "uploadFile",
- fetch('http://player.asmer.fs.a-level.com.ua/upload', {
- method: "POST",
- headers: localStorage.authToken
- ? { Authorization: "Bearer " + localStorage.authToken }
- : {},
- body: fd,
- }).then((res) => res.json())
- );
- };
- export const actionUploadTrack = (file) => {
- let fd = new FormData();
- fd.append("track", file);
- return actionPromise(
- "uploadFile",
- fetch('http://player.asmer.fs.a-level.com.ua/track', {
- method: "POST",
- headers: localStorage.authToken
- ? { Authorization: "Bearer " + localStorage.authToken }
- : {},
- body: fd,
- }).then((res) => res.json())
- );
- };
- export const actionSetAvatar = (file) => async (dispatch, getState) => {
- let result = await dispatch(actionUploadImage(file));
- let { auth } = getState();
- let imageId = result._id;
- let userId = auth?.payload?.sub?.id;
- await dispatch(
- actionPromise(
- "setAvatar",
- gql(
- `mutation setAva($userId: String, $imageId: ID){
- UserUpsert(user:{_id: $userId, avatar: {_id: $imageId}}){_id}}`,
- { userId: userId, imageId: imageId }
- )
- )
- );
- await dispatch(actionAboutMe());
- };
- store.dispatch(actionAboutMe())
|