226 lines
5.0 KiB
JavaScript
226 lines
5.0 KiB
JavaScript
|
|
/**
|
|||
|
|
* 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)
|
|||
|
|
}
|
|||
|
|
}
|