238 lines
5.5 KiB
TypeScript
238 lines
5.5 KiB
TypeScript
export type SettingId = string;
|
|
export type GroupId = SettingId;
|
|
export type TabId = SettingId;
|
|
export type SectionName = string;
|
|
|
|
export enum SettingEditor {
|
|
COLOR = 'color',
|
|
EXPRESSION = 'expression'
|
|
}
|
|
type AssetValue = { defaultUrl?: string };
|
|
export type SettingValueMultiSelect = (string | number)[];
|
|
export type SettingValueRoomPick = Array<{ _id: string; name: string }> | string;
|
|
export type SettingValue = string | boolean | number | SettingValueMultiSelect | Date | AssetValue | undefined;
|
|
|
|
export interface ISettingSelectOption {
|
|
key: string | number;
|
|
i18nLabel: string;
|
|
}
|
|
|
|
export type ISetting = ISettingBase | ISettingEnterprise | ISettingColor | ISettingCode | ISettingAction;
|
|
|
|
export interface ISettingBase {
|
|
_id: SettingId;
|
|
type:
|
|
| 'boolean'
|
|
| 'timezone'
|
|
| 'string'
|
|
| 'relativeUrl'
|
|
| 'password'
|
|
| 'int'
|
|
| 'select'
|
|
| 'multiSelect'
|
|
| 'language'
|
|
| 'color'
|
|
| 'font'
|
|
| 'code'
|
|
| 'action'
|
|
| 'asset'
|
|
| 'roomPick'
|
|
| 'group'
|
|
| 'date';
|
|
public: boolean;
|
|
env: boolean;
|
|
group?: GroupId;
|
|
section?: SectionName;
|
|
tab?: TabId;
|
|
i18nLabel: string;
|
|
value: SettingValue;
|
|
packageValue: SettingValue;
|
|
blocked: boolean;
|
|
// enableQuery?: string | FilterQuery<ISetting> | FilterQuery<ISetting>[];
|
|
// displayQuery?: string | FilterQuery<ISetting> | FilterQuery<ISetting>[];
|
|
sorter: number;
|
|
properties?: unknown;
|
|
enterprise?: boolean;
|
|
requiredOnWizard?: boolean;
|
|
hidden?: boolean;
|
|
modules?: Array<string>;
|
|
invalidValue?: SettingValue;
|
|
valueSource?: string;
|
|
secret?: boolean;
|
|
i18nDescription?: string;
|
|
autocomplete?: boolean;
|
|
processEnvValue?: SettingValue;
|
|
meteorSettingsValue?: SettingValue;
|
|
ts: Date;
|
|
createdAt: Date;
|
|
_updatedAt?: Date;
|
|
multiline?: boolean;
|
|
values?: Array<ISettingSelectOption>;
|
|
placeholder?: string;
|
|
wizard?: {
|
|
step: number;
|
|
order: number;
|
|
} | null;
|
|
persistent?: boolean; // todo: remove
|
|
readonly?: boolean; // todo: remove
|
|
alert?: string; // todo: check if this is still used
|
|
private?: boolean; // todo: remove
|
|
}
|
|
|
|
export interface ISettingGroup {
|
|
_id: string;
|
|
hidden: boolean;
|
|
blocked: boolean;
|
|
ts?: Date;
|
|
sorter: number;
|
|
i18nLabel: string;
|
|
// displayQuery?: string | FilterQuery<ISetting> | FilterQuery<ISetting>[];
|
|
i18nDescription: string;
|
|
value?: undefined;
|
|
type: 'group';
|
|
|
|
alert?: string; // todo: check if this is needed
|
|
}
|
|
|
|
export interface ISettingEnterprise extends ISettingBase {
|
|
enterprise: true;
|
|
invalidValue: SettingValue;
|
|
}
|
|
|
|
export interface ISettingColor extends ISettingBase {
|
|
type: 'color';
|
|
editor: SettingEditor;
|
|
packageEditor?: SettingEditor;
|
|
}
|
|
export interface ISettingCode extends ISettingBase {
|
|
type: 'code';
|
|
code?: string;
|
|
}
|
|
|
|
export interface ISettingAction extends ISettingBase {
|
|
type: 'action';
|
|
value: string;
|
|
actionText?: string;
|
|
}
|
|
export interface ISettingAsset extends ISettingBase {
|
|
type: 'asset';
|
|
value: AssetValue;
|
|
}
|
|
|
|
export interface ISettingDate extends ISettingBase {
|
|
type: 'date';
|
|
value: Date;
|
|
}
|
|
|
|
export const isDateSetting = (setting: ISetting): setting is ISettingDate => setting.type === 'date';
|
|
|
|
export const isSettingEnterprise = (setting: ISettingBase): setting is ISettingEnterprise => setting.enterprise === true;
|
|
|
|
export const isSettingColor = (setting: ISettingBase): setting is ISettingColor => setting.type === 'color';
|
|
|
|
export const isSettingCode = (setting: ISettingBase): setting is ISettingCode => setting.type === 'code';
|
|
|
|
export const isSettingAction = (setting: ISettingBase): setting is ISettingAction => setting.type === 'action';
|
|
|
|
export const isSettingAsset = (setting: ISettingBase): setting is ISettingAsset => setting.type === 'asset';
|
|
|
|
export interface ISettingStatistics {
|
|
account2fa?: boolean;
|
|
cannedResponsesEnabled?: boolean;
|
|
e2e?: boolean;
|
|
e2eDefaultDirectRoom?: boolean;
|
|
e2eDefaultPrivateRoom?: boolean;
|
|
smtpHost?: string;
|
|
smtpPort?: string;
|
|
fromEmail?: string;
|
|
frameworkDevMode?: boolean;
|
|
frameworkEnable?: boolean;
|
|
surveyEnabled?: boolean;
|
|
updateChecker?: boolean;
|
|
liveStream?: boolean;
|
|
broadcasting?: boolean;
|
|
allowEditing?: boolean;
|
|
allowDeleting?: boolean;
|
|
allowUnrecognizedSlashCommand?: boolean;
|
|
allowBadWordsFilter?: boolean;
|
|
readReceiptEnabled?: boolean;
|
|
readReceiptStoreUsers?: boolean;
|
|
otrEnable?: boolean;
|
|
pushEnable?: boolean;
|
|
globalSearchEnabled?: boolean;
|
|
threadsEnabled?: boolean;
|
|
bigBlueButton?: boolean;
|
|
jitsiEnabled?: boolean;
|
|
webRTCEnableChannel?: boolean;
|
|
webRTCEnablePrivate?: boolean;
|
|
webRTCEnableDirect?: boolean;
|
|
}
|
|
|
|
export interface ISettingStatisticsObject {
|
|
accounts?: {
|
|
account2fa?: boolean;
|
|
};
|
|
cannedResponses?: {
|
|
cannedResponsesEnabled?: boolean;
|
|
};
|
|
e2ee?: {
|
|
e2e?: boolean;
|
|
e2eDefaultDirectRoom?: boolean;
|
|
e2eDefaultPrivateRoom?: boolean;
|
|
};
|
|
email?: {
|
|
smtp?: {
|
|
smtpHost?: string;
|
|
smtpPort?: string;
|
|
fromEmail?: string;
|
|
};
|
|
};
|
|
general?: {
|
|
apps?: {
|
|
frameworkDevMode?: boolean;
|
|
frameworkEnable?: boolean;
|
|
};
|
|
nps?: {
|
|
surveyEnabled?: boolean;
|
|
};
|
|
update?: {
|
|
updateChecker?: boolean;
|
|
};
|
|
};
|
|
liveStreamAndBroadcasting?: {
|
|
liveStream?: boolean;
|
|
broadcasting?: boolean;
|
|
};
|
|
message?: {
|
|
allowEditing?: boolean;
|
|
allowDeleting?: boolean;
|
|
allowUnrecognizedSlashCommand?: boolean;
|
|
allowBadWordsFilter?: boolean;
|
|
readReceiptEnabled?: boolean;
|
|
readReceiptStoreUsers?: boolean;
|
|
};
|
|
otr?: {
|
|
otrEnable?: boolean;
|
|
};
|
|
push?: {
|
|
pushEnable?: boolean;
|
|
};
|
|
search?: {
|
|
defaultProvider?: {
|
|
globalSearchEnabled?: boolean;
|
|
};
|
|
};
|
|
threads?: {
|
|
threadsEnabled?: boolean;
|
|
};
|
|
videoConference?: {
|
|
bigBlueButton?: boolean;
|
|
jitsiEnabled?: boolean;
|
|
};
|
|
webRTC?: {
|
|
webRTCEnableChannel?: boolean;
|
|
webRTCEnablePrivate?: boolean;
|
|
webRTCEnableDirect?: boolean;
|
|
};
|
|
}
|