Files
standardnotes-app-web/packages/snjs/lib/Services/Settings/SettingsList.ts

34 lines
930 B
TypeScript

import { SettingData } from '@standardnotes/responses'
import {
MuteSignInEmailsOption,
MuteFailedBackupsEmailsOption,
EmailBackupFrequency,
ListedAuthorSecretsData,
LogSessionUserAgentOption,
SettingName,
MuteMarketingEmailsOption,
} from '@standardnotes/settings'
type SettingType =
| EmailBackupFrequency
| ListedAuthorSecretsData
| LogSessionUserAgentOption
| MuteFailedBackupsEmailsOption
| MuteSignInEmailsOption
| MuteMarketingEmailsOption
export class SettingsList {
private map: Partial<Record<string, SettingData>> = {}
constructor(settings: SettingData[]) {
for (const setting of settings) {
this.map[setting.name] = setting
}
}
getSettingValue<T = SettingType, D = SettingType>(settingName: SettingName, defaultValue: D): T {
const settingData = this.map[settingName.value]
return (settingData?.value as unknown as T) || (defaultValue as unknown as T)
}
}