Este endpoint permite alterar as propriedades de um escrow desde que uma série de requisitos seja atendida, que serão mencionados nesta seção.
Uso
Este hook customizado expõe uma função para atualizar um escrow.
import{useUpdateEscrow}from"@trustless-work/escrow/hooks";import{UpdateSingleReleaseEscrowPayload,UpdateMultiReleaseEscrowPayload}from"@trustless-work/escrow/types";/* * useUpdateEscrow*/const{updateEscrow}=useUpdateEscrow();/* * Ele retorna uma transação não assinada * o payload deve ser do tipo `UpdateSingleReleaseEscrowPayload` ou `UpdateMultiReleaseEscrowPayload`*/const{unsignedTransaction}=awaitupdateEscrow(payload);
Função
updateEscrow
Responsável por construir e retornar uma transação não assinada com base no payload fornecido.
EscrowType: Especifica o tipo de escrow. Aceita os seguintes valores:
multi-release: Permite múltiplos desembolsos de fundos.
single-release: Os fundos são liberados em uma única transação.
UpdateSingleReleaseEscrowPayload: Um objeto com os campos necessários para atualizar um single-release escrow.
UpdateMultiReleaseEscrowPayload: Um objeto com os campos necessários para atualizar um multi-release escrow.
Parâmetros:
Certifique-se de que correspondam: se você escolher o tipo "multi-release", também deve usar um payload "multi-release".
tipo: Descreve o tipo de escrow a ser usado. As opções são "multi-release" ou "single-release".
payload: Um objeto contendo os campos necessários para atualizar um escrow.
import {
useUpdateEscrow,
useSendTransaction,
} from "@trustless-work/escrow/hooks";
import {
UpdateSingleReleaseEscrowPayload, UpdateMultiReleaseEscrowPayload
} from "@trustless-work/escrow/types";
export const useUpdateEscrowForm = () => {
/*
* useUpdateEscrow
*/
const { updateEscrow } = useUpdateEscrow();
/*
* useSendTransaction
*/
const { sendTransaction } = useSendTransaction();
/*
* função onSubmit, isto pode ser chamada por um botão de formulário
*/
const onSubmit = async (payload: UpdateSingleReleaseEscrowPayload | UpdateMultiReleaseEscrowPayload) => {
try {
/**
* Chamada de API usando os hooks do trustless work
* @Nota:
* - Precisamos passar o payload para a função updateEscrow
* - O resultado será uma transação não assinada
*/
const { unsignedTransaction } = await updateEscrow(
payload,
"multi-release"
// ou ...
// "single-release"
);
if (!unsignedTransaction) {
throw new Error(
"A transação não assinada está ausente na resposta do updateEscrow."
);
}
/**
* @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("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);
/**
* @Respostas:
* data.status === "SUCCESS"
* - Escrow atualizado com sucesso
* - Mostrar um toast de sucesso
*
* data.status == "ERROR"
* - Mostrar um toast de erro
*/
if (data.status === "SUCCESS") {
toast.success("Escrow Atualizado");
}
} catch (error: unknown) {
// lógica de captura de erro
}
};
}