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);
 | 
			
		||||
                })
 | 
			
		||||
              )
 | 
			
		||||
      .subscribe(async (tx: Transaction) => {
 | 
			
		||||
          }
 | 
			
		||||
          return of(tx);
 | 
			
		||||
        })
 | 
			
		||||
      )
 | 
			
		||||
      .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