HEX
Server: Apache
System: Linux www 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64
User: root (0)
PHP: 8.2.1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals
Upload Files
File: /mnt/drbd/www/edenhouse/wp-content/plugins/essential-blocks/admin/src/components/SaveButton.js
import { useEffect, useState } from "@wordpress/element";
import { __ } from "@wordpress/i18n";

const { saveEBSettingsData } = window.EBControls;

const SaveButton = (props) => {
    const {
        blocks
    } = props;

    const defaultBtntext = "Save Changes";

    useEffect(() => {
        setSaveBtnText(defaultBtntext)
    }, [blocks])

    const [saveBtnText, setSaveBtnText] = useState(defaultBtntext);
    const [isSaving, setIsSaving] = useState(false)
    const [error, setError] = useState("");

    const handleSave = () => {
        setSaveBtnText("Saving...");
        setIsSaving(true);
        saveEBSettingsData('', JSON.stringify(blocks), 'enable_disable').then((data) => {
            const res = JSON.parse(data);
            if (res.success) {
                setSaveBtnText("Saved")
            }
            else {
                setSaveBtnText(defaultBtntext)
                setError(typeof res.data === 'string' ? res.data : "Something went wrong! Please tyr again.")
            }
            setIsSaving(false)
        })
    }

    return (
        <div id="eb-save-admin-options">
            <button
                className="eb-btn eb-btn-border"
                onClick={() => handleSave()}
            >
                {isSaving && (
                    <img className="eb-install-loader" src={`${EssentialBlocksLocalize.eb_plugins_url}/assets/images/loading.svg`} />
                )}
                {__(saveBtnText, "essential-blocks")}
            </button>
        </div>
    )
};

export default SaveButton;