Add way to create a user notice via config.json (#9559)

This commit is contained in:
Michael Telatynski 2022-11-09 10:50:01 +00:00 committed by GitHub
parent 985119dcfe
commit 848adfdc10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 0 deletions

View File

@ -183,6 +183,12 @@ export interface IConfigOptions {
// length per voice chunk in seconds // length per voice chunk in seconds
chunk_length?: number; chunk_length?: number;
}; };
user_notice?: {
title: string;
description: string;
show_once?: boolean;
};
} }
export interface ISsoRedirectOptions { export interface ISsoRedirectOptions {

View File

@ -139,6 +139,8 @@ import { isLocalRoom } from '../../utils/localRoom/isLocalRoom';
import { SdkContextClass, SDKContext } from '../../contexts/SDKContext'; import { SdkContextClass, SDKContext } from '../../contexts/SDKContext';
import { viewUserDeviceSettings } from '../../actions/handlers/viewUserDeviceSettings'; import { viewUserDeviceSettings } from '../../actions/handlers/viewUserDeviceSettings';
import { VoiceBroadcastResumer } from '../../voice-broadcast'; import { VoiceBroadcastResumer } from '../../voice-broadcast';
import GenericToast from "../views/toasts/GenericToast";
import { Linkify } from "../views/elements/Linkify";
// legacy export // legacy export
export { default as Views } from "../../Views"; export { default as Views } from "../../Views";
@ -1332,6 +1334,28 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
// check if it has been dismissed before, etc. // check if it has been dismissed before, etc.
showMobileGuideToast(); showMobileGuideToast();
} }
const userNotice = SdkConfig.get("user_notice");
if (userNotice) {
const key = "user_notice_" + userNotice.title;
if (!userNotice.show_once || !localStorage.getItem(key)) {
ToastStore.sharedInstance().addOrReplaceToast({
key,
title: userNotice.title,
props: {
description: <Linkify>{ userNotice.description }</Linkify>,
acceptLabel: _t("OK"),
onAccept: () => {
ToastStore.sharedInstance().dismissToast(key);
localStorage.setItem(key, "1");
},
},
component: GenericToast,
className: "mx_AnalyticsToast",
priority: 100,
});
}
}
} }
private initPosthogAnalyticsToast() { private initPosthogAnalyticsToast() {