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

118 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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
}