118 lines
3.5 KiB
JavaScript
118 lines
3.5 KiB
JavaScript
/**
|
||
* 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
|
||
}
|