22 lines
786 B
TypeScript
22 lines
786 B
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import { fetchPieces, fetchPiece } from '../api';
|
|
import { STALE_TIME } from '../lib/constants.js';
|
|
|
|
export function usePieceList() {
|
|
return useQuery({ queryKey: ['pieces'], queryFn: fetchPieces, staleTime: STALE_TIME.SEMI_STATIC });
|
|
}
|
|
|
|
/**
|
|
* Fetches a single piece by name (and optional source).
|
|
* Returns the full PieceFetchResult so callers can use the server-resolved source
|
|
* for authorization decisions (e.g. read-only gate in PieceEditor).
|
|
*/
|
|
export function usePiece(name: string | undefined, source?: 'builtin' | 'user-custom' | 'global-custom') {
|
|
return useQuery({
|
|
queryKey: ['piece', name, source],
|
|
queryFn: () => fetchPiece(name!, source),
|
|
enabled: !!name,
|
|
staleTime: STALE_TIME.SEMI_STATIC,
|
|
});
|
|
}
|