client/app/pages/queries/hooks/useAddNewParameterDialog.js (22 lines of code) (raw):
import { map } from "lodash";
import { useCallback } from "react";
import EditParameterSettingsDialog from "@/components/EditParameterSettingsDialog";
import useImmutableCallback from "@/lib/hooks/useImmutableCallback";
export default function useAddNewParameterDialog(query, onParameterAdded) {
const handleParameterAdded = useImmutableCallback(onParameterAdded);
return useCallback(() => {
EditParameterSettingsDialog.showModal({
parameter: {
title: null,
name: "",
type: "text",
value: null,
},
existingParams: map(query.getParameters().get(), p => p.name),
}).onClose(param => {
const newQuery = query.clone();
param = newQuery.getParameters().add(param);
handleParameterAdded(newQuery, param);
});
}, [query, handleParameterAdded]);
}