CoolFace
Apppublic

Exched/DeepSeek_Coder

sourceHugging Facemitupdated 11mo agoView on Hugging Face
0likes
iframe-storage.ts91 linesDownload Raw Back to lib
1/**2 * Utility for handling storage in iframe contexts3 * Falls back to localStorage when cookies are blocked4 */5 6export const isInIframe = (): boolean => {7  try {8    return window.self !== window.top;9  } catch {10    return true; // If we can't access window.top, we're likely in an iframe11  }12};13 14export const isMobileDevice = (): boolean => {15  if (typeof window === 'undefined') return false;16  17  // Check user agent for mobile patterns18  const userAgent = window.navigator.userAgent;19  const mobilePattern = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i;20  21  // Also check for touch capability and screen size22  const hasTouchScreen = 'ontouchstart' in window || navigator.maxTouchPoints > 0;23  const hasSmallScreen = window.innerWidth <= 768; // Common mobile breakpoint24  25  return mobilePattern.test(userAgent) || (hasTouchScreen && hasSmallScreen);26};27 28export const STORAGE_KEYS = {29  ACCESS_TOKEN: "deepsite-auth-token-fallback",30  USER_DATA: "deepsite-user-data-fallback",31} as const;32 33export const iframeStorage = {34  setItem: (key: string, value: string): void => {35    try {36      localStorage.setItem(key, value);37    } catch (error) {38      console.warn("Failed to set localStorage item:", error);39    }40  },41 42  getItem: (key: string): string | null => {43    try {44      return localStorage.getItem(key);45    } catch (error) {46      console.warn("Failed to get localStorage item:", error);47      return null;48    }49  },50 51  removeItem: (key: string): void => {52    try {53      localStorage.removeItem(key);54    } catch (error) {55      console.warn("Failed to remove localStorage item:", error);56    }57  },58 59  clear: (): void => {60    try {61      localStorage.removeItem(STORAGE_KEYS.ACCESS_TOKEN);62      localStorage.removeItem(STORAGE_KEYS.USER_DATA);63    } catch (error) {64      console.warn("Failed to clear localStorage items:", error);65    }66  },67};68 69export const storeAuthDataFallback = (accessToken: string, userData: any): void => {70  if (isInIframe()) {71    iframeStorage.setItem(STORAGE_KEYS.ACCESS_TOKEN, accessToken);72    iframeStorage.setItem(STORAGE_KEYS.USER_DATA, JSON.stringify(userData));73  }74};75 76export const getAuthDataFallback = (): { token: string | null; user: any | null } => {77  if (isInIframe()) {78    const token = iframeStorage.getItem(STORAGE_KEYS.ACCESS_TOKEN);79    const userDataStr = iframeStorage.getItem(STORAGE_KEYS.USER_DATA);80    const user = userDataStr ? JSON.parse(userDataStr) : null;81    return { token, user };82  }83  return { token: null, user: null };84};85 86export const clearAuthDataFallback = (): void => {87  if (isInIframe()) {88    iframeStorage.clear();89  }90};91