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