import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service'; import { StateService } from '../abstractions/state.service'; const Keys = { settingsPrefix: 'settings_', equivalentDomains: 'equivalentDomains', }; export class SettingsService implements SettingsServiceAbstraction { constructor(private stateService: StateService) { } async clearCache(): Promise { await this.stateService.setSettings(null); } getEquivalentDomains(): Promise { return this.getSettingsKey(Keys.equivalentDomains); } async setEquivalentDomains(equivalentDomains: string[][]): Promise { await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains); } async clear(userId?: string): Promise { await this.stateService.setSettings(null, { userId: userId }); } // Helpers private async getSettings(): Promise { await this.clearCache(); } private async getSettingsKey(key: string): Promise { const settings = await this.getSettings(); if (settings != null && settings[key]) { return settings[key]; } return null; } private async setSettingsKey(key: string, value: any): Promise { let settings = await this.getSettings(); if (!settings) { settings = {}; } settings[key] = value; await this.stateService.setSettings(settings); } }