mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-18 14:59:42 +02:00
Refactor desktop app into separate client and proxy apps
This commit is contained in:
25
apps/yaak-client/hooks/useActiveRequest.ts
Normal file
25
apps/yaak-client/hooks/useActiveRequest.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import type { GrpcRequest, HttpRequest, WebsocketRequest } from '@yaakapp-internal/models';
|
||||
import { atom, useAtomValue } from 'jotai';
|
||||
import { activeRequestIdAtom } from './useActiveRequestId';
|
||||
import { allRequestsAtom } from './useAllRequests';
|
||||
|
||||
export const activeRequestAtom = atom((get) => {
|
||||
const activeRequestId = get(activeRequestIdAtom);
|
||||
const requests = get(allRequestsAtom);
|
||||
return requests.find((r) => r.id === activeRequestId) ?? null;
|
||||
});
|
||||
|
||||
interface TypeMap {
|
||||
http_request: HttpRequest;
|
||||
grpc_request: GrpcRequest;
|
||||
websocket_request: WebsocketRequest;
|
||||
}
|
||||
|
||||
export function useActiveRequest<T extends keyof TypeMap>(
|
||||
model?: T | undefined,
|
||||
): TypeMap[T] | null {
|
||||
const activeRequest = useAtomValue(activeRequestAtom);
|
||||
if (model == null) return activeRequest as TypeMap[T];
|
||||
if (activeRequest?.model === model) return activeRequest as TypeMap[T];
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user