12345678910111213141516171819202122232425262728 |
- 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);
- }
- }
|