UNPKG

@diagramers/admin

Version:

Diagramers Admin Template - React starter for admin dashboards.

126 lines (112 loc) 3.09 kB
class ConfigService { constructor() { this.configKey = 'projectConfig'; } // Get project configuration getConfig() { try { const config = localStorage.getItem(this.configKey); return config ? JSON.parse(config) : null; } catch (error) { console.error('Error getting project config:', error); return null; } } // Save project configuration saveConfig(config) { try { localStorage.setItem(this.configKey, JSON.stringify(config)); return true; } catch (error) { console.error('Error saving project config:', error); return false; } } // Update specific configuration updateConfig(updates) { try { const currentConfig = this.getConfig() || {}; const newConfig = { ...currentConfig, ...updates }; return this.saveConfig(newConfig); } catch (error) { console.error('Error updating project config:', error); return false; } } // Check if setup is completed isSetupCompleted() { const config = this.getConfig(); return config ? config.setupCompleted : false; } // Get project name getProjectName() { const config = this.getConfig(); return config ? config.projectName : 'Admin Dashboard'; } // Get default theme getDefaultTheme() { const config = this.getConfig(); return config ? config.defaultTheme : 'light-blue'; } // Get logo getLogo() { const config = this.getConfig(); return config ? config.logo : null; } // Complete setup completeSetup(setupData) { const config = { ...setupData, setupCompleted: true, setupDate: new Date().toISOString(), }; return this.saveConfig(config); } // Reset configuration resetConfig() { try { localStorage.removeItem(this.configKey); return true; } catch (error) { console.error('Error resetting project config:', error); return false; } } // Export configuration exportConfig() { const config = this.getConfig(); if (!config) return null; const blob = new Blob([JSON.stringify(config, null, 2)], { type: 'application/json', }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'project-config.json'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } // Import configuration importConfig(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (e) => { try { const config = JSON.parse(e.target.result); if (this.saveConfig(config)) { resolve(config); } else { reject(new Error('Failed to save configuration')); } } catch (error) { reject(new Error('Invalid configuration file')); } }; reader.onerror = () => reject(new Error('Failed to read file')); reader.readAsText(file); }); } } export default new ConfigService();