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

44 lines
1.2 KiB
TypeScript

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