import apiFetch from '@wordpress/api-fetch';
import { Spinner } from '@wordpress/components';
import { useEffect, useState, forwardRef, useRef } from '@wordpress/element';
import { __, sprintf } from '@wordpress/i18n';
import { Dialog } from '@headlessui/react';
import classnames from 'classnames';
import { AnimatePresence, motion } from 'framer-motion';
import { useUserSelectionStore } from '@launch/state/user-selections';
export const RestartLaunchModal = ({ setPage }) => {
const oldPages = window.extOnbData.resetSiteInformation.pagesIds ?? [];
const oldNavigations =
window.extOnbData.resetSiteInformation.navigationsIds ?? [];
const templatePartsIds =
window.extOnbData.resetSiteInformation.templatePartsIds ?? [];
const { resetState } = useUserSelectionStore();
const [open, setOpen] = useState(false);
const [processing, setProcessing] = useState(false);
const initialFocus = useRef(null);
const handleExit = () =>
(window.location.href = `${window.extSharedData.adminUrl}admin.php?page=extendify-assist`);
const handleOk = async () => {
setProcessing(true);
resetState();
for (const pageId of oldPages) {
try {
await apiFetch({
path: `/wp/v2/pages/${pageId}`,
method: 'DELETE',
});
} catch (responseError) {
console.warn(
`delete pages failed to delete a page (id: ${pageId}) with the following error`,
responseError,
);
}
}
// delete the wp_navigation posts created by Launch
for (const navigationId of oldNavigations) {
try {
await apiFetch({
path: `/wp/v2/navigation/${navigationId}`,
method: 'DELETE',
});
} catch (responseError) {
console.warn(
`delete navigation failed to delete a navigation (id: ${navigationId}) with the following error`,
responseError,
);
}
}
for (const template of templatePartsIds) {
try {
await apiFetch({
path: `/wp/v2/template-parts/${template}?force=true`,
method: 'DELETE',
});
} catch (responseError) {
console.warn(
`delete template failed to delete template (id: ${template}) with the following error`,
responseError,
);
}
}
setOpen(false);
};
useEffect(() => {
if (oldPages.length > 0) {
setOpen(true);
setPage(0);
}
}, [oldPages.length, setOpen, setPage]);
return (