/** * Settings Service * * Сервис управления настройками пользователя. */ import api from './api-client.js' import appState from '../state/appState.js' import { ENV_NAMES } from '../config.js' /** * Загрузить настройки с сервера * @returns {Promise} Загруженные настройки */ 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} Сохранённые настройки */ 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 }