matrix-react-sdk
Version:
SDK for matrix.org using React
69 lines (68 loc) • 2.44 kB
TypeScript
import { ReactNode } from "react";
import { TranslationKey } from "../languageHandler";
import { SettingLevel } from "./SettingLevel";
import SettingController from "./controllers/SettingController";
import { WatchManager } from "./WatchManager";
export declare const defaultWatchManager: WatchManager;
export declare enum LabGroup {
Messaging = 0,
Profile = 1,
Spaces = 2,
Widgets = 3,
Rooms = 4,
Threads = 5,
VoiceAndVideo = 6,
Moderation = 7,
Analytics = 8,
Themes = 9,
Encryption = 10,
Experimental = 11,
Developer = 12,
Ui = 13
}
export declare enum Features {
VoiceBroadcast = "feature_voice_broadcast",
VoiceBroadcastForceSmallChunks = "feature_voice_broadcast_force_small_chunks",
NotificationSettings2 = "feature_notification_settings2",
OidcNativeFlow = "feature_oidc_native_flow",
ReleaseAnnouncement = "feature_release_announcement",
/** If true, use the Rust crypto implementation.
*
* This is no longer read, but we continue to populate it on all devices, to guard against people rolling back to
* old versions of EW that do not use rust crypto by default.
*/
RustCrypto = "feature_rust_crypto"
}
export declare const labGroupNames: Record<LabGroup, TranslationKey>;
export type SettingValueType = boolean | number | string | number[] | string[] | Record<string, unknown> | Record<string, unknown>[] | null;
export interface IBaseSetting<T extends SettingValueType = SettingValueType> {
isFeature?: false | undefined;
displayName?: TranslationKey | Partial<{
[level in SettingLevel]: TranslationKey;
}>;
description?: TranslationKey | (() => ReactNode);
supportedLevels: SettingLevel[];
default: T;
controller?: SettingController;
supportedLevelsAreOrdered?: boolean;
invertedSettingName?: string;
betaInfo?: {
title: TranslationKey;
caption: () => ReactNode;
faq?: (enabled: boolean) => ReactNode;
image?: string;
feedbackSubheading?: TranslationKey;
feedbackLabel?: string;
extraSettings?: string[];
requiresRefresh?: boolean;
};
shouldWarn?: boolean;
}
export interface IFeature extends Omit<IBaseSetting<boolean>, "isFeature"> {
isFeature: true;
labsGroup: LabGroup;
}
export type ISetting = IBaseSetting | IFeature;
export declare const SETTINGS: {
[setting: string]: ISetting;
};