Spaces:
Configuration error
Configuration error
| import { useCallback, useContext, useEffect } from 'react' | |
| import { UNSAFE_NavigationContext as NavigationContext } from 'react-router-dom' | |
| // https://stackoverflow.com/questions/71572678/react-router-v-6-useprompt-typescript | |
| export function useBlocker(blocker, when = true) { | |
| const { navigator } = useContext(NavigationContext) | |
| useEffect(() => { | |
| if (!when) return | |
| const unblock = navigator.block((tx) => { | |
| const autoUnblockingTx = { | |
| ...tx, | |
| retry() { | |
| unblock() | |
| tx.retry() | |
| } | |
| } | |
| blocker(autoUnblockingTx) | |
| }) | |
| return unblock | |
| }, [navigator, blocker, when]) | |
| } | |
| export function usePrompt(message, when = true) { | |
| const blocker = useCallback( | |
| (tx) => { | |
| if (window.confirm(message)) tx.retry() | |
| }, | |
| [message] | |
| ) | |
| useBlocker(blocker, when) | |
| } | |