UNPKG

@ingridsandev/chatbot-widget

Version:

A framework-agnostic chatbot widget using Web Components

79 lines (71 loc) 2 kB
class Storage { constructor(prefix = 'chatbot-widget') { this.prefix = prefix; } set(key, value) { try { const prefixedKey = `${this.prefix}-${key}`; localStorage.setItem(prefixedKey, JSON.stringify(value)); return true; } catch (error) { console.warn(`Storage set failed for key "${key}":`, error); return false; } } get(key, defaultValue = null) { try { const prefixedKey = `${this.prefix}-${key}`; const item = localStorage.getItem(prefixedKey); return item ? JSON.parse(item) : defaultValue; } catch (error) { console.warn(`Storage get failed for key "${key}":`, error); return defaultValue; } } remove(key) { try { const prefixedKey = `${this.prefix}-${key}`; localStorage.removeItem(prefixedKey); return true; } catch (error) { console.warn(`Storage remove failed for key "${key}":`, error); return false; } } clear() { try { const keys = Object.keys(localStorage); keys.forEach(key => { if (key.startsWith(`${this.prefix}-`)) { localStorage.removeItem(key); } }); return true; } catch (error) { console.warn('Storage clear failed:', error); return false; } } // Session storage methods setSession(key, value) { try { const prefixedKey = `${this.prefix}-${key}`; sessionStorage.setItem(prefixedKey, JSON.stringify(value)); return true; } catch (error) { console.warn(`Session storage set failed for key "${key}":`, error); return false; } } getSession(key, defaultValue = null) { try { const prefixedKey = `${this.prefix}-${key}`; const item = sessionStorage.getItem(prefixedKey); return item ? JSON.parse(item) : defaultValue; } catch (error) { console.warn(`Session storage get failed for key "${key}":`, error); return defaultValue; } } } export default Storage;