Liquid unblinding: Replacing async/await with observable.
This commit is contained in:
parent
7fe9993f91
commit
f5bc9ced0a
@ -58,7 +58,7 @@ export class LiquidUnblinding {
|
||||
// Lookup all transaction inputs/outputs and attach the unblinded data
|
||||
tryUnblindTx(tx: Transaction) {
|
||||
if (tx) {
|
||||
if (tx._unblinded) { return tx._unblinded; }
|
||||
if (tx._unblinded) { return tx; }
|
||||
let matched = 0;
|
||||
if (tx.vout !== undefined) {
|
||||
tx.vout.forEach(vout => matched += +this.tryUnblindOut(vout));
|
||||
@ -71,7 +71,7 @@ export class LiquidUnblinding {
|
||||
throw new Error(`Invalid blinding data.`)
|
||||
}
|
||||
tx._deduced = false; // invalidate cache so deduction is attempted again
|
||||
return tx._unblinded;
|
||||
return tx;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,8 +131,9 @@ export class LiquidUnblinding {
|
||||
const blinders = this.parseBlinders(windowLocationHash);
|
||||
if (blinders) {
|
||||
this.commitments = await this.makeCommitmentMap(blinders);
|
||||
this.tryUnblindTx(tx);
|
||||
return this.tryUnblindTx(tx);
|
||||
}
|
||||
}
|
||||
throw new Error('Invalid blinding data.');
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@ import {
|
||||
map
|
||||
} from 'rxjs/operators';
|
||||
import { Transaction, Block } from '../../interfaces/electrs.interface';
|
||||
import { of, merge, Subscription, Observable, Subject, timer, combineLatest, } from 'rxjs';
|
||||
import { of, merge, Subscription, Observable, Subject, timer, combineLatest, from } from 'rxjs';
|
||||
import { StateService } from '../../services/state.service';
|
||||
import { WebsocketService } from '../../services/websocket.service';
|
||||
import { AudioService } from 'src/app/services/audio.service';
|
||||
@ -154,21 +154,25 @@ export class TransactionComponent implements OnInit, OnDestroy {
|
||||
transactionObservable$,
|
||||
this.stateService.mempoolTransactions$
|
||||
);
|
||||
}),
|
||||
switchMap((tx) => {
|
||||
if (this.network === 'liquid') {
|
||||
return from(this.liquidUnblinding.checkUnblindedTx(tx))
|
||||
.pipe(
|
||||
catchError((error) => {
|
||||
this.errorUnblinded = error;
|
||||
return of(tx);
|
||||
})
|
||||
)
|
||||
}
|
||||
return of(tx);
|
||||
})
|
||||
)
|
||||
.subscribe(async (tx: Transaction) => {
|
||||
.subscribe((tx: Transaction) => {
|
||||
if (!tx) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.network === 'liquid') {
|
||||
try {
|
||||
await this.liquidUnblinding.checkUnblindedTx(tx)
|
||||
} catch (error) {
|
||||
this.errorUnblinded = error;
|
||||
}
|
||||
}
|
||||
|
||||
this.tx = tx;
|
||||
if (tx.fee === undefined) {
|
||||
this.tx.fee = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user