diff --git a/public/locales/en-GB/app.json b/public/locales/en-GB/app.json
index fe52c85f..389eeb70 100644
--- a/public/locales/en-GB/app.json
+++ b/public/locales/en-GB/app.json
@@ -8,6 +8,7 @@
"{{name}} is talking…": "{{name}} is talking…",
"{{names}}, {{name}}": "{{names}}, {{name}}",
"{{roomName}} - Walkie-talkie call": "{{roomName}} - Walkie-talkie call",
+ "<0>0><1>1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call.": "<0>0><1>1>You may withdraw consent by unchecking this box. If you are currently in a call, this setting will take effect at the end of the call.",
"<0>Already have an account?0><1><0>Log in0> Or <2>Access as a guest2>1>": "<0>Already have an account?0><1><0>Log in0> Or <2>Access as a guest2>1>",
"<0>Create an account0> Or <2>Access as a guest2>": "<0>Create an account0> Or <2>Access as a guest2>",
"<0>Join call now0><1>Or1><2>Copy call link and join later2>": "<0>Join call now0><1>Or1><2>Copy call link and join later2>",
@@ -21,7 +22,7 @@
"Avatar": "Avatar",
"By clicking \"Go\", you agree to our <2>Terms and conditions2>": "By clicking \"Go\", you agree to our <2>Terms and conditions2>",
"By clicking \"Join call now\", you agree to our <2>Terms and conditions2>": "By clicking \"Join call now\", you agree to our <2>Terms and conditions2>",
- "By ticking this box you consent to the collection of anonymous data, which we use to improve your experience. You can find more information about which data we track in our ": "By ticking this box you consent to the collection of anonymous data, which we use to improve your experience. You can find more information about which data we track in our ",
+ "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy2> and our <5>Cookie Policy5>.": "By participating in this beta, you consent to the collection of anonymous data, which we use to improve the product. You can find more information about which data we track in our <2>Privacy Policy2> and our <5>Cookie Policy5>.",
"Call link copied": "Call link copied",
"Call type menu": "Call type menu",
"Camera": "Camera",
@@ -85,7 +86,6 @@
"Press and hold spacebar to talk over {{name}}": "Press and hold spacebar to talk over {{name}}",
"Press and hold to talk": "Press and hold to talk",
"Press and hold to talk over {{name}}": "Press and hold to talk over {{name}}",
- "Privacy Policy": "Privacy Policy",
"Profile": "Profile",
"Recaptcha dismissed": "Recaptcha dismissed",
"Recaptcha not loaded": "Recaptcha not loaded",
diff --git a/src/analytics/AnalyticsNotice.tsx b/src/analytics/AnalyticsNotice.tsx
new file mode 100644
index 00000000..feceef76
--- /dev/null
+++ b/src/analytics/AnalyticsNotice.tsx
@@ -0,0 +1,14 @@
+import React, { FC } from "react";
+import { Trans } from "react-i18next";
+
+import { Link } from "../typography/Typography";
+
+export const AnalyticsNotice: FC = () => (
+
+ By participating in this beta, you consent to the collection of anonymous
+ data, which we use to improve the product. You can find more information
+ about which data we track in our{" "}
+ Privacy Policy and our{" "}
+ Cookie Policy.
+
+);
diff --git a/src/analytics/AnalyticsOptInDescription.tsx b/src/analytics/AnalyticsOptInDescription.tsx
deleted file mode 100644
index 46727f5f..00000000
--- a/src/analytics/AnalyticsOptInDescription.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import { t } from "i18next";
-import React from "react";
-
-import { Link } from "../typography/Typography";
-
-export const optInDescription: () => JSX.Element = () => {
- return (
- <>
- <>
- {t(
- "By ticking this box you consent to the collection of anonymous data, which we use to improve your experience. You can find more information about which data we track in our "
- )}
- >
-
- <>{t("Privacy Policy")}>
-
- .
- >
- );
-};
diff --git a/src/form/Form.tsx b/src/form/Form.tsx
index beea4c86..fd98a62a 100644
--- a/src/form/Form.tsx
+++ b/src/form/Form.tsx
@@ -15,14 +15,14 @@ limitations under the License.
*/
import classNames from "classnames";
-import React, { FormEventHandler, forwardRef } from "react";
+import React, { FormEventHandler, forwardRef, ReactNode } from "react";
import styles from "./Form.module.css";
interface FormProps {
className: string;
onSubmit: FormEventHandler;
- children: JSX.Element[];
+ children: ReactNode[];
}
export const Form = forwardRef(
diff --git a/src/home/RegisteredView.module.css b/src/home/RegisteredView.module.css
index ae43b5bc..a96bd53b 100644
--- a/src/home/RegisteredView.module.css
+++ b/src/home/RegisteredView.module.css
@@ -37,3 +37,7 @@ limitations under the License.
.recentCallsTitle {
margin-bottom: 32px;
}
+
+.notice {
+ color: var(--secondary-content);
+}
diff --git a/src/home/RegisteredView.tsx b/src/home/RegisteredView.tsx
index a6278c2e..06a6720c 100644
--- a/src/home/RegisteredView.tsx
+++ b/src/home/RegisteredView.tsx
@@ -39,11 +39,11 @@ import { CallList } from "./CallList";
import { UserMenuContainer } from "../UserMenuContainer";
import { useModalTriggerState } from "../Modal";
import { JoinExistingCallModal } from "./JoinExistingCallModal";
-import { Title } from "../typography/Typography";
+import { Caption, Title } from "../typography/Typography";
import { Form } from "../form/Form";
import { CallType, CallTypeDropdown } from "./CallTypeDropdown";
import { useOptInAnalytics } from "../settings/useSetting";
-import { optInDescription } from "../analytics/AnalyticsOptInDescription";
+import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
interface Props {
client: MatrixClient;
@@ -54,7 +54,7 @@ export function RegisteredView({ client, isPasswordlessUser }: Props) {
const [callType, setCallType] = useState(CallType.Video);
const [loading, setLoading] = useState(false);
const [error, setError] = useState();
- const [optInAnalytics, setOptInAnalytics] = useOptInAnalytics();
+ const [optInAnalytics] = useOptInAnalytics();
const history = useHistory();
const { t } = useTranslation();
const { modalState, modalProps } = useModalTriggerState();
@@ -144,15 +144,11 @@ export function RegisteredView({ client, isPasswordlessUser }: Props) {
{loading ? t("Loading…") : t("Go")}
- ) =>
- setOptInAnalytics(event.target.checked)
- }
- />
+ {optInAnalytics === null && (
+