mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-28 20:21:52 +01:00
Refactor proxy codebase
This commit is contained in:
23
apps/yaak-proxy/hooks/useRpcQueryWithEvent.ts
Normal file
23
apps/yaak-proxy/hooks/useRpcQueryWithEvent.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { type UseQueryOptions, useQueryClient } from '@tanstack/react-query';
|
||||
import type { RpcEventSchema, RpcSchema } from '@yaakapp-internal/proxy-lib';
|
||||
import type { Req, Res } from '../lib/rpc';
|
||||
import { useRpcEvent } from './useRpcEvent';
|
||||
import { useRpcQuery } from './useRpcQuery';
|
||||
|
||||
/**
|
||||
* Combines useRpcQuery with an event listener that invalidates the query
|
||||
* whenever the specified event fires, keeping data fresh automatically.
|
||||
*/
|
||||
export function useRpcQueryWithEvent<
|
||||
K extends keyof RpcSchema,
|
||||
E extends keyof RpcEventSchema & string,
|
||||
>(cmd: K, payload: Req<K>, event: E, opts?: Omit<UseQueryOptions<Res<K>>, 'queryKey' | 'queryFn'>) {
|
||||
const queryClient = useQueryClient();
|
||||
const query = useRpcQuery(cmd, payload, opts);
|
||||
|
||||
useRpcEvent(event, () => {
|
||||
queryClient.invalidateQueries({ queryKey: [cmd, payload] });
|
||||
});
|
||||
|
||||
return query;
|
||||
}
|
||||
Reference in New Issue
Block a user