brief-rags-bench/static/js/data/storage.js

226 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Storage Service
*
* Обертка над localStorage для работы с данными приложения.
*/
import { STORAGE_KEYS } from '../config.js'
/**
* Save environment data to localStorage
* @param {string} env - Environment name ('ift', 'psi', 'prod')
* @param {object} data - Environment data to save
*/
export function saveEnvironmentData(env, data) {
try {
const key = STORAGE_KEYS.envData(env)
localStorage.setItem(key, JSON.stringify(data))
} catch (e) {
console.error(`Failed to save data for environment ${env}:`, e)
}
}
/**
* Load environment data from localStorage
* @param {string} env - Environment name ('ift', 'psi', 'prod')
* @returns {object|null} Environment data or null if not found
*/
export function loadEnvironmentData(env) {
try {
const key = STORAGE_KEYS.envData(env)
const savedData = localStorage.getItem(key)
if (!savedData) {
return null
}
return JSON.parse(savedData)
} catch (e) {
console.error(`Failed to load data for environment ${env}:`, e)
return null
}
}
/**
* Clear environment data from localStorage
* @param {string} env - Environment name ('ift', 'psi', 'prod')
*/
export function clearEnvironmentData(env) {
try {
const key = STORAGE_KEYS.envData(env)
localStorage.removeItem(key)
} catch (e) {
console.error(`Failed to clear data for environment ${env}:`, e)
}
}
/**
* Clear all environment data
*/
export function clearAllEnvironmentData() {
const environments = ['ift', 'psi', 'prod']
environments.forEach(env => clearEnvironmentData(env))
}
/**
* Save token to localStorage
* @param {string} token - JWT token
*/
export function saveToken(token) {
try {
localStorage.setItem(STORAGE_KEYS.token, token)
} catch (e) {
console.error('Failed to save token:', e)
}
}
/**
* Load token from localStorage
* @returns {string|null} JWT token or null if not found
*/
export function loadToken() {
try {
return localStorage.getItem(STORAGE_KEYS.token)
} catch (e) {
console.error('Failed to load token:', e)
return null
}
}
/**
* Clear token from localStorage
*/
export function clearToken() {
try {
localStorage.removeItem(STORAGE_KEYS.token)
} catch (e) {
console.error('Failed to clear token:', e)
}
}
/**
* Save user info to localStorage
* @param {object} user - User object
*/
export function saveUser(user) {
try {
localStorage.setItem(STORAGE_KEYS.user, JSON.stringify(user))
} catch (e) {
console.error('Failed to save user:', e)
}
}
/**
* Load user info from localStorage
* @returns {object|null} User object or null if not found
*/
export function loadUser() {
try {
const userData = localStorage.getItem(STORAGE_KEYS.user)
return userData ? JSON.parse(userData) : null
} catch (e) {
console.error('Failed to load user:', e)
return null
}
}
/**
* Clear user info from localStorage
*/
export function clearUser() {
try {
localStorage.removeItem(STORAGE_KEYS.user)
} catch (e) {
console.error('Failed to clear user:', e)
}
}
/**
* Save settings to localStorage
* @param {object} settings - Settings object
*/
export function saveSettings(settings) {
try {
localStorage.setItem(STORAGE_KEYS.settings, JSON.stringify(settings))
} catch (e) {
console.error('Failed to save settings:', e)
}
}
/**
* Load settings from localStorage
* @returns {object|null} Settings object or null if not found
*/
export function loadSettings() {
try {
const settingsData = localStorage.getItem(STORAGE_KEYS.settings)
return settingsData ? JSON.parse(settingsData) : null
} catch (e) {
console.error('Failed to load settings:', e)
return null
}
}
/**
* Clear settings from localStorage
*/
export function clearSettings() {
try {
localStorage.removeItem(STORAGE_KEYS.settings)
} catch (e) {
console.error('Failed to clear settings:', e)
}
}
/**
* Save annotation draft to localStorage
* @param {object} draft - Annotation draft object
*/
export function saveAnnotationDraft(draft) {
try {
localStorage.setItem(STORAGE_KEYS.annotations, JSON.stringify(draft))
} catch (e) {
console.error('Failed to save annotation draft:', e)
}
}
/**
* Load annotation draft from localStorage
* @returns {object|null} Annotation draft or null if not found
*/
export function loadAnnotationDraft() {
try {
const draftData = localStorage.getItem(STORAGE_KEYS.annotations)
return draftData ? JSON.parse(draftData) : null
} catch (e) {
console.error('Failed to load annotation draft:', e)
return null
}
}
/**
* Clear annotation draft from localStorage
*/
export function clearAnnotationDraft() {
try {
localStorage.removeItem(STORAGE_KEYS.annotations)
} catch (e) {
console.error('Failed to clear annotation draft:', e)
}
}
/**
* Clear all data from localStorage
*/
export function clearAllData() {
try {
clearToken()
clearUser()
clearSettings()
clearAllEnvironmentData()
clearAnnotationDraft()
} catch (e) {
console.error('Failed to clear all data:', e)
}
}