123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- import store from "../reducers"
- const getGQL = url =>
- (query, variables={}) => fetch(url, {
- method: 'POST',
- headers: {
- //Accept: "application/json",
- "Content-Type": "application/json",
- ...(localStorage.authToken ? {Authorization: "Bearer " + localStorage.authToken } : {})
- },
- body: JSON.stringify({query, variables})
- }).then(res => res.json())
- let gql = getGQL("/graphql")
- export const actionPending = name => ({type: "PROMISE" ,status:"PENDING", name})
- export const actionResolved = (name,payload) => ({type: "PROMISE" ,status:"RESOLVED", name,payload})
- export const actionRejected = (name,error) => ({type: "PROMISE" ,status:"REJECTED", name,error})
- export const actionPromise = (name, promise) =>
- async dispatch => {
- dispatch(actionPending(name))
- try {
- let payload = await promise
- dispatch(actionResolved(name , payload))
- return payload
- }
- catch(error){
- dispatch(actionRejected(name , error))
- }
- }
- let log = async(login , password) => {
- let query = ` query log($l:String!,$p:String!) {
- login(login:$l,password:$p)
- }`
- let qVariables = {
- "l": login,
- "p": password
- }
- let result = await gql(query,qVariables)
- return result
- }
- let reg = async(login,password) => {
- let query = `mutation reg($l:String! , $p:String!) {
- createUser(login:$l,password:$p){
- _id login
- }
- }`
- let qVariables = {
- "l": login,
- "p": password
- }
- let result = await gql(query,qVariables)
- return result
- }
- export const actionAuthLogin = token => ({type:'LOGIN', token})
- export const actionAuthLogout = () => ({type:'LOGOUT'})
- export const actionFullLogin = (login , password) => async dispatch => {
- let result = await dispatch(actionPromise("login",log(login,password)))
- console.log(result)
- if (result?.data?.login !== null){
- dispatch(actionAuthLogin(result.data.login))
- }
- else {
- alert ('такого пользователя не существует')
- }
- }
- export const actionRegister = (login,password) => async dispatch => {
- return await dispatch (actionPromise('register' , reg(login,password)))
- }
- export const actionFullRegister = (login,password) => async dispatch => {
- let result = await dispatch (actionRegister(login,password))
-
- if (result?.data?.createUser !== null) {
- await dispatch (actionFullLogin(login,password))
- }
- else {
- alert("Такой пользователь уже есть")
- }
- }
- export const imgFind = async() => {
- return await gql(`query fhbg{
- ImageFind(query:"[{}]"){
- url owner{
- nick
- }
- }
- }`)
- }
- const userFind = async(id) => {
- let query = `query userOne {
- UserFindOne(query:"[{\"_id\":\"6151892f68554b3e33cd8134\"}]"){
- _id avatar{
- url
- }
- }
- }`
- let qVariables = {id}
- let res = await gql(query,qVariables)
- console.log(res)
- return res
- }
- let ava = async (idUser , id) => {
- let query = `mutation setAvatar{
- UserUpsert(user:{_id: "6151892f68554b3e33cd8134", avatar: {_id: "61518b0b68554b3e33cd813c"}}){
- _id, avatar{
- _id
- }
- }
- }`
- let qVariables = {idUser , id}
- let res = await gql(query, qVariables)
- return res
- }
- export const actionImgFind = () => async dispatch => {
- return await dispatch(actionPromise('img'),imgFind())
- }
- export const actionFindUser = () => async dispatch => {
- return await dispatch (actionPromise('findUser'), userFind(store.getState().auth.payload.sub.id) )
- }
- export const actionSetAvatar = (idUser , id) => async dispatch => {
- return await dispatch (actionPromise('setAvatar') , ava(idUser , id))
- }
- export const actionUploadFile = (files) => async dispatch => {
- let fd = new FormData()
- fd.append('photo' , files)
- return await dispatch (actionPromise('upload', fetch('/upload', {
- method: "POST",
- headers: localStorage.authToken ? {Authorization: 'Bearer ' + localStorage.authToken} : {},
- body: fd
- }).then(res => res.json())))
- }
- export const actionFullAvatar = (idUser , id) => async dispatch => {
- let result = await dispatch (actionUploadFile())
- await dispatch (actionSetAvatar(idUser,id))
- }
|