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(resolve => { if (p.time) { setPopupData(p) setTimeout(() => { resolve(setPopupData()) }, p.time) } else { setPopupData({ ...p, ...(p.yes && { yes: { label: p.yes.label, action: () => p.yes.action().then(() => resolve(setPopupData())) } }), ...(p.no && { no: { label: p.no.label, action: () => p.no.action().then(() => { resolve(setPopupData()) }) } }) }) } }) ) } return ( {children} ) } const usePopup = () => useContext(PopupContext) export default usePopup