| |
| |
| |
| |
|
|
| export const isInIframe = (): boolean => { |
| try { |
| return window.self !== window.top; |
| } catch { |
| return true; |
| } |
| }; |
|
|
| export const isMobileDevice = (): boolean => { |
| if (typeof window === 'undefined') return false; |
| |
| |
| const userAgent = window.navigator.userAgent; |
| const mobilePattern = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i; |
| |
| |
| const hasTouchScreen = 'ontouchstart' in window || navigator.maxTouchPoints > 0; |
| const hasSmallScreen = window.innerWidth <= 768; |
| |
| return mobilePattern.test(userAgent) || (hasTouchScreen && hasSmallScreen); |
| }; |
|
|
| export const STORAGE_KEYS = { |
| ACCESS_TOKEN: "deepsite-auth-token-fallback", |
| USER_DATA: "deepsite-user-data-fallback", |
| } as const; |
|
|
| export const iframeStorage = { |
| setItem: (key: string, value: string): void => { |
| try { |
| localStorage.setItem(key, value); |
| } catch (error) { |
| console.warn("Failed to set localStorage item:", error); |
| } |
| }, |
|
|
| getItem: (key: string): string | null => { |
| try { |
| return localStorage.getItem(key); |
| } catch (error) { |
| console.warn("Failed to get localStorage item:", error); |
| return null; |
| } |
| }, |
|
|
| removeItem: (key: string): void => { |
| try { |
| localStorage.removeItem(key); |
| } catch (error) { |
| console.warn("Failed to remove localStorage item:", error); |
| } |
| }, |
|
|
| clear: (): void => { |
| try { |
| localStorage.removeItem(STORAGE_KEYS.ACCESS_TOKEN); |
| localStorage.removeItem(STORAGE_KEYS.USER_DATA); |
| } catch (error) { |
| console.warn("Failed to clear localStorage items:", error); |
| } |
| }, |
| }; |
|
|
| export const storeAuthDataFallback = (accessToken: string, userData: any): void => { |
| if (isInIframe()) { |
| iframeStorage.setItem(STORAGE_KEYS.ACCESS_TOKEN, accessToken); |
| iframeStorage.setItem(STORAGE_KEYS.USER_DATA, JSON.stringify(userData)); |
| } |
| }; |
|
|
| export const getAuthDataFallback = (): { token: string | null; user: any | null } => { |
| if (isInIframe()) { |
| const token = iframeStorage.getItem(STORAGE_KEYS.ACCESS_TOKEN); |
| const userDataStr = iframeStorage.getItem(STORAGE_KEYS.USER_DATA); |
| const user = userDataStr ? JSON.parse(userDataStr) : null; |
| return { token, user }; |
| } |
| return { token: null, user: null }; |
| }; |
|
|
| export const clearAuthDataFallback = (): void => { |
| if (isInIframe()) { |
| iframeStorage.clear(); |
| } |
| }; |
|
|