From adb87333fc04d0b87668de86f395c1cf246382b0 Mon Sep 17 00:00:00 2001 From: zerosoul Date: Mon, 14 Feb 2022 16:40:07 +0800 Subject: [PATCH] feat: checkInviteTokenValid --- src/app/services/auth.js | 53 +++++++++-------- src/app/services/base.query.js | 102 ++++++++++++++++----------------- 2 files changed, 81 insertions(+), 74 deletions(-) diff --git a/src/app/services/auth.js b/src/app/services/auth.js index 2255aee5..fbe7e123 100644 --- a/src/app/services/auth.js +++ b/src/app/services/auth.js @@ -1,27 +1,34 @@ -import { createApi } from "@reduxjs/toolkit/query/react"; -import baseQuery from "./base.query"; +import { createApi } from '@reduxjs/toolkit/query/react'; +import baseQuery from './base.query'; export const authApi = createApi({ - reducerPath: "auth", - baseQuery, - endpoints: (builder) => ({ - login: builder.mutation({ - query: (credentials) => ({ - url: "token/login", - method: "POST", - body: { credential: credentials, device: "web", device_token: "test" }, - }), - // transformResponse: (resp) => { - // console.log("resp", resp); - // if (resp.status == 401) { - // resp.msg = "username or password incorrect"; - // } - // return resp; - // }, - }), - logout: builder.query({ - query: () => ({ url: `token/logout` }), - }), + reducerPath: 'auth', + baseQuery, + endpoints: (builder) => ({ + login: builder.mutation({ + query: (credentials) => ({ + url: 'token/login', + method: 'POST', + body: { credential: credentials, device: 'web', device_token: 'test' } + }) + // transformResponse: (resp) => { + // console.log("resp", resp); + // if (resp.status == 401) { + // resp.msg = "username or password incorrect"; + // } + // return resp; + // }, }), + checkInviteTokenValid: builder.mutation({ + query: (token) => ({ + url: 'user/check_invite_magic_token', + method: 'POST', + body: { magic_token: token } + }) + }), + logout: builder.query({ + query: () => ({ url: `token/logout` }) + }) + }) }); -export const { useLoginMutation, useLazyLogoutQuery } = authApi; +export const { useLoginMutation, useLazyLogoutQuery, useCheckInviteTokenValidMutation } = authApi; diff --git a/src/app/services/base.query.js b/src/app/services/base.query.js index 7f07dcaf..6367e925 100644 --- a/src/app/services/base.query.js +++ b/src/app/services/base.query.js @@ -1,59 +1,59 @@ -import { fetchBaseQuery } from "@reduxjs/toolkit/query"; -import toast from "react-hot-toast"; -import BASE_URL, { tokenHeader } from "../config"; -const whiteList = ["login"]; +import { fetchBaseQuery } from '@reduxjs/toolkit/query'; +import toast from 'react-hot-toast'; +import BASE_URL, { tokenHeader } from '../config'; +const whiteList = ['login', 'checkInviteTokenValid']; const baseQuery = fetchBaseQuery({ - baseUrl: BASE_URL, - prepareHeaders: (headers, { getState, endpoint }) => { - console.log("req", endpoint); - const { token } = getState().authData; - if (token && !whiteList.includes(endpoint)) { - headers.set(tokenHeader, token); - } - // 发送channel msg (临时举措) - // if (endpoint == "sendChannelMsg") { - // headers.set("Content-Type", "text/plain"); - // } - return headers; - }, + baseUrl: BASE_URL, + prepareHeaders: (headers, { getState, endpoint }) => { + console.log('req', endpoint); + const { token } = getState().authData; + if (token && !whiteList.includes(endpoint)) { + headers.set(tokenHeader, token); + } + // 发送channel msg (临时举措) + // if (endpoint == "sendChannelMsg") { + // headers.set("Content-Type", "text/plain"); + // } + return headers; + } }); const baseQueryWithReauth = async (args, api, extraOptions) => { - let result = await baseQuery(args, api, extraOptions); - if (result.error) { - console.log("api error", result.error); - switch (result.error.originalStatus) { - case 404: - { - toast.error("Request Not Found"); - } - break; - case 500: - { - toast.error(result.error.data || "server error"); - } - break; - case 401: - { - toast.error("token expired, please login again"); - // try to get a new token with refreshToken - // const refreshResult = await baseQuery('/refreshToken', api, extraOptions); - // if (refreshResult.data) { - // // store the new token - // api.dispatch(tokenReceived(refreshResult.data)); - // // retry the initial query - // result = await baseQuery(args, api, extraOptions); - // } else { - // api.dispatch(loggedOut()); - // } - } - - break; - - default: - break; + let result = await baseQuery(args, api, extraOptions); + if (result.error) { + console.log('api error', result.error); + switch (result.error.originalStatus) { + case 404: + { + toast.error('Request Not Found'); } + break; + case 500: + { + toast.error(result.error.data || 'server error'); + } + break; + case 401: + { + toast.error('token expired, please login again'); + // try to get a new token with refreshToken + // const refreshResult = await baseQuery('/refreshToken', api, extraOptions); + // if (refreshResult.data) { + // // store the new token + // api.dispatch(tokenReceived(refreshResult.data)); + // // retry the initial query + // result = await baseQuery(args, api, extraOptions); + // } else { + // api.dispatch(loggedOut()); + // } + } + + break; + + default: + break; } - return result; + } + return result; }; export default baseQueryWithReauth;