in packages/expo/src/client.ts [152:189]
async onSuccess(context) {
if (isWeb) return;
const setCookie = context.response.headers.get("set-cookie");
if (setCookie) {
const prevCookie = await storage.getItem(cookieName);
const toSetCookie = getSetCookie(
setCookie || "",
prevCookie ?? undefined,
);
await storage.setItem(cookieName, toSetCookie);
store?.notify("$sessionSignal");
}
if (
context.request.url.toString().includes("/get-session") &&
!opts?.disableCache
) {
const data = context.data;
storage.setItem(localCacheName, JSON.stringify(data));
}
if (
context.data?.redirect &&
context.request.url.toString().includes("/sign-in") &&
!context.request?.body.includes("idToken") // id token is used for silent sign-in
) {
const callbackURL = JSON.parse(context.request.body)?.callbackURL;
const to = callbackURL;
const signInURL = context.data?.url;
const result = await Browser.openAuthSessionAsync(signInURL, to);
if (result.type !== "success") return;
const url = new URL(result.url);
const cookie = String(url.searchParams.get("cookie"));
if (!cookie) return;
storage.setItem(cookieName, getSetCookie(cookie));
store?.notify("$sessionSignal");
}
},