Spaces:
Running
Running
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); | |
} | |
} |