@mysten/dapp-kit
Version:
A collection of React hooks and components for interacting with the Sui blockchain and wallets.
28 lines (22 loc) • 935 B
text/typescript
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
import { useMutation } from '@tanstack/react-query';
import { useSuiClientContext } from './useSuiClient.js';
import type { SuiRpcMethods } from './useSuiClientQuery.js';
export type UseSuiClientMutationOptions<T extends keyof SuiRpcMethods> = Omit<
UseMutationOptions<SuiRpcMethods[T]['result'], Error, SuiRpcMethods[T]['params'], unknown[]>,
'mutationFn'
>;
export function useSuiClientMutation<T extends keyof SuiRpcMethods>(
method: T,
options: UseSuiClientMutationOptions<T> = {},
): UseMutationResult<SuiRpcMethods[T]['result'], Error, SuiRpcMethods[T]['params'], unknown[]> {
const suiContext = useSuiClientContext();
return useMutation({
...options,
mutationFn: async (params) => {
return await suiContext.client[method](params as never);
},
});
}