in packages/expo/src/client.ts [191:245]
async init(url, options) {
if (isWeb) {
return {
url,
options: options as BetterFetchOption,
};
}
options = options || {};
const storedCookie = storage.getItem(cookieName);
const cookie = getCookie(storedCookie || "{}");
options.credentials = "omit";
options.headers = {
...options.headers,
cookie,
"expo-origin": getOrigin(scheme!),
"x-skip-oauth-proxy": "true", // skip oauth proxy for expo
};
if (options.body?.callbackURL) {
if (options.body.callbackURL.startsWith("/")) {
const url = Linking.createURL(options.body.callbackURL, {
scheme,
});
options.body.callbackURL = url;
}
}
if (options.body?.newUserCallbackURL) {
if (options.body.newUserCallbackURL.startsWith("/")) {
const url = Linking.createURL(options.body.newUserCallbackURL, {
scheme,
});
options.body.newUserCallbackURL = url;
}
}
if (options.body?.errorCallbackURL) {
if (options.body.errorCallbackURL.startsWith("/")) {
const url = Linking.createURL(options.body.errorCallbackURL, {
scheme,
});
options.body.errorCallbackURL = url;
}
}
if (url.includes("/sign-out")) {
await storage.setItem(cookieName, "{}");
store?.atoms.session?.set({
data: null,
error: null,
isPending: false,
});
storage.setItem(localCacheName, "{}");
}
return {
url,
options: options as BetterFetchOption,
};
},