()
| 83 | } |
| 84 | |
| 85 | export 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 | |
| 113 | export const useDeletePlugin = () => { |
| 114 | const client = useQueryClient(); |
no test coverage detected