import type { ClaudeSettings } from '../types/types'; export const CLAUDE_SETTINGS_KEY = 'claude-settings'; export const safeLocalStorage = { setItem: (key: string, value: string) => { try { localStorage.setItem(key, value); } catch (error: any) { if (error?.name === 'QuotaExceededError') { console.warn('localStorage quota exceeded, clearing old data'); const keys = Object.keys(localStorage); const draftKeys = keys.filter((k) => k.startsWith('draft_input_') || k.startsWith('queued_message_')); draftKeys.forEach((k) => { localStorage.removeItem(k); }); try { localStorage.setItem(key, value); } catch (retryError) { console.error('Failed to save to localStorage even after cleanup:', retryError); } } else { console.error('localStorage error:', error); } } }, getItem: (key: string): string | null => { try { return localStorage.getItem(key); } catch (error) { console.error('localStorage getItem error:', error); return null; } }, removeItem: (key: string) => { try { localStorage.removeItem(key); } catch (error) { console.error('localStorage removeItem error:', error); } }, }; export function getClaudeSettings(): ClaudeSettings { const raw = safeLocalStorage.getItem(CLAUDE_SETTINGS_KEY); if (!raw) { return { allowedTools: [], disallowedTools: [], skipPermissions: false, projectSortOrder: 'name', }; } try { const parsed = JSON.parse(raw); return { ...parsed, allowedTools: Array.isArray(parsed.allowedTools) ? parsed.allowedTools : [], disallowedTools: Array.isArray(parsed.disallowedTools) ? parsed.disallowedTools : [], skipPermissions: Boolean(parsed.skipPermissions), projectSortOrder: parsed.projectSortOrder || 'name', }; } catch { return { allowedTools: [], disallowedTools: [], skipPermissions: false, projectSortOrder: 'name', }; } }