useUpdateEscrow
Este endpoint te permite cambiar las propiedades de un escrow siempre que se cumpla una serie de requisitos, que se mencionarán en esta sección.
Uso
Este hook personalizado expone una función para actualizar un escrow.
import { useUpdateEscrow} from "@trustless-work/escrow/hooks";
import { UpdateSingleReleaseEscrowPayload, UpdateMultiReleaseEscrowPayload } from "@trustless-work/escrow/types";
/*
* useUpdateEscrow
*/
const { updateEscrow } = useUpdateEscrow();
/*
* Devuelve una transacción sin firmar
* el payload debe ser del tipo `UpdateSingleReleaseEscrowPayload` o `UpdateMultiReleaseEscrowPayload`
*/
const { unsignedTransaction } = await updateEscrow(payload);
Función
updateEscrow
Responsable de construir y devolver una transacción sin firmar basada en el payload proporcionado.
EscrowType: Especifica el tipo de escrow. Acepta los siguientes valores:
multi-release: Permite múltiples liberaciones de fondos.
single-release: Los fondos se liberan en una sola transacción.
UpdateSingleReleaseEscrowPayload: Un objeto con los campos necesarios para actualizar un single-release escrow.
UpdateMultiReleaseEscrowPayload: Un objeto con los campos necesarios para actualizar un multi-release escrow.
Parámetros:
Asegúrate de que coincidan: si eliges un tipo "multi-release", también debes usar un payload "multi-release".
tipo: Describe el tipo de escrow que se va a usar. Las opciones son "multi-release" o "single-release".
payload: Un objeto que contiene los campos requeridos para actualizar un escrow.
Valor de retorno:
unsignedTransaction: Un objeto que representa la transacción construida, lista para ser firmada por tu wallet y transmitida.
Ejemplo de uso
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();
/*
* función onSubmit, esto podría ser llamado por el botón del formulario
*/
const onSubmit = async (payload: UpdateSingleReleaseEscrowPayload | UpdateMultiReleaseEscrowPayload) => {
try {
/**
* Llamada API usando los hooks de trustless work
* @Nota:
* - Necesitamos pasar el payload a la función updateEscrow
* - El resultado será una transacción sin firmar
*/
const { unsignedTransaction } = await updateEscrow(
payload,
"multi-release"
// o ...
// "single-release"
);
if (!unsignedTransaction) {
throw new Error(
"Falta la transacción sin firmar en la respuesta de updateEscrow."
);
}
/**
* @Nota:
* - Necesitamos firmar la transacción usando tu [clave privada] como la wallet
* - El resultado será una transacción firmada
*/
const signedXdr = await signTransaction({ /* Este método debe ser provisto por la wallet */
unsignedTransaction,
address: walletAddress || "",
});
if (!signedXdr) {
throw new Error("Falta la transacción firmada.");
}
/**
* @Nota:
* - Necesitamos enviar la transacción firmada a la API
* - Los datos serán un SendTransactionResponse
*/
const data = await sendTransaction(signedXdr);
/**
* @Respuestas:
* data.status === "SUCCESS"
* - Escrow actualizado con éxito
* - Mostrar un toast de éxito
*
* data.status == "ERROR"
* - Mostrar un toast de error
*/
if (data.status === "SUCCESS") {
toast.success("Escrow actualizado");
}
} catch (error: unknown) {
// lógica para capturar errores
}
};
}
Última actualización
¿Te fue útil?