• File: DeactivationModal.js
  • Full Path: /home/docteuh/www/plugins/really-simple-ssl/modal/src/components/DeactivationModal/DeactivationModal.js
  • Date Modified: 06/18/2026 4:25 PM
  • File size: 5 KB
  • MIME-type: text/x-java
  • Charset: utf-8
import {__} from "@wordpress/i18n";
import {useEffect, useState} from "@wordpress/element";

const DeactivationModal = () => {

    const [isOpen, setOpen] = useState(false);
    const [RssslModal, setRssslModal] = useState(false);
    const [targetPluginLink, setTargetPluginLink] = useState(null);
    const isPremium = rsssl_modal.pro_plugin_active;

    useEffect(() => {
        // Dynamically set the targetPluginLink based on isPremium
        const linkId = isPremium ? 'deactivate-really-simple-security-pro' : 'deactivate-really-simple-security';

        const handleDeactivationClick = (event) => {
            const target = event.target.closest(`#${linkId}`);
            if (target) {
                event.preventDefault();
                setTargetPluginLink(target);
                setOpen(true); // Show modal
            }
        };

        // Ensure we intercept the click BEFORE any other handlers
        document.addEventListener('click', handleDeactivationClick, true);

        // Also try to set the link element immediately if it exists
        const linkElement = document.getElementById(linkId);
        if (linkElement) {
            setTargetPluginLink(linkElement);
        }

        // Clean up the event listener
        return () => {
            document.removeEventListener('click', handleDeactivationClick, true);
        };
    }, [isPremium]); // Re-run this effect if isPremium changes

    const deactivateKeepHttps = () => {
        setOpen(false);
        window.location.href = rsssl_modal.deactivate_keep_https;
    };

    const deactivateAndRevert = () => {
        setOpen(false);
        window.location.href = rsssl_modal.deactivate_revert_https;
    };

    useEffect(() => {
        if (!RssslModal && isOpen) {
            import("../Modal/RssslModal").then(({default: LoadedRssslModal}) => {
                setRssslModal(() => LoadedRssslModal);
            });
        }
    }, [isOpen, RssslModal]);

    const content = () => {
        return (
            <>
                {__("Please choose the correct deactivation method, and before you go; you will miss out on below and future features in Really Simple Security", "really-simple-ssl")}
                {isPremium && <> <b>Pro</b></>}
                !
            </>
        );
    };

    const list = isPremium ? [
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("SSL Encryption", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Firewall", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Vulnerability Management", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("WordPress Hardening", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Login Protection", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Two-Factor Authentication", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Limit Login Attempts", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Visitor Protection", "really-simple-ssl"),
            },
        ] :
        [
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("SSL Encryption", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("Vulnerability Management", "really-simple-ssl"),
            },
            {
                'icon': 'circle-times',
                'color': 'red',
                'text': __("WordPress hardening", "really-simple-ssl"),
            },
        ];
    return (
        <>
            {RssslModal && <RssslModal title={__("Are you sure?", "really-simple-ssl")}
                                       confirmText={__("Deactivate", "really-simple-ssl")}
                                       confirmAction={() => deactivateKeepHttps()}
                                       alternativeText={__("Deactivate and use HTTP", "really-simple-ssl")}
                                       alternativeAction={() => deactivateAndRevert()}
                                       alternativeClassName="rsssl-modal-warning"
                                       content={content()}
                                       list={list}
                                       isOpen={isOpen}
                                       setOpen={setOpen}/>
            }
        </>
    );
}
export default DeactivationModal;