import { useMutation } from '@tanstack/react-query'; 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(plugins); 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( (async function () { await invokeCmd('cmd_reload_plugins'); return listPlugins(); })(), ); setPlugins(plugins); }, }); }