brief-rags-bench/static/js/services/settings.service.js

118 lines
3.5 KiB
JavaScript
Raw Normal View History

2025-12-25 09:39:58 +01:00
/**
* Settings Service
*
* Сервис управления настройками пользователя.
*/
import api from './api-client.js'
import appState from '../state/appState.js'
import { ENV_NAMES } from '../config.js'
/**
* Загрузить настройки с сервера
* @returns {Promise<object>} Загруженные настройки
*/
export async function loadFromServer() {
try {
const response = await api.getSettings()
// Преобразовать в формат AppState.settings
const settings = {
activeEnvironment: appState.getCurrentEnvironment(),
environments: {
ift: {
name: ENV_NAMES.ift,
...response.settings.ift
},
psi: {
name: ENV_NAMES.psi,
...response.settings.psi
},
prod: {
name: ENV_NAMES.prod,
...response.settings.prod
}
},
requestTimeout: 1800000 // 30 минут (фиксировано)
}
// Обновить AppState
appState.setSettings(settings)
console.log('Settings loaded from server:', settings)
return settings
} catch (error) {
console.error('Failed to load settings from server:', error)
throw error
}
}
/**
* Сохранить настройки на сервер
* @param {object} settings - Настройки для сохранения
* @returns {Promise<object>} Сохранённые настройки
*/
export async function saveToServer(settings) {
try {
// Извлечь только поля, которые сервер ожидает
const settingsToSave = {
ift: extractEnvironmentSettings(settings.environments.ift),
psi: extractEnvironmentSettings(settings.environments.psi),
prod: extractEnvironmentSettings(settings.environments.prod)
}
await api.updateSettings(settingsToSave)
appState.setSettings(settings)
console.log('Settings saved to server')
return settings
} catch (error) {
console.error('Failed to save settings to server:', error)
throw error
}
}
/**
* Извлечь только нужные поля для сервера
* @param {object} envSettings - Настройки окружения
* @returns {object} Очищенные настройки для API
*/
export function extractEnvironmentSettings(envSettings) {
return {
apiMode: envSettings.apiMode,
bearerToken: envSettings.bearerToken || null,
systemPlatform: envSettings.systemPlatform || null,
systemPlatformUser: envSettings.systemPlatformUser || null,
platformUserId: envSettings.platformUserId || null,
platformId: envSettings.platformId || null,
withClassify: envSettings.withClassify || false,
resetSessionMode: envSettings.resetSessionMode !== false
}
}
/**
* Получить настройки текущего окружения
* @returns {object} Настройки текущего окружения
*/
export function getCurrentEnvironmentSettings() {
return appState.getCurrentEnvSettings()
}
/**
* Обновить настройки текущего окружения
* @param {object} envSettings - Новые настройки окружения
*/
export function updateCurrentEnvironmentSettings(envSettings) {
const env = appState.getCurrentEnvironment()
appState.updateEnvironmentSettings(env, envSettings)
}
// Export as default object
export default {
loadFromServer,
saveToServer,
extractEnvironmentSettings,
getCurrentEnvironmentSettings,
updateCurrentEnvironmentSettings
}