/** * 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: "Email feature disabled", message: "Email feature has been disabled", type: TOAST_TYPE.SUCCESS, }); } catch (_error) { setToast({ title: "Error disabling email", message: "Failed to disable email feature. Please try again.", type: TOAST_TYPE.ERROR, }); } finally { setIsSubmitting(false); } return; } setIsSMTPEnabled(true); }; useEffect(() => { if (formattedConfig) { setIsSMTPEnabled(formattedConfig.ENABLE_SMTP === "1"); } }, [formattedConfig]); return ( Plane can send useful emails to you and your users from your own instance without talking to the Internet.
Set it up below and please test your settings before you save them.  Misconfigs can lead to email bounces and errors.
), actions: isLoading ? ( ) : ( ), }} > {isSMTPEnabled && !isLoading && ( <> {formattedConfig ? ( ) : ( )} )}
); }); export const meta: Route.MetaFunction = () => [{ title: "Email Settings - God Mode" }]; export default InstanceEmailPage;