Files
standardnotes-app-web/packages/snjs/lib/Services/Settings/SNSettingsService.ts
Antonella Sgarlatta 2338449425 chore: generate mfa secret in backend (#2930) [skip e2e]
* chore: get mfa secret from backend

* chore: remove unused code
2025-09-12 14:34:51 -03:00

81 lines
2.6 KiB
TypeScript

import { LegacyApiService } from '../Api/ApiService'
import { SettingsGateway } from './SettingsGateway'
import { SessionManager } from '../Session/SessionManager'
import { EmailBackupFrequency } from '@standardnotes/settings'
import { AbstractService, InternalEventBusInterface } from '@standardnotes/services'
import { SettingsClientInterface } from './SettingsClientInterface'
import { SettingName } from '@standardnotes/domain-core'
export class SettingsService extends AbstractService implements SettingsClientInterface {
private provider!: SettingsGateway
private frequencyOptionsLabels = {
[EmailBackupFrequency.Disabled]: 'No email backups',
[EmailBackupFrequency.Daily]: 'Daily',
[EmailBackupFrequency.Weekly]: 'Weekly',
}
constructor(
private readonly sessionManager: SessionManager,
private readonly apiService: LegacyApiService,
protected override internalEventBus: InternalEventBusInterface,
) {
super(internalEventBus)
}
initializeFromDisk(): void {
this.provider = new SettingsGateway(this.apiService, this.sessionManager)
}
async listSettings() {
return this.provider.listSettings()
}
async getSetting(name: SettingName, serverPassword?: string) {
return this.provider.getSetting(name, serverPassword)
}
async getSubscriptionSetting(name: SettingName) {
return this.provider.getSubscriptionSetting(name)
}
async updateSubscriptionSetting(name: SettingName, payload: string, sensitive = false) {
return this.provider.updateSubscriptionSetting(name, payload, sensitive)
}
async updateSetting(name: SettingName, payload: string, sensitive = false, totpToken?: string) {
return this.provider.updateSetting(name, payload, sensitive, totpToken)
}
async getDoesSensitiveSettingExist(name: SettingName) {
return this.provider.getDoesSensitiveSettingExist(name)
}
async deleteSetting(name: SettingName, serverPassword?: string) {
return this.provider.deleteSetting(name, serverPassword)
}
async generateMfaSecret(): Promise<string> {
return this.provider.getMfaSecret()
}
async updateMfaSetting(secret: string, totpToken: string): Promise<void> {
return this.provider.updateSetting(
SettingName.create(SettingName.NAMES.MfaSecret).getValue(),
secret,
true,
totpToken,
)
}
getEmailBackupFrequencyOptionLabel(frequency: EmailBackupFrequency): string {
return this.frequencyOptionsLabels[frequency]
}
override deinit(): void {
this.provider?.deinit()
;(this.provider as unknown) = undefined
;(this.sessionManager as unknown) = undefined
;(this.apiService as unknown) = undefined
}
}