import { UserSettings, ChatSession, AppLanguage } from "../types"; import { DEFAULT_LANGUAGE } from "../constants"; const KEYS = { SETTINGS: "sociopal_settings", SESSIONS: "sociopal_sessions", CURRENT_SESSION: "sociopal_current_session_id" }; export const loadSettings = (): UserSettings => { const stored = localStorage.getItem(KEYS.SETTINGS); if (stored) return JSON.parse(stored); return { language: DEFAULT_LANGUAGE, theme: 'light' }; }; export const saveSettings = (settings: UserSettings) => { localStorage.setItem(KEYS.SETTINGS, JSON.stringify(settings)); }; export const loadSessions = (): ChatSession[] => { const stored = localStorage.getItem(KEYS.SESSIONS); return stored ? JSON.parse(stored) : []; }; export const saveSessions = (sessions: ChatSession[]) => { localStorage.setItem(KEYS.SESSIONS, JSON.stringify(sessions)); }; export const exportData = () => { const data = { settings: loadSettings(), sessions: loadSessions(), timestamp: Date.now() }; const blob = new Blob([JSON.stringify(data, null, 2)], { type: "application/json" }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `sociopal_backup_${new Date().toISOString().slice(0, 10)}.json`; a.click(); }; export const importData = async (file: File): Promise => { return new Promise((resolve) => { const reader = new FileReader(); reader.onload = (e) => { try { const data = JSON.parse(e.target?.result as string); if (data.settings) saveSettings(data.settings); if (data.sessions) saveSessions(data.sessions); resolve(true); } catch (err) { console.error("Import failed", err); resolve(false); } }; reader.readAsText(file); }); }; export const clearData = () => { localStorage.removeItem(KEYS.SETTINGS); localStorage.removeItem(KEYS.SESSIONS); localStorage.removeItem(KEYS.CURRENT_SESSION); };