fix(headless): use fetch instead of axios for auth

This commit is contained in:
devthejo 2025-06-29 18:49:11 +02:00
parent 644480182d
commit 09ea8cd563

View file

@ -11,22 +11,26 @@ import {
import { getDeviceUuid } from "./deviceUuid"; import { getDeviceUuid } from "./deviceUuid";
// to support refresh auth in headless mode we'll use axios instead of apollo // to support refresh auth in headless mode we'll use fetch instead of apollo/axios
// read more https://github.com/transistorsoft/react-native-background-fetch/issues/562 // 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 response = await fetch(env.GRAPHQL_URL, {
env.GRAPHQL_URL, method: "POST",
{
query: REGISTER_USER_MUTATION_STRING,
},
{
headers: { headers: {
// Skip adding Authorization header for this request "Content-Type": "application/json",
Authorization: undefined, // No Authorization header for this request
}, },
}, body: JSON.stringify({
); query: REGISTER_USER_MUTATION_STRING,
}),
});
if (!response.ok) {
throw new Error(`HTTP Error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
if (data.errors && data.errors.length > 0) { if (data.errors && data.errors.length > 0) {
const message = data.errors.map((err) => err.message).join("; "); const message = data.errors.map((err) => err.message).join("; ");
@ -39,23 +43,27 @@ export async function registerUser() {
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 response = await fetch(env.GRAPHQL_URL, {
env.GRAPHQL_URL, method: "POST",
{ headers: {
"Content-Type": "application/json",
// No Authorization header for this request
},
body: JSON.stringify({
query: LOGIN_USER_TOKEN_MUTATION_STRING, query: LOGIN_USER_TOKEN_MUTATION_STRING,
variables: { variables: {
authTokenJwt: authToken, authTokenJwt: authToken,
phoneModel: Device.modelName, phoneModel: Device.modelName,
deviceUuid, deviceUuid,
}, },
}, }),
{ });
headers: {
// Skip adding Authorization header for this request if (!response.ok) {
Authorization: undefined, throw new Error(`HTTP Error: ${response.status} ${response.statusText}`);
}, }
},
); const data = await response.json();
if (data.errors && data.errors.length > 0) { if (data.errors && data.errors.length > 0) {
const message = data.errors.map((err) => err.message).join("; "); const message = data.errors.map((err) => err.message).join("; ");