UNPKG

wallet-storage

Version:

BRC100 conforming wallet, wallet storage and wallet signer components

45 lines (38 loc) 1.56 kB
import { sdk } from '../../index.client'; import { Monitor } from '../Monitor'; import { TaskCheckForProofs } from './TaskCheckForProofs'; import { WalletMonitorTask } from './WalletMonitorTask'; export class TaskNewHeader extends WalletMonitorTask { static taskName = 'NewHeader'; header?: sdk.BlockHeader constructor(monitor: Monitor, public triggerMsecs = 1 * monitor.oneMinute) { super(monitor, TaskNewHeader.taskName); } async getHeader() : Promise<sdk.BlockHeader> { return await this.monitor.chaintracks.findChainTipHeader() } trigger(nowMsecsSinceEpoch: number): { run: boolean; } { const run = true return { run }; } async runTask(): Promise<string> { let log = '' const oldHeader = this.header this.header = await this.getHeader() let isNew = true if (!oldHeader) { log = `first header: ${this.header.height} ${this.header.hash}` } else if (oldHeader.height < this.header.height) { const skip = this.header.height - oldHeader.height - 1 const skipped = skip > 0 ? ` SKIPPED ${skip}` : '' log = `new header: ${this.header.height} ${this.header.hash}${skipped}` } else if (oldHeader.height === this.header.height && oldHeader.hash != this.header.hash) { log = `reorg header: ${this.header.height} ${this.header.hash}` } else { isNew = false } if (isNew) TaskCheckForProofs.checkNow = true return log } }