Spaces:
Paused
Paused
| import { useSearchParams } from "react-router-dom"; | |
| type Command = (param: string) => void; | |
| interface Commands { | |
| fill?: Command; | |
| submit?: Command; | |
| mask?: Command; | |
| } | |
| export function useCommand(commands: Commands = {}) { | |
| const [searchParams, setSearchParams] = useSearchParams(); | |
| if (commands === undefined) return; | |
| let shouldUpdate = false; | |
| searchParams.forEach((param, name) => { | |
| const commandName = name as keyof Commands; | |
| if (typeof commands[commandName] === "function") { | |
| commands[commandName]!(param); | |
| searchParams.delete(name); | |
| shouldUpdate = true; | |
| } | |
| }); | |
| if (shouldUpdate) { | |
| setSearchParams(searchParams); | |
| } | |
| } |