import React, { createContext, useState, useContext } from 'react' import Queue from 'helpers/queue' const PopupContext = createContext() export const PopupProvider = ({children}) => { const [popupData, setPopupData] = useState() const setPopup = p => { Queue.enqueue( () => new Promise(r => { if (p.time) { setPopupData(p) setTimeout(() => { r(setPopupData()); }, p.time); } else { setPopupData({ ...p, ...(p.yes && {yes: {label: p.yes.label, action: () => p.yes.action().then(() => r(setPopupData()))}}), ...(p.no && {no: {label: p.no.label, action: () => p.no.action().then(() => {r(setPopupData())})}}), }) } }) ); } return ( {children} ) } const usePopup = () => useContext(PopupContext) export default usePopup