import React, {useEffect, useState} from "react"; import withConfigPage from "Frontend/components/administration/withConfigPage"; import ConfigFormField from "Frontend/components/administration/ConfigFormField"; import Section from "Frontend/components/general/Section"; import {addToast, Button, Card, Tooltip, useDisclosure} from "@heroui/react"; import {MessageEndpoint, MessageTemplateEndpoint} from "Frontend/generated/endpoints"; import {PaperPlaneRight, Pencil} from "@phosphor-icons/react"; import MessageTemplateDto from "Frontend/generated/org/gameyfin/app/messages/templates/MessageTemplateDto"; import SendTestNotificationModal from "Frontend/components/administration/messages/SendTestNotificationModal"; import EditTemplateModal from "Frontend/components/administration/messages/EditTemplateModel"; import * as Yup from "yup"; function MessageManagementLayout({getConfig, formik}: any) { const editorModal = useDisclosure(); const testNotificationModal = useDisclosure(); const [availableTemplates, setAvailableTemplates] = useState([]); const [selectedTemplate, setSelectedTemplate] = useState(); useEffect(() => { MessageTemplateEndpoint.getAll().then((response: any) => { setAvailableTemplates(response as MessageTemplateDto[]); }); }, []); async function verifyCredentials(provider: string) { const credentials: Record = { host: formik.values.messages.providers.email.host, port: formik.values.messages.providers.email.port, username: formik.values.messages.providers.email.username, password: formik.values.messages.providers.email.password } const areCredentialsValid = await MessageEndpoint.verifyCredentials(provider, credentials); if (areCredentialsValid) { addToast({ title: "Credentials are valid", color: "success" }); } else { addToast({ title: "Credentials are invalid", color: "warning" }); } } async function openEditor(template: MessageTemplateDto) { setSelectedTemplate(template); editorModal.onOpen(); } function openTestNotification(template: MessageTemplateDto) { setSelectedTemplate(template); testNotificationModal.onOpen(); } return (
{availableTemplates.map((template: MessageTemplateDto) =>

{template.description}

)}
); } const validationSchema = Yup.object({ messages: Yup.object({ providers: Yup.object({ email: Yup.object({ enabled: Yup.boolean().required("Required"), host: Yup.string().required("Host is required"), port: Yup.number().required("Port is required") .min(0, "Port must be between 0 and 65535") .max(65535, "Port must be between 0 and 65535"), username: Yup.string() .email("Invalid email address") .required("Username is required"), }) }) }) }); export const MessageManagement = withConfigPage(MessageManagementLayout, "Messages", validationSchema);