From 62dfa421ab4bba3d3c7527370344ce8d87ffbe37 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 8 Aug 2026 14:29:57 -0700 Subject: [PATCH] Explicitly call appropriate block subtype function when refreshing account frontiers. --- src/lib/account/refresh.ts | 19 ++++++++++++++++--- src/lib/block/index.ts | 2 +- src/lib/wallet/refresh.ts | 10 ++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/lib/account/refresh.ts b/src/lib/account/refresh.ts index a34c03f..35329b3 100644 --- a/src/lib/account/refresh.ts +++ b/src/lib/account/refresh.ts @@ -3,7 +3,6 @@ import { Account } from '.' import { Block } from '../block' -import { BURN_PUBLIC_KEY } from '../constants' import { Rpc } from '../rpc' import { AccountInfoRequest } from '../rpc/account_info' import { BlockInfoRequest } from '../rpc/block_info' @@ -55,7 +54,14 @@ export async function _refresh (account: Account, rpc: unknown): Promise { if (typeof confirmedFrontierBlock[confirmedFrontierSubtype] !== 'function') { throw new TypeError('Unknown subtype of confirmed frontier block', { cause: confirmedFrontierSubtype }) } - confirmedFrontierBlock[confirmedFrontierSubtype](confirmedFrontierContents.link === BURN_PUBLIC_KEY ? confirmedFrontierContents.representative : confirmedFrontierContents.link, 0).signature = confirmedFrontierContents.signature + if (confirmedFrontierSubtype === 'epoch') { + confirmedFrontierBlock.epoch(accountInfo.account_version) + } else if (confirmedFrontierSubtype === 'change') { + confirmedFrontierBlock.change(confirmedFrontierContents.representative) + } else { + confirmedFrontierBlock[confirmedFrontierSubtype](confirmedFrontierContents.link, 0) + } + confirmedFrontierBlock.signature = confirmedFrontierContents.signature account.confirmed_frontier_block = confirmedFrontierBlock const reqFrontierBlockInfo: BlockInfoRequest = { @@ -85,6 +91,13 @@ export async function _refresh (account: Account, rpc: unknown): Promise { if (typeof frontierBlock[frontierSubtype] !== 'function') { throw new TypeError('Unknown subtype of frontier block', { cause: frontierSubtype }) } - frontierBlock[frontierSubtype](frontierContents.link === BURN_PUBLIC_KEY ? frontierContents.representative : frontierContents.link, 0).signature = frontierContents.signature + if (frontierSubtype === 'epoch') { + frontierBlock.epoch(accountInfo.account_version) + } else if (confirmedFrontierSubtype === 'change') { + frontierBlock.change(frontierContents.representative) + } else { + frontierBlock[frontierSubtype](frontierContents.link, 0) + } + frontierBlock.signature = frontierContents.signature account.frontier_block = frontierBlock } diff --git a/src/lib/block/index.ts b/src/lib/block/index.ts index 8e8d899..bb8a893 100644 --- a/src/lib/block/index.ts +++ b/src/lib/block/index.ts @@ -171,7 +171,7 @@ export class Block { * * @returns {Block} This block unchanged */ - epoch (version: 1 | 2): Block { + epoch (version: 1 | 2 | '1' | '2'): Block { const special = utf8.toHex(`epoch v${version} block`) this.link = hex.toBytes(`${special}000000000000000000000000000000000000`) this.subtype = 'epoch' diff --git a/src/lib/wallet/refresh.ts b/src/lib/wallet/refresh.ts index 28473a2..98594c2 100644 --- a/src/lib/wallet/refresh.ts +++ b/src/lib/wallet/refresh.ts @@ -61,8 +61,14 @@ export async function _refresh (wallet: Wallet, rpc: unknown, from: unknown, to: if (typeof frontierBlock[subtype] !== 'function') { throw new TypeError('Unknown frontier block subtype', { cause: subtype }) } - const arg = subtype === 'epoch' ? account_version : subtype === 'change' ? representative : link - frontierBlock[subtype](arg, 0).signature = signature + if (subtype === 'epoch') { + frontierBlock.epoch(account_version) + } else if (subtype === 'change') { + frontierBlock.change(representative) + } else { + frontierBlock[subtype](link, 0) + } + frontierBlock.signature = signature account.frontier_block = frontierBlock } } -- 2.52.0