%PDF- %PDF-
| Direktori : /var/www/projetos/takthua.com.br/wp-content/plugins/ml-slider/extendify-sdk/src/hooks/ |
| Current File : //var/www/projetos/takthua.com.br/wp-content/plugins/ml-slider/extendify-sdk/src/hooks/useModal.js |
import { useEffect, useState } from '@wordpress/element'
import { InstallStandaloneModal } from '@extendify/components/modals/InstallStandaloneModal'
import { useGlobalStore } from '@extendify/state/GlobalState'
import { useUserStore } from '@extendify/state/User'
/** Return any pending modals and check if any need to show */
export const useModal = () => {
const [modal, setModal] = useState(null)
const open = useGlobalStore((state) => state.open)
const pushModal = useGlobalStore((state) => state.pushModal)
const removeAllModals = useGlobalStore((state) => state.removeAllModals)
// Watches modals added anywhere
useEffect(
() =>
useGlobalStore.subscribe(
(state) => state.modals,
(value) => setModal(value?.length > 0 ? value[0] : null),
),
[],
)
// Checks for modals that need to be shown on load
useEffect(() => {
if (!open) {
removeAllModals()
return
}
const ModalNoticesByPriority = {
standalone: InstallStandaloneModal,
}
const componentKey =
Object.keys(ModalNoticesByPriority).find((key) => {
if (key === 'standalone') {
return (
!window.extendifyData.standalone &&
!useUserStore.getState().modalNoticesDismissedAt[key]
)
}
return !useUserStore.getState().modalNoticesDismissedAt[key]
}) ?? null
const Modal = ModalNoticesByPriority[componentKey]
if (Modal) pushModal(<Modal />)
}, [open, pushModal, removeAllModals])
return modal
}