@bsv/wallet-toolbox
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
34 lines (26 loc) • 807 B
text/typescript
import { Monitor } from '../Monitor'
import { WalletMonitorTask } from './WalletMonitorTask'
export class TaskClock extends WalletMonitorTask {
static taskName = 'Clock'
nextMinute: number
constructor(
monitor: Monitor,
public triggerMsecs = 1 * monitor.oneSecond
) {
super(monitor, TaskClock.taskName)
this.nextMinute = this.getNextMinute()
}
trigger(nowMsecsSinceEpoch: number): { run: boolean } {
const s = this.storage
const run = Date.now() > this.nextMinute
return { run }
}
async runTask(): Promise<string> {
const log = `${new Date(this.nextMinute).toISOString()}`
this.nextMinute = this.getNextMinute()
return log
}
getNextMinute(): number {
return Math.ceil(Date.now() / this.monitor.oneMinute) * this.monitor.oneMinute
}
}