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)
|
||
}
|
||
}
|