/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { useEffect, useState } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import { Loader, ToggleSwitch } from "@plane/ui"; // components import { PageWrapper } from "@/components/common/page-wrapper"; // hooks import { useInstance } from "@/hooks/store"; // types import type { Route } from "./+types/page"; // local import { InstanceEmailForm } from "./email-config-form"; const InstanceEmailPage = observer(function InstanceEmailPage(_props: Route.ComponentProps) { // store const { fetchInstanceConfigurations, formattedConfig, disableEmail } = useInstance(); const { isLoading } = useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations()); const [isSubmitting, setIsSubmitting] = useState(false); const [isSMTPEnabled, setIsSMTPEnabled] = useState(false); const handleToggle = async () => { if (isSMTPEnabled) { setIsSubmitting(true); try { await disableEmail(); setIsSMTPEnabled(false); setToast({ title: "Почта отключена", message: "Отправка писем через SMTP отключена", type: TOAST_TYPE.SUCCESS, }); } catch (_error) { setToast({ title: "Не удалось отключить почту", message: "Повторите попытку.", type: TOAST_TYPE.ERROR, }); } finally { setIsSubmitting(false); } return; } setIsSMTPEnabled(true); }; useEffect(() => { if (formattedConfig) { setIsSMTPEnabled(formattedConfig.ENABLE_SMTP === "1"); } }, [formattedConfig]); return ( NODE.DC может отправлять системные письма пользователям через ваш SMTP-сервер.
Заполните параметры ниже и проверьте отправку перед сохранением.  Ошибки в конфигурации приводят к отказам доставки.
), actions: isLoading ? ( ) : ( ), }} > {isSMTPEnabled && !isLoading && ( <> {formattedConfig ? ( ) : ( )} )}
); }); export const meta: Route.MetaFunction = () => [{ title: "Настройки почты - NODE.DC" }]; export default InstanceEmailPage;