Files
yaak/src-web/hooks/useHttpRequestActions.ts
2024-08-16 08:31:19 -07:00

39 lines
1.0 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import type {
CallHttpRequestActionRequest,
GetHttpRequestActionsResponse,
HttpRequest,
} from '@yaakapp/api';
import { invokeCmd } from '../lib/tauri';
export function useHttpRequestActions() {
const httpRequestActions = useQuery({
queryKey: ['http_request_actions'],
refetchOnWindowFocus: false,
queryFn: async () => {
const responses = (await invokeCmd(
'cmd_http_request_actions',
)) as GetHttpRequestActionsResponse[];
return responses;
},
});
return (
httpRequestActions.data?.flatMap((r) =>
r.actions.map((a) => ({
key: a.key,
label: a.label,
icon: a.icon,
call: async (httpRequest: HttpRequest) => {
const payload: CallHttpRequestActionRequest = {
key: a.key,
pluginRefId: r.pluginRefId,
args: { httpRequest },
};
await invokeCmd('cmd_call_http_request_action', { req: payload });
},
})),
) ?? []
);
}