Files
mkd/services/settingsService.ts

78 lines
2.2 KiB
TypeScript
Raw Permalink Normal View History

2026-02-04 00:17:04 +05:00
/**
* Сервис для работы с настройками интеграций
* Хранит настройки в localStorage
*/
export interface DomaAISettings {
apiUrl: string;
/**
* Токен доступа к Doma AI (предпочтительный способ авторизации)
*/
token?: string;
/**
* Резервные поля для авторизации по логину/паролю (fallback)
*/
email?: string;
phone?: string;
password?: string;
}
export interface IntegrationSettings {
domaAI: DomaAISettings;
}
const SETTINGS_KEY = 'mkd_integration_settings';
export const settingsService = {
/**
* Получить настройки интеграций
*/
getIntegrationSettings(): IntegrationSettings | null {
try {
const stored = localStorage.getItem(SETTINGS_KEY);
if (stored) {
return JSON.parse(stored);
}
return null;
} catch (e) {
console.error('[settingsService] Ошибка при чтении настроек:', e);
return null;
}
},
/**
* Сохранить настройки интеграций
*/
saveIntegrationSettings(settings: IntegrationSettings): void {
try {
localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));
} catch (e) {
console.error('[settingsService] Ошибка при сохранении настроек:', e);
}
},
/**
* Получить настройки Дома.АИ
*/
getDomaAISettings(): DomaAISettings | null {
const settings = this.getIntegrationSettings();
return settings?.domaAI || null;
},
/**
* Сохранить настройки Дома.АИ
*/
saveDomaAISettings(domaAISettings: DomaAISettings): void {
const currentSettings = this.getIntegrationSettings() || { domaAI: domaAISettings };
currentSettings.domaAI = domaAISettings;
this.saveIntegrationSettings(currentSettings);
},
/**
* Очистить настройки интеграций
*/
clearIntegrationSettings(): void {
localStorage.removeItem(SETTINGS_KEY);
},
};