/
SNSettingsService.ts
67 lines (55 loc) · 2.17 KB
/
SNSettingsService.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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) {
return this.provider.getSetting(name)
}
async getSubscriptionSetting(name: SettingName) {
return this.provider.getSubscriptionSetting(name)
}
async updateSubscriptionSetting(name: SettingName, payload: string, sensitive = false) {
return this.provider.updateSetting(name, payload, sensitive)
}
async updateSetting(name: SettingName, payload: string, sensitive = false) {
return this.provider.updateSetting(name, payload, sensitive)
}
async getDoesSensitiveSettingExist(name: SettingName) {
return this.provider.getDoesSensitiveSettingExist(name)
}
async deleteSetting(name: SettingName) {
return this.provider.deleteSetting(name)
}
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
}
}