Improve signOut resilience and clear client state
cgen-b67da32042584983a1bd455f884a1230
This commit is contained in:
parent
8aca13346f
commit
6e57236d93
1 changed files with 28 additions and 2 deletions
|
|
@ -417,16 +417,42 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
|
||||||
[user, refreshAuthState],
|
[user, refreshAuthState],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const clearClientAuthState = useCallback(() => {
|
||||||
|
setUser(null);
|
||||||
|
setProfile(null);
|
||||||
|
setRoles([]);
|
||||||
|
setSession(null);
|
||||||
|
if (typeof window !== "undefined") {
|
||||||
|
try {
|
||||||
|
window.localStorage.removeItem("onboarding_complete");
|
||||||
|
window.localStorage.removeItem("supabase.auth.token");
|
||||||
|
window.localStorage.removeItem("supabase.auth.refresh_token");
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
const signOut = async () => {
|
const signOut = async () => {
|
||||||
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
const { error } = await supabase.auth.signOut();
|
const { error } = await supabase.auth.signOut();
|
||||||
if (error) throw error;
|
if (error) throw error;
|
||||||
|
clearClientAuthState();
|
||||||
|
aethexToast.info({
|
||||||
|
title: "Signed out",
|
||||||
|
description: "You have been signed out successfully.",
|
||||||
|
});
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
|
console.warn("Supabase signOut failed, forcing local cleanup:", error);
|
||||||
|
clearClientAuthState();
|
||||||
aethexToast.error({
|
aethexToast.error({
|
||||||
title: "Sign out failed",
|
title: "Sign out issue",
|
||||||
description: error.message,
|
description:
|
||||||
|
error?.message ||
|
||||||
|
"We had trouble contacting the auth service, but local data was cleared.",
|
||||||
});
|
});
|
||||||
throw error;
|
throw error;
|
||||||
|
} finally {
|
||||||
|
setLoading(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue