Reload plugins on change

This commit is contained in:
Gregory Schier
2024-09-09 11:34:52 -07:00
parent 3bf192953d
commit c0707bb246
18 changed files with 240 additions and 118 deletions

View File

@@ -5,10 +5,12 @@ import type {
HttpRequest,
} from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
import { usePlugins } from './usePlugins';
export function useHttpRequestActions() {
const plugins = usePlugins();
const httpRequestActions = useQuery({
queryKey: ['http_request_actions'],
queryKey: ['http_request_actions', plugins.map((p) => p.updatedAt)],
refetchOnWindowFocus: false,
queryFn: async () => {
const responses = (await invokeCmd(

View File

@@ -3,6 +3,7 @@ import type { Plugin } from '@yaakapp/api';
import { atom, useAtomValue, useSetAtom } from 'jotai';
import { minPromiseMillis } from '../lib/minPromiseMillis';
import { listPlugins } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
const plugins = await listPlugins();
export const pluginsAtom = atom<Plugin[]>(plugins);
@@ -11,12 +12,20 @@ export function usePlugins() {
return useAtomValue(pluginsAtom);
}
/**
* Reload all plugins and refresh the list of plugins
*/
export function useRefreshPlugins() {
const setPlugins = useSetAtom(pluginsAtom);
return useMutation({
mutationKey: ['refresh_plugins'],
mutationFn: async () => {
const plugins = await minPromiseMillis(listPlugins());
const plugins = await minPromiseMillis(
(async function () {
await invokeCmd('cmd_reload_plugins');
return listPlugins();
})(),
);
setPlugins(plugins);
},
});

View File

@@ -56,6 +56,7 @@ type TauriCmd =
| 'cmd_parse_template'
| 'cmd_plugin_info'
| 'cmd_render_template'
| 'cmd_reload_plugins'
| 'cmd_save_response'
| 'cmd_send_ephemeral_request'
| 'cmd_send_http_request'