ln/app/client/hooks/usePaginatedQuery.tsx
lnn0q 6ada519e06 implemented identity, updated session, added 'workings' list
added paginated querying, added 'common'
2025-05-17 00:29:55 +03:00

40 lines
874 B
TypeScript

import {
ApolloError,
ApolloQueryResult,
MaybeMasked,
OperationVariables,
useQuery
} from '@apollo/client';
import { DocumentNode } from 'graphql';
interface UsePaginatedQueryProps {
query: DocumentNode;
input: {
filter: {
terms?: string | null;
offset?: number | null;
size?: number | null;
};
};
}
interface UsePaginatedQueryReturn<T> {
data?: MaybeMasked<T> | undefined;
loading: boolean;
error: ApolloError | undefined;
refetch: (
variables?: Partial<OperationVariables> | undefined
) => Promise<ApolloQueryResult<MaybeMasked<T>>>;
}
export function usePaginatedQuery<T>(props: UsePaginatedQueryProps): UsePaginatedQueryReturn<T> {
const { data, loading, error, refetch } = useQuery<T>(props.query, {
variables: { input: props.input }
});
return {
data,
loading,
error,
refetch
};
}