export function usePollingQuery<
TMutationData,
TMutationError,
TMutationVariables,
TQueryData,
TQueryError,
>(options: {
getMutationOptions: UseTRPCMutationOptions<
TMutationVariables,
TMutationError,
TMutationData
>;
getQueryOptions: (data: TMutationData) => UseTRPCQueryOptions<
TQueryData, // Output
TQueryData, // Data (post-select)
TQueryError,
any // QueryOptsData
>;
}) {
const mutation = useMutation(options.getMutationOptions);
const hasData = mutation.data !== undefined;
const queryOpts = hasData
? options.getQueryOptions(mutation.data!)
: { queryKey: ['__empty'], enabled: false }; // If no data, use an empty queryKey and disable query.
const query = useQuery({
...queryOpts,
enabled: hasData && (queryOpts.enabled ?? false),
});
return { mutation, query, stop: mutation.reset };
}
const { mutation, query, stop } = usePollingQuery({
getMutationOptions: batchTriggerDownloadMutationOptions(),
getQueryOptions: (mutation) => batchLogQueryOptions(mutation.jobId),
});
export function usePollingQuery<
TMutationData,
TMutationError,
TMutationVariables,
TQueryData,
TQueryError,
>(options: {
getMutationOptions: UseTRPCMutationOptions<
TMutationVariables,
TMutationError,
TMutationData
>;
getQueryOptions: (data: TMutationData) => UseTRPCQueryOptions<
TQueryData, // Output
TQueryData, // Data (post-select)
TQueryError,
any // QueryOptsData
>;
}) {
const mutation = useMutation(options.getMutationOptions);
const hasData = mutation.data !== undefined;
const queryOpts = hasData
? options.getQueryOptions(mutation.data!)
: { queryKey: ['__empty'], enabled: false }; // If no data, use an empty queryKey and disable query.
const query = useQuery({
...queryOpts,
enabled: hasData && (queryOpts.enabled ?? false),
});
return { mutation, query, stop: mutation.reset };
}
const { mutation, query, stop } = usePollingQuery({
getMutationOptions: batchTriggerDownloadMutationOptions(),
getQueryOptions: (mutation) => batchLogQueryOptions(mutation.jobId),
});