useQueryOnClient<TParsed> function

QueryHookResult<TParsed> useQueryOnClient<TParsed>(
  1. GraphQLClient client,
  2. QueryOptions<TParsed> options
)

Implementation

QueryHookResult<TParsed> useQueryOnClient<TParsed>(
  GraphQLClient client,
  QueryOptions<TParsed> options,
) {
  final watchQueryOptions = useMemoized(
    () => options.asWatchQueryOptions(),
    [options],
  );
  final query = useWatchQueryOnClient(client, watchQueryOptions);
  final snapshot = useStream(
    query.stream,
    initialData: query.latestResult,
  );

  useEffect(() {
    final cleanup = query.onData(
      QueryCallbackHandler(options: options).callbacks,
      removeAfterInvocation: false,
    );
    return cleanup;
  }, [options, query]);

  return QueryHookResult(
    result: snapshot.data!,
    refetch: query.refetch,
    fetchMore: query.fetchMore,
  );
}