useMutationOnClient<TParsed> function
MutationHookResult<TParsed>
useMutationOnClient<TParsed>(
- GraphQLClient client,
- MutationOptions<
TParsed> options
Implementation
MutationHookResult<TParsed> useMutationOnClient<TParsed>(
GraphQLClient client,
MutationOptions<TParsed> options,
) {
final watchOptions = useMemoized(
() => options.asWatchQueryOptions(),
[options],
);
final query = useWatchMutationOnClient<TParsed>(client, watchOptions);
final snapshot = useStream(
query.stream,
initialData: query.latestResult ?? QueryResult.unexecuted,
);
final runMutation = useCallback((
Map<String, dynamic> variables, {
Object? optimisticResult,
}) {
final mutationCallbacks = MutationCallbackHandler(
cache: client.cache,
queryId: query.queryId,
options: options,
);
return (query
..variables = variables
..optimisticResult = optimisticResult
..onData(mutationCallbacks.callbacks) // add callbacks to observable
)
.fetchResults();
}, [client, query, options]);
return MutationHookResult(
runMutation: runMutation,
result: snapshot.data!,
);
}