import React, { useState, useEffect } from 'react'; import { useSelector, useDispatch } from 'react-redux'; import { pluralizeWord } from 'utils/common'; import { IconAlertTriangle, IconDeviceFloppy } from '@tabler/icons'; import { clearAllSaveTransientRequestModals } from 'providers/ReduxStore/slices/collections'; import { closeTabs } from 'providers/ReduxStore/slices/tabs'; import toast from 'react-hot-toast'; import Modal from 'components/Modal'; import Button from 'ui/Button'; import SaveTransientRequest from './index'; const SaveTransientRequestContainer = () => { const dispatch = useDispatch(); const modals = useSelector((state) => state.collections.saveTransientRequestModals); const [openItemUid, setOpenItemUid] = useState(null); // Reset openItemUid if the modal no longer exists in the array useEffect(() => { if (openItemUid && !modals.find((modal) => modal.item.uid === openItemUid)) { setOpenItemUid(null); } }, [modals, openItemUid]); const handleDiscardAll = () => { // Close all tabs for the transient requests (this will also delete the transient files) const tabUids = modals.map((modal) => modal.item.uid); dispatch(closeTabs({ tabUids })); // Clear all modals dispatch(clearAllSaveTransientRequestModals()); // Show success message toast.success(`Discarded ${modals.length} ${pluralizeWord('request', modals.length)}`); }; const handleCancel = () => { // Clear all modals on close dispatch(clearAllSaveTransientRequestModals()); }; const handleOpenSpecificModal = (itemUid) => { setOpenItemUid(itemUid); }; // If a specific modal is open, show it if (openItemUid) { const modalToOpen = modals.find((modal) => modal.item.uid === openItemUid); if (modalToOpen) { return ( ); } } // Show list of multiple modals return (

You have unsaved transient requests

You have {modals.length}{' '} {pluralizeWord('request', modals.length)} that need to be saved.

Transient {pluralizeWord('Request', modals.length)} ({modals.length})

These requests need to be saved before you can proceed.

{modals.map((modal) => { const { item, collection } = modal; return (
{item.name} {collection.name}
); })}
); }; export default SaveTransientRequestContainer;