main funcions fixes

This commit is contained in:
2025-09-29 22:06:11 +09:00
parent 40e016e128
commit c8c3274527
7995 changed files with 1517998 additions and 1057 deletions

View 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;