TransactionObserver
Es una clase que permite el manejo sencillo de los estados de una transaccion usando el observable original emitido por el sdk y haciendo uso de tuberias para vincular funciones a los diferentes estados de la transaccion.
Aqui tienes un ejemplo de su uso:
const erc20Api = sdk.transactions.erc20Api
const transaction = erc20Api.transfer(payload, caller); // No usamos el await
const observer = sdk.transactions.adapterTx(transaction);
observer
.on(TransactionStatus.Pending, (tx) => {
console.log(`Transaction ${tx.id} is pending`);
})
.on(TransactionStatus.Success, (tx) => {
console.log(`Transaction ${tx.id} is successful`);
})
.on(TransactionStatus.Fail, (tx) => {
console.log(`Transaction ${tx.id} is failed`);
})
.listen();
info
Recuerda siempre ejecutar listen al final para activar la subscripcion.
On
La funcion on te permite vincular una funcion a un determinado estado de transaccion.
observer.on(TransactionStatus.Pending, (tx) => {
console.log(`Transaction ${tx.id} is pending`);
})
Map
La funcion map te permite enviar una funcion para transformar los datos de salida.
const observer = sdk.transactions.adapterTx(transaction); // Aqui emite ITransaction
const mappedId = observer.map(tx => ({ mappedId: tx.id })); // Aqui solo emitimos un objeto con el id.
mappedId.on(TransactionStatus.Success, ({ mappedId }) => {
console.log(`Transaction ${mappedId} is successful`);
})
Observable
La propiedad observable te permite acceder al observable original emitido por el sdk y hacer uso de sus funciones.
const observer = sdk.transactions.adapterTx(transaction);
const originalObservable = observer.observable; // Observable<ITransaction>
originalObservable.subscribe((tx) => {
console.log(`Transaction ${tx.id} is ${tx.status}`);
})