@diagramers/admin
Version:
Diagramers Admin Template - React starter for admin dashboards.
126 lines (112 loc) • 3.09 kB
JavaScript
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();