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.

Este endpoint deve ser usado para todos os endpoints após o executarmos. Exceto getEscrowBalances, getEscrowsByContractId, getEscrowsByRole e getEscrowsBySigner .

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

  • sendTransaction Responsá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.

Tipos

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

src/hooks/useSendTransactionForm.ts
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?