fix: safari cookie issue

This commit is contained in:
2026-01-13 19:19:00 -05:00
parent b612d12a51
commit 48f01b6171
4 changed files with 39 additions and 4 deletions

View File

@@ -44,6 +44,13 @@ export const api = createTRPCProxyClient<AppRouter>({
headers: () => {
const csrfToken = getCSRFToken();
return csrfToken ? { "x-csrf-token": csrfToken } : {};
},
// CRITICAL FOR SAFARI: Ensure cookies are sent and received
fetch(url, options) {
return fetch(url, {
...options,
credentials: "include" // Safari requires this for cookie handling
});
}
})
]

View File

@@ -23,6 +23,7 @@ class TokenRefreshManager {
private onlineHandler: (() => void) | null = null;
private focusHandler: (() => void) | null = null;
private lastRefreshTime: number | null = null;
private lastCheckTime: number = 0;
/**
* Start monitoring and auto-refresh
@@ -73,7 +74,18 @@ class TokenRefreshManager {
window.addEventListener("online", this.onlineHandler);
// Re-check on window focus (device was asleep or user switched apps)
// Debounce to prevent Safari from firing this too frequently
this.focusHandler = () => {
const now = Date.now();
const timeSinceLastCheck = now - this.lastCheckTime;
// Debounce: only check if last check was >1s ago (prevents Safari spam)
if (timeSinceLastCheck < 1000) {
console.log("[Token Refresh] Window focused but debouncing (Safari)");
return;
}
this.lastCheckTime = now;
console.log("[Token Refresh] Window focused, checking token status");
this.checkAndRefreshIfNeeded();
};