wallet-storage
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
45 lines (38 loc) • 1.56 kB
text/typescript
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
}
}