mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
- Add varsIgnorePattern to no-unused-vars for destructuring patterns - Fix all react-hooks/exhaustive-deps by adding missing dependencies - Refactor useAnimatedNumber to use ref instead of stale state closure - Wrap handleLinkResult in useCallback for stable deps - Extract OAuth utilities from OAuthCallback.tsx to utils/oauth.ts - Extract background config utilities to utils/backgroundConfig.ts - Remove unused catch parameter in GiftSubscription
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
export const LINK_OAUTH_STATE_KEY = 'link_oauth_state';
|
|
export const LINK_OAUTH_PROVIDER_KEY = 'link_oauth_provider';
|
|
|
|
const OAUTH_STATE_KEY = 'oauth_state';
|
|
const OAUTH_PROVIDER_KEY = 'oauth_provider';
|
|
|
|
export function saveOAuthState(state: string, provider: string): void {
|
|
sessionStorage.setItem(OAUTH_STATE_KEY, state);
|
|
sessionStorage.setItem(OAUTH_PROVIDER_KEY, provider);
|
|
}
|
|
|
|
export function loadOAuthState(): { state: string; provider: string } | null {
|
|
const state = sessionStorage.getItem(OAUTH_STATE_KEY);
|
|
const provider = sessionStorage.getItem(OAUTH_PROVIDER_KEY);
|
|
if (!state || !provider) return null;
|
|
return { state, provider };
|
|
}
|
|
|
|
export function clearOAuthState(): void {
|
|
sessionStorage.removeItem(OAUTH_STATE_KEY);
|
|
sessionStorage.removeItem(OAUTH_PROVIDER_KEY);
|
|
}
|
|
|
|
export function peekLinkOAuthState(): { state: string; provider: string } | null {
|
|
const state = sessionStorage.getItem(LINK_OAUTH_STATE_KEY);
|
|
const provider = sessionStorage.getItem(LINK_OAUTH_PROVIDER_KEY);
|
|
if (!state || !provider) return null;
|
|
return { state, provider };
|
|
}
|
|
|
|
export function clearLinkOAuthState(): void {
|
|
sessionStorage.removeItem(LINK_OAUTH_STATE_KEY);
|
|
sessionStorage.removeItem(LINK_OAUTH_PROVIDER_KEY);
|
|
}
|
|
|
|
export function getErrorDetail(err: unknown): string | null {
|
|
if (err && typeof err === 'object' && 'response' in err) {
|
|
const resp = (err as { response?: { data?: { detail?: unknown } } }).response;
|
|
const detail = resp?.data?.detail;
|
|
if (typeof detail === 'string') return detail;
|
|
if (detail && typeof detail === 'object' && 'message' in detail) {
|
|
const msg = (detail as Record<string, unknown>).message;
|
|
if (typeof msg === 'string') return msg;
|
|
}
|
|
}
|
|
if (err instanceof Error) return err.message;
|
|
return null;
|
|
}
|