Revert "fix(headless): use axios instead of apollo for auth"
This reverts commit 644480182d
.
This commit is contained in:
parent
7ab708a536
commit
cf61de639c
4 changed files with 20 additions and 68 deletions
|
@ -1,68 +1,40 @@
|
||||||
import * as Device from "expo-device";
|
import * as Device from "expo-device";
|
||||||
|
|
||||||
import network from "~/network";
|
import network from "~/network";
|
||||||
import env from "~/env";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
REGISTER_USER_MUTATION,
|
||||||
|
LOGIN_USER_TOKEN_MUTATION,
|
||||||
STORE_FCM_TOKEN_MUTATION,
|
STORE_FCM_TOKEN_MUTATION,
|
||||||
REGISTER_USER_MUTATION_STRING,
|
|
||||||
LOGIN_USER_TOKEN_MUTATION_STRING,
|
|
||||||
} from "~/auth/gql";
|
} from "~/auth/gql";
|
||||||
|
|
||||||
import { getDeviceUuid } from "./deviceUuid";
|
import { getDeviceUuid } from "./deviceUuid";
|
||||||
|
|
||||||
// to support refresh auth in headless mode we'll use axios instead of apollo
|
|
||||||
// read more https://github.com/transistorsoft/react-native-background-fetch/issues/562
|
|
||||||
|
|
||||||
export async function registerUser() {
|
export async function registerUser() {
|
||||||
const { data } = await network.axios.post(
|
const { data } = await network.apolloClient.mutate({
|
||||||
env.GRAPHQL_URL,
|
mutation: REGISTER_USER_MUTATION,
|
||||||
{
|
context: {
|
||||||
query: REGISTER_USER_MUTATION_STRING,
|
skipAuth: true, // Skip adding Authorization header
|
||||||
},
|
},
|
||||||
{
|
});
|
||||||
headers: {
|
const authToken = data.addOneAuthInitToken.authTokenJwt;
|
||||||
// Skip adding Authorization header for this request
|
|
||||||
Authorization: undefined,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
if (data.errors && data.errors.length > 0) {
|
|
||||||
const message = data.errors.map((err) => err.message).join("; ");
|
|
||||||
throw new Error(`GraphQL Error: ${message}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const authToken = data.data.addOneAuthInitToken.authTokenJwt;
|
|
||||||
return { authToken };
|
return { authToken };
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loginUserToken({ authToken }) {
|
export async function loginUserToken({ authToken }) {
|
||||||
const deviceUuid = await getDeviceUuid();
|
const deviceUuid = await getDeviceUuid();
|
||||||
const { data } = await network.axios.post(
|
const { data } = await network.apolloClient.mutate({
|
||||||
env.GRAPHQL_URL,
|
mutation: LOGIN_USER_TOKEN_MUTATION,
|
||||||
{
|
|
||||||
query: LOGIN_USER_TOKEN_MUTATION_STRING,
|
|
||||||
variables: {
|
variables: {
|
||||||
authTokenJwt: authToken,
|
authTokenJwt: authToken,
|
||||||
phoneModel: Device.modelName,
|
phoneModel: Device.modelName,
|
||||||
deviceUuid,
|
deviceUuid,
|
||||||
},
|
},
|
||||||
|
context: {
|
||||||
|
skipAuth: true, // Skip adding Authorization header
|
||||||
},
|
},
|
||||||
{
|
});
|
||||||
headers: {
|
const userToken = data.doAuthLoginToken.userBearerJwt;
|
||||||
// Skip adding Authorization header for this request
|
|
||||||
Authorization: undefined,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
if (data.errors && data.errors.length > 0) {
|
|
||||||
const message = data.errors.map((err) => err.message).join("; ");
|
|
||||||
throw new Error(`GraphQL Error: ${message}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const userToken = data.data.doAuthLoginToken.userBearerJwt;
|
|
||||||
return { userToken };
|
return { userToken };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { gql } from "@apollo/client";
|
import { gql } from "@apollo/client";
|
||||||
import { print } from "graphql";
|
|
||||||
|
|
||||||
export const REGISTER_USER_MUTATION = gql`
|
export const REGISTER_USER_MUTATION = gql`
|
||||||
mutation registerUser {
|
mutation registerUser {
|
||||||
|
@ -37,9 +36,3 @@ export const STORE_FCM_TOKEN_MUTATION = gql`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
// Convert GraphQL documents to strings for Axios requests
|
|
||||||
export const REGISTER_USER_MUTATION_STRING = print(REGISTER_USER_MUTATION);
|
|
||||||
export const LOGIN_USER_TOKEN_MUTATION_STRING = print(
|
|
||||||
LOGIN_USER_TOKEN_MUTATION,
|
|
||||||
);
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { ApolloProvider } from "@apollo/client";
|
||||||
|
|
||||||
import createApolloClient from "~/network/apollo";
|
import createApolloClient from "~/network/apollo";
|
||||||
|
|
||||||
import createAxios from "~/network/axios";
|
// import createAxios from "~/network/axios";
|
||||||
import createKy from "~/network/ky";
|
import createKy from "~/network/ky";
|
||||||
|
|
||||||
import network from "~/network";
|
import network from "~/network";
|
||||||
|
@ -41,8 +41,6 @@ initializeNewApolloClient();
|
||||||
const oaFilesKy = createKy({ prefixUrl: env.OA_FILES_URL + "/" }, { store });
|
const oaFilesKy = createKy({ prefixUrl: env.OA_FILES_URL + "/" }, { store });
|
||||||
network.oaFilesKy = oaFilesKy;
|
network.oaFilesKy = oaFilesKy;
|
||||||
|
|
||||||
network.axios = createAxios();
|
|
||||||
|
|
||||||
export default function NetworkProviders({ children }) {
|
export default function NetworkProviders({ children }) {
|
||||||
const [key, setKey] = useState(0);
|
const [key, setKey] = useState(0);
|
||||||
|
|
||||||
|
|
|
@ -24,19 +24,8 @@ export default function createAxios(baseOptions = {}) {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Only add bearer token if Authorization header is not explicitly set to undefined
|
|
||||||
if (config.headers.Authorization !== undefined) {
|
|
||||||
setBearerHeader(defaultConfig.headers, getAuthState().userToken);
|
setBearerHeader(defaultConfig.headers, getAuthState().userToken);
|
||||||
}
|
|
||||||
|
|
||||||
defaultsDeep(config, defaultConfig);
|
defaultsDeep(config, defaultConfig);
|
||||||
|
|
||||||
// Clean up undefined Authorization header
|
|
||||||
if (config.headers.Authorization === undefined) {
|
|
||||||
delete config.headers.Authorization;
|
|
||||||
}
|
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
function (error) {
|
function (error) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue