import React, { useState } from 'react';
import { RenameInput } from './RenameInput';
import { PagehandlerMenu } from './PagehandlerMenu';
import { EditModal } from './EditModal';
import { SettingsModal } from './SettingsModal';
import _ from 'lodash';
import SortableList from '@/_components/SortableList';
import { toast } from 'react-hot-toast';
import { useAppVersionStore } from '@/_stores/appVersionStore';
import { shallow } from 'zustand/shallow';
import EyeDisable from '@/_ui/Icon/solidIcons/EyeDisable';
import FileRemove from '@/_ui/Icon/solidIcons/FIleRemove';
import Home from '@/_ui/Icon/solidIcons/Home';
export const PageHandler = ({
darkMode,
page,
switchPage,
deletePage,
renamePage,
clonePage,
hidePage,
unHidePage,
homePageId,
currentPageId,
updateHomePage,
updatePageHandle,
apps,
pages,
components,
pinPagesPopover,
haveUserPinned,
disableEnablePage,
}) => {
const isHomePage = page.id === homePageId;
const isSelected = page.id === currentPageId;
const isHidden = page?.hidden ?? false;
const isDisabled = page?.disabled ?? false;
const isIconApplied = isHomePage || isHidden || isDisabled;
const [isEditingPageName, setIsEditingPageName] = useState(false);
const [showEditModal, setShowEditModal] = useState(false);
const [showPagehandlerMenu, setShowPagehandlerMenu] = useState(false);
const [showSettingsModal, setShowSettingsModal] = useState(false);
const [isHovered, setIsHovered] = useState(false);
const { isVersionReleased } = useAppVersionStore(
(state) => ({
isVersionReleased: state.isVersionReleased,
}),
shallow
);
const handleClose = () => {
setShowEditModal(false);
setShowPagehandlerMenu(true);
};
const handleShow = () => {
setShowEditModal(true);
setShowPagehandlerMenu(false);
};
const showSettings = () => {
setShowSettingsModal(true);
};
const handleCallback = (id) => {
setIsHovered(false);
switch (id) {
case 'delete-page':
deletePage(page.id, isHomePage, page.name);
break;
case 'rename-page':
setIsEditingPageName(true);
break;
case 'mark-as-home-page':
updateHomePage(page.id);
break;
case 'edit-page-handle':
handleShow();
break;
case 'settings':
showSettings();
break;
case 'clone-page':
clonePage(page.id);
break;
case 'hide-page':
hidePage(page.id);
break;
case 'unhide-page':
unHidePage(page.id);
break;
case 'disable-page':
disableEnablePage({ pageId: page.id, isDisabled: true });
break;
case 'enable-page':
disableEnablePage({ pageId: page.id });
break;
default:
break;
}
};
React.useEffect(() => {
if (!isHovered && !isSelected && showPagehandlerMenu) {
setShowPagehandlerMenu(false);
}
if (isHovered && currentPageId !== page.id) {
setShowPagehandlerMenu(false);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isHovered]);
if (isEditingPageName) {
return