main funcions fixes
This commit is contained in:
156
desktop-operator/src/config.js
Normal file
156
desktop-operator/src/config.js
Normal file
@@ -0,0 +1,156 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { app } = require('electron');
|
||||
|
||||
class ConfigManager {
|
||||
constructor() {
|
||||
this.configPath = path.join(app.getPath('userData'), 'config.json');
|
||||
this.config = this.loadConfig();
|
||||
}
|
||||
|
||||
loadConfig() {
|
||||
try {
|
||||
if (fs.existsSync(this.configPath)) {
|
||||
const data = fs.readFileSync(this.configPath, 'utf8');
|
||||
return JSON.parse(data);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка загрузки конфигурации:', error);
|
||||
}
|
||||
|
||||
// Конфигурация по умолчанию
|
||||
return {
|
||||
server: {
|
||||
url: 'http://localhost:3001',
|
||||
autoConnect: false,
|
||||
reconnectAttempts: 3,
|
||||
reconnectInterval: 5000
|
||||
},
|
||||
ui: {
|
||||
theme: 'dark',
|
||||
language: 'ru',
|
||||
windowBounds: {
|
||||
width: 1400,
|
||||
height: 900,
|
||||
x: null,
|
||||
y: null
|
||||
},
|
||||
videoFilters: {
|
||||
brightness: 0,
|
||||
contrast: 0,
|
||||
saturation: 0,
|
||||
monochrome: false,
|
||||
edgeDetection: false
|
||||
}
|
||||
},
|
||||
recording: {
|
||||
quality: 'high',
|
||||
format: 'webm',
|
||||
maxDuration: 3600000, // 1 час в миллисекундах
|
||||
autoSave: true,
|
||||
saveLocation: path.join(app.getPath('videos'), 'GodEye')
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
saveConfig() {
|
||||
try {
|
||||
// Создаем директорию если её нет
|
||||
const dir = path.dirname(this.configPath);
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir, { recursive: true });
|
||||
}
|
||||
|
||||
fs.writeFileSync(this.configPath, JSON.stringify(this.config, null, 2), 'utf8');
|
||||
} catch (error) {
|
||||
console.error('Ошибка сохранения конфигурации:', error);
|
||||
}
|
||||
}
|
||||
|
||||
get(key) {
|
||||
if (!key || typeof key !== 'string') {
|
||||
return this.config; // Возвращаем всю конфигурацию если ключ пустой
|
||||
}
|
||||
|
||||
// Если передана пустая строка, возвращаем всю конфигурацию
|
||||
if (key.trim() === '') {
|
||||
return this.config;
|
||||
}
|
||||
|
||||
const keys = key.split('.');
|
||||
let value = this.config;
|
||||
|
||||
for (const k of keys) {
|
||||
if (value && typeof value === 'object' && k in value) {
|
||||
value = value[k];
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
set(key, value) {
|
||||
const keys = key.split('.');
|
||||
let obj = this.config;
|
||||
|
||||
for (let i = 0; i < keys.length - 1; i++) {
|
||||
const k = keys[i];
|
||||
if (!(k in obj) || typeof obj[k] !== 'object') {
|
||||
obj[k] = {};
|
||||
}
|
||||
obj = obj[k];
|
||||
}
|
||||
|
||||
obj[keys[keys.length - 1]] = value;
|
||||
this.saveConfig();
|
||||
}
|
||||
|
||||
// Быстрые методы для часто используемых настроек
|
||||
getServerUrl() {
|
||||
return this.get('server.url');
|
||||
}
|
||||
|
||||
setServerUrl(url) {
|
||||
this.set('server.url', url);
|
||||
}
|
||||
|
||||
getAutoConnect() {
|
||||
return this.get('server.autoConnect');
|
||||
}
|
||||
|
||||
setAutoConnect(autoConnect) {
|
||||
this.set('server.autoConnect', autoConnect);
|
||||
}
|
||||
|
||||
getWindowBounds() {
|
||||
return this.get('ui.windowBounds');
|
||||
}
|
||||
|
||||
setWindowBounds(bounds) {
|
||||
this.set('ui.windowBounds', bounds);
|
||||
}
|
||||
|
||||
getVideoFilters() {
|
||||
return this.get('ui.videoFilters');
|
||||
}
|
||||
|
||||
setVideoFilters(filters) {
|
||||
this.set('ui.videoFilters', filters);
|
||||
}
|
||||
|
||||
getRecordingSettings() {
|
||||
return this.get('recording');
|
||||
}
|
||||
|
||||
ensureRecordingDirectory() {
|
||||
const saveLocation = this.get('recording.saveLocation');
|
||||
if (!fs.existsSync(saveLocation)) {
|
||||
fs.mkdirSync(saveLocation, { recursive: true });
|
||||
}
|
||||
return saveLocation;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ConfigManager;
|
||||
Reference in New Issue
Block a user