Files
ThreadNet-Web/src/components/views/dialogs/AnalyticsLearnMoreDialog.tsx
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

107 lines
3.4 KiB
TypeScript
Raw Normal View History

2021-12-06 09:39:33 +11:00
/*
2024-09-09 14:57:16 +01:00
Copyright 2024 New Vector Ltd.
2021-12-06 09:39:33 +11:00
Copyright 2021 The Matrix.org Foundation C.I.C.
2024-09-09 14:57:16 +01:00
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
2021-12-06 09:39:33 +11:00
*/
2021-12-09 09:10:23 +00:00
import React from "react";
2021-12-06 09:39:33 +11:00
import BaseDialog from "./BaseDialog";
import { _t } from "../../../languageHandler";
import DialogButtons from "../elements/DialogButtons";
import Modal, { ComponentProps } from "../../../Modal";
2021-12-06 09:39:33 +11:00
import SdkConfig from "../../../SdkConfig";
2022-06-14 17:51:51 +01:00
import { getPolicyUrl } from "../../../toasts/AnalyticsToast";
import ExternalLink from "../elements/ExternalLink";
2021-12-06 09:39:33 +11:00
export enum ButtonClicked {
Primary,
Cancel,
}
interface IProps {
onFinished(buttonClicked?: ButtonClicked): void;
2021-12-06 09:39:33 +11:00
analyticsOwner: string;
privacyPolicyUrl?: string;
primaryButton?: string;
cancelButton?: string;
hasCancel?: boolean;
}
2022-07-11 07:52:44 +02:00
export const AnalyticsLearnMoreDialog: React.FC<IProps> = ({
2021-12-06 09:39:33 +11:00
onFinished,
analyticsOwner,
privacyPolicyUrl,
primaryButton,
cancelButton,
hasCancel,
}) => {
const onPrimaryButtonClick = (): void => onFinished(ButtonClicked.Primary);
const onCancelButtonClick = (): void => onFinished(ButtonClicked.Cancel);
2021-12-06 09:39:33 +11:00
const privacyPolicyLink = privacyPolicyUrl ? (
<span>
{_t(
"analytics|privacy_policy",
2021-12-06 09:39:33 +11:00
{},
{
PrivacyPolicyUrl: (sub) => {
return (
<ExternalLink href={privacyPolicyUrl} rel="norefferer noopener" target="_blank">
2021-12-06 09:39:33 +11:00
{sub}
</ExternalLink>
2021-12-06 09:39:33 +11:00
);
},
},
)}
</span>
) : (
""
);
return (
<BaseDialog
className="mx_AnalyticsLearnMoreDialog"
contentId="mx_AnalyticsLearnMore"
title={_t("analytics|enable_prompt", { analyticsOwner })}
2021-12-06 09:39:33 +11:00
onFinished={onFinished}
>
<div className="mx_Dialog_content">
<div className="mx_AnalyticsLearnMore_image_holder" />
<div className="mx_AnalyticsLearnMore_copy">
{_t("analytics|pseudonymous_usage_data", { analyticsOwner })}
2022-12-12 12:24:14 +01:00
</div>
2021-12-06 09:39:33 +11:00
<ul className="mx_AnalyticsLearnMore_bullets">
<li>{_t("analytics|bullet_1", {}, { Bold: (sub) => <strong>{sub}</strong> })}</li>
<li>{_t("analytics|bullet_2", {}, { Bold: (sub) => <strong>{sub}</strong> })}</li>
<li>{_t("analytics|disable_prompt")}</li>
2022-12-12 12:24:14 +01:00
</ul>
2021-12-06 09:39:33 +11:00
{privacyPolicyLink}
</div>
<DialogButtons
primaryButton={primaryButton}
cancelButton={cancelButton}
onPrimaryButtonClick={onPrimaryButtonClick}
onCancel={onCancelButtonClick}
hasCancel={hasCancel}
/>
</BaseDialog>
);
};
export const showDialog = (
props: Omit<ComponentProps<typeof AnalyticsLearnMoreDialog>, "cookiePolicyUrl" | "analyticsOwner">,
): void => {
2022-06-14 17:51:51 +01:00
const privacyPolicyUrl = getPolicyUrl();
const analyticsOwner = SdkConfig.get("analytics_owner") ?? SdkConfig.get("brand");
2022-06-14 17:51:51 +01:00
Modal.createDialog(
AnalyticsLearnMoreDialog,
{
privacyPolicyUrl,
analyticsOwner,
...props,
},
"mx_AnalyticsLearnMoreDialog_wrapper",
);
2021-12-06 09:39:33 +11:00
};