useSendTransaction
A maioria dos endpoints do Trustless Work retorna uma transação não assinada em formato XDR. Este endpoint é usado para assinar tais transações não assinadas e enviá-las para a rede Stellar.
Uso
Este hook customizado expõe uma função para enviar uma transação assinada para a rede.
import { useSendTransaction} from "@trustless-work/escrow/hooks";
/*
* useSendTransaction
*/
const { sendTransaction } = useSendTransaction();
/*
* Retorna um SendTransactionResponse
* payload deve ser do tipo string
*/
const data = await sendTransaction(signedXdr);
Função
sendTransactionResponsável por construir e retornar dados com base no payload fornecido.
Argumento:
payload: Uma string contendo os campos necessários para enviar uma transação para a rede.
Valor de Retorno:
Para: Fundar Escrow, Resolver Disputa, Alterar Status do Marco, Alterar Flag de Aprovação do Marco, Iniciar Disputa, Liberar Fundos:
Este objeto será de um tipo sendTransactionResponse.
Para: Inicializar Escrow:
Este objeto será de um tipo sendTransactionResponse. Mas você pode defini-lo como InitializeEscrowResponse.
Para: Atualizar Escrow:
Este objeto será de um tipo sendTransactionResponse. Mas você pode defini-lo como UpdateEscrowResponse.
Exemplo de Uso
import {
useFundEscrow,
useSendTransaction,
} from "@trustless-work/escrow/hooks";
import {
useSomeEndpointPayload
} from "@trustless-work/escrow/types";
export const useSomeEndpointForm= () => {
/*
* useSomeEndpoint
*/
const { someFunction } = useSomeEndpoint();
/*
* useSendTransaction
*/
const { sendTransaction } = useSendTransaction();
/*
* função onSubmit, isso pode ser chamado por um botão de formulário
*/
const onSubmit = async (payload: useSomeEndpointPayload) => {
try {
// obter unsignedTransaction de algum endpoint ...
/**
* @Nota:
* - Precisamos assinar a transação usando sua [chave privada], como a carteira
* - O resultado será uma transação assinada
*/
const signedXdr = await signTransaction({ /* Este método deve ser fornecido pela carteira */
unsignedTransaction,
address: walletAddress || "",
});
if (!signedXdr) {
throw new Error("A transação assinada está ausente.");
}
/**
* @Nota:
* - Precisamos enviar a transação assinada para a API
* - Os dados serão um SendTransactionResponse
*/
const data = await sendTransaction(signedXdr);
} catch (error: unknown) {
// lógica de captura de erro
}
};
}
Atualizado
Isto foi útil?