diff --git a/src/auth/AuthProvider.tsx b/src/auth/AuthProvider.tsx index 05b0f8236..e9f1cb38d 100644 --- a/src/auth/AuthProvider.tsx +++ b/src/auth/AuthProvider.tsx @@ -1,21 +1,25 @@ import { DEMO_MODE } from "@saleor/config"; import { User } from "@saleor/fragments/types/User"; import useNotifier from "@saleor/hooks/useNotifier"; -import { maybe } from "@saleor/misc"; +import { getMutationStatus, maybe } from "@saleor/misc"; import { isSupported as isCredentialsManagementAPISupported, login as loginWithCredentialsManagementAPI, saveCredentials } from "@saleor/utils/credentialsManagement"; import React, { useContext, useEffect, useState } from "react"; +import { useMutation } from "react-apollo"; import { useIntl } from "react-intl"; import { UserContext } from "./"; import { - useTokenAuthMutation, - useTokenRefreshMutation, - useTokenVerifyMutation + tokenAuthMutation, + tokenRefreshMutation, + tokenVerifyMutation } from "./mutations"; +import { RefreshToken, RefreshTokenVariables } from "./types/RefreshToken"; +import { TokenAuth, TokenAuthVariables } from "./types/TokenAuth"; +import { VerifyToken, VerifyTokenVariables } from "./types/VerifyToken"; import { displayDemoMessage, getAuthToken, @@ -31,9 +35,26 @@ const AuthProvider: React.FC = ({ children }) => { const intl = useIntl(); const notify = useNotifier(); - const [tokenAuth, tokenAuthOpts] = useTokenAuthMutation({}); - const [tokenRefresh] = useTokenRefreshMutation({}); - const [tokenVerify, tokenVerifyOpts] = useTokenVerifyMutation({}); + const [tokenAuth, tokenAuthResult] = useMutation< + TokenAuth, + TokenAuthVariables + >(tokenAuthMutation); + const [tokenRefresh] = useMutation( + tokenRefreshMutation + ); + const [tokenVerify, tokenVerifyResult] = useMutation< + VerifyToken, + VerifyTokenVariables + >(tokenVerifyMutation); + + const tokenAuthOpts = { + ...tokenAuthResult, + status: getMutationStatus(tokenAuthResult) + }; + const tokenVerifyOpts = { + ...tokenVerifyResult, + status: getMutationStatus(tokenVerifyResult) + }; const [userContext, setUserContext] = useState(undefined); const [persistToken] = useState(false); @@ -130,7 +151,7 @@ const AuthProvider: React.FC = ({ children }) => { export const useAuth = () => { const user = useContext(UserContext); - const isAuthenticated = !!user; + const isAuthenticated = !!user.user; return { hasToken: !!getAuthToken(), diff --git a/src/auth/mutations.ts b/src/auth/mutations.ts index 5b42493ea..3ae53b360 100644 --- a/src/auth/mutations.ts +++ b/src/auth/mutations.ts @@ -1,17 +1,13 @@ import { fragmentUser } from "@saleor/fragments/auth"; import { accountErrorFragment } from "@saleor/fragments/errors"; -import makeMutation from "@saleor/hooks/makeMutation"; import gql from "graphql-tag"; import { TypedMutation } from "../mutations"; -import { RefreshToken, RefreshTokenVariables } from "./types/RefreshToken"; import { RequestPasswordReset, RequestPasswordResetVariables } from "./types/RequestPasswordReset"; import { SetPassword, SetPasswordVariables } from "./types/SetPassword"; -import { TokenAuth, TokenAuthVariables } from "./types/TokenAuth"; -import { VerifyToken, VerifyTokenVariables } from "./types/VerifyToken"; export const tokenAuthMutation = gql` ${fragmentUser} @@ -28,9 +24,6 @@ export const tokenAuthMutation = gql` } } `; -export const useTokenAuthMutation = makeMutation( - tokenAuthMutation -); export const tokenVerifyMutation = gql` ${fragmentUser} @@ -43,22 +36,14 @@ export const tokenVerifyMutation = gql` } } `; -export const useTokenVerifyMutation = makeMutation< - VerifyToken, - VerifyTokenVariables ->(tokenVerifyMutation); -const refreshToken = gql` +export const tokenRefreshMutation = gql` mutation RefreshToken($token: String!) { tokenRefresh(csrfToken: $token) { token } } `; -export const useTokenRefreshMutation = makeMutation< - RefreshToken, - RefreshTokenVariables ->(refreshToken); export const requestPasswordReset = gql` ${accountErrorFragment}