/* Copyright 2022-2024 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only Please see LICENSE in the repository root for full details. */ import { type ChangeEvent, type FC, useCallback } from "react"; import { randomString } from "matrix-js-sdk/src/randomstring"; import { Trans, useTranslation } from "react-i18next"; import { Button, Text } from "@vector-im/compound-web"; import { logger } from "matrix-js-sdk/src/logger"; import { FieldRow, InputField, ErrorMessage } from "../input/Input"; import { useSubmitRageshake, useRageshakeRequest } from "./submit-rageshake"; import feedbackStyles from "../input/FeedbackInput.module.css"; import { AnalyticsNotice } from "../analytics/AnalyticsNotice"; import { useOptInAnalytics } from "./settings"; interface Props { roomId?: string; } export const FeedbackSettingsTab: FC = ({ roomId }) => { const { t } = useTranslation(); const { submitRageshake, sending, sent, error } = useSubmitRageshake(); const sendRageshakeRequest = useRageshakeRequest(); const onSubmitFeedback = useCallback( // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore (e) => { e.preventDefault(); const data = new FormData(e.target); const descriptionData = data.get("description"); const description = typeof descriptionData === "string" ? descriptionData : ""; const sendLogs = Boolean(data.get("sendLogs")); const rageshakeRequestId = randomString(16); submitRageshake({ description, sendLogs, rageshakeRequestId, roomId, }).catch((e) => { logger.error("Failed to send feedback rageshake", e); }); if (roomId && sendLogs) { sendRageshakeRequest(roomId, rageshakeRequestId); } }, [submitRageshake, roomId, sendRageshakeRequest], ); const [optInAnalytics, setOptInAnalytics] = useOptInAnalytics(); const optInDescription = (
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.
); return (

{t("common.analytics")}

): void => { setOptInAnalytics?.(event.target.checked); }} />

{t("settings.feedback_tab_h4")}

{t("settings.feedback_tab_body")}
{!sent && ( )} {error && } {sent && {t("settings.feedback_tab_thank_you")}}
); };