import React from "react"; import { useTranslation } from "react-i18next"; import { BaseModalDescription, BaseModalTitle, } from "../confirmation-modals/base-modal"; import { ModalBody } from "../modal-body"; import { AvailableLanguages } from "#/i18n"; import { I18nKey } from "#/i18n/declaration"; import { useAuth } from "#/context/auth-context"; import { handleCaptureConsent } from "#/utils/handle-capture-consent"; import { ModalButton } from "../../buttons/modal-button"; import { CustomInput } from "../../custom-input"; import { FormFieldset } from "../../form-fieldset"; import { useConfig } from "#/hooks/query/use-config"; import { useCurrentSettings } from "#/context/settings-context"; interface AccountSettingsFormProps { onClose: () => void; selectedLanguage: string; gitHubError: boolean; analyticsConsent: string | null; } export function AccountSettingsForm({ onClose, selectedLanguage, gitHubError, analyticsConsent, }: AccountSettingsFormProps) { const { gitHubToken, setGitHubToken, logout } = useAuth(); const { data: config } = useConfig(); const { saveUserSettings } = useCurrentSettings(); const { t } = useTranslation(); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); const formData = new FormData(event.currentTarget); const ghToken = formData.get("ghToken")?.toString(); const language = formData.get("language")?.toString(); const analytics = formData.get("analytics")?.toString() === "on"; if (ghToken) setGitHubToken(ghToken); // The form returns the language label, so we need to find the corresponding // language key to save it in the settings if (language) { const languageKey = AvailableLanguages.find( ({ label }) => label === language, )?.value; if (languageKey) await saveUserSettings({ LANGUAGE: languageKey }); } handleCaptureConsent(analytics); const ANALYTICS = analytics.toString(); localStorage.setItem("analytics-consent", ANALYTICS); onClose(); }; return (
{config?.APP_MODE === "saas" && config?.APP_SLUG && ( {t(I18nKey.GITHUB$CONFIGURE_REPOS)} )} ({ key, value: label, }))} /> {config?.APP_MODE !== "saas" && ( <> {t(I18nKey.GITHUB$GET_TOKEN)}{" "} {t(I18nKey.COMMON$HERE)} )} {gitHubError && (

{t(I18nKey.GITHUB$TOKEN_INVALID)}

)} {gitHubToken && !gitHubError && ( { logout(); onClose(); }} className="text-danger self-start" /> )}
); }