MCPcopy Create free account
hub / github.com/IQEngine/IQEngine / useUpdatePlugin

Function useUpdatePlugin

client/src/api/plugin/queries.tsx:85–111  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

83}
84
85export const useUpdatePlugin = () => {
86 const client = useQueryClient();
87
88 return useMutation({
89 mutationFn: (definition: PluginDefinition) => {
90 return axios.put(`/api/plugins/${definition.name}`, definition);
91 },
92 onMutate: async (definition: PluginDefinition) => {
93 await client.cancelQueries(['plugin', definition.name]);
94 const previousPlugin = client.getQueryData<PluginDefinition>(['plugin', definition.name]);
95 client.setQueryData<PluginDefinition>(['plugin', definition.name], definition);
96 await client.cancelQueries(['plugins']);
97 const previousPlugins = client.getQueryData<PluginDefinition[]>(['plugins']);
98
99 const updatedPlugins = Array.isArray(previousPlugins)
100 ? previousPlugins.map((item) => (item.name === definition.name ? definition : item))
101 : [];
102 client.setQueryData<PluginDefinition[]>(['plugins'], updatedPlugins);
103 return { previousPlugins, previousPlugin };
104 },
105 onError: (err, newDefinition, context) => {
106 console.error('onError', err);
107 client.setQueryData(['plugin', newDefinition.name], context.previousPlugin);
108 client.setQueryData(['plugins'], context.previousPlugins);
109 },
110 });
111};
112
113export const useDeletePlugin = () => {
114 const client = useQueryClient();

Callers 1

PluginEditFunction · 0.90

Calls 1

useQueryClientFunction · 0.85

Tested by

no test coverage detected