//Lib import { useEffect } from 'react'; import { toast } from 'react-toastify'; import 'react-toastify/dist/ReactToastify.css'; import classes from '../../UserSettings.module.css'; import { useState } from 'react'; import { SpinnerCircularFixed } from 'spinners-react'; import { useForm } from 'react-hook-form'; //Components import Error from '../../../../Components/UI/Error/Error'; export default function AppriseMode() { //Var const { register, handleSubmit, formState: { errors }, } = useForm({ mode: 'onBlur' }); ////State const [formIsLoading, setFormIsLoading] = useState(false); const [modeFormIsSaved, setModeFormIsSaved] = useState(false); const [error, setError] = useState(false); const [displayStatelessURL, setDisplayStatelessURL] = useState(false); const [appriseMode, setAppriseMode] = useState(''); const [appriseStatelessURL, setAppriseStatelessURL] = useState(); ////LifeCycle //Component did mount useEffect(() => { //Initial fetch to get Apprise Mode enabled const getAppriseMode = async () => { try { const response = await fetch('/api/account/getAppriseMode', { method: 'GET', headers: { 'Content-type': 'application/json', }, }); const { appriseStatelessURL, appriseMode } = await response.json(); setAppriseMode(appriseMode); if (appriseMode == 'stateless') { setAppriseStatelessURL(appriseStatelessURL); setDisplayStatelessURL(true); } } catch (error) { console.log('Fetching Apprise Mode failed.'); } }; getAppriseMode(); }, []); ////Functions //Form submit handler to modify Apprise Mode const modeFormSubmitHandler = async (data) => { //Remove old error setError(); //Loading button on submit to avoid multiple send. setFormIsLoading(true); //POST API to update Apprise Mode const response = await fetch('/api/account/updateAppriseMode', { method: 'PUT', headers: { 'Content-type': 'application/json', }, body: JSON.stringify(data), }); const result = await response.json(); if (!response.ok) { setFormIsLoading(false); setError(result.message); setTimeout(() => setError(), 4000); } else { setFormIsLoading(false); setModeFormIsSaved(true); setTimeout(() => setModeFormIsSaved(false), 3000); } }; return ( <> {/* APPRISE MODE SELECTION */}
Apprise mode
{formIsLoading && ( )} {modeFormIsSaved && (
✅ Apprise mode has been saved.
)}
{error && }
{displayStatelessURL && ( )} {errors.appriseStatelessURL && ( {errors.appriseStatelessURL.message} )}
); }