From ff018ff7bdad6a5af29ce9b758f530a19e122835 Mon Sep 17 00:00:00 2001 From: yanguoyu <841185308@qq.com> Date: Fri, 9 Jun 2023 20:15:38 +0800 Subject: [PATCH] fix: Fix sync stop with exception and multisig balance. --- .../src/services/asset-account-service.ts | 23 +++++++++++++------ .../neuron-wallet/src/services/multisig.ts | 4 ++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/packages/neuron-wallet/src/services/asset-account-service.ts b/packages/neuron-wallet/src/services/asset-account-service.ts index d7c9522519..b3f49db372 100644 --- a/packages/neuron-wallet/src/services/asset-account-service.ts +++ b/packages/neuron-wallet/src/services/asset-account-service.ts @@ -256,14 +256,23 @@ export default class AssetAccountService { .values(sudtTokenInfoEntity) .onConflict(`("tokenID") DO NOTHING`) .execute() - - await getConnection() + const existAccountAcount = await getConnection() + .getRepository(AssetAccountEntity) .createQueryBuilder() - .insert() - .into(AssetAccountEntity) - .values(assetAccountEntity) - .onConflict(`("tokenID", "blake160") DO NOTHING`) - .execute() + .where({ + tokenID, + blake160 + }) + .getCount() + // check whether the entity exists before insert. Reason: https://github.com/Magickbase/neuron-public-issues/issues/184#issue-1749746997 + if (!existAccountAcount) { + await getConnection() + .createQueryBuilder() + .insert() + .into(AssetAccountEntity) + .values(assetAccountEntity) + .execute() + } } public static async checkAndDeleteWhenFork(startBlockNumber: string, anyoneCanPayLockHashes: string[]) { diff --git a/packages/neuron-wallet/src/services/multisig.ts b/packages/neuron-wallet/src/services/multisig.ts index 3641630eaf..2e64dbcd37 100644 --- a/packages/neuron-wallet/src/services/multisig.ts +++ b/packages/neuron-wallet/src/services/multisig.ts @@ -187,8 +187,8 @@ export default class MultisigService { const config = currentMultisigConfigs[idx] const script = Multisig.getMultisigScript(config.blake160s, config.r, config.m, config.n) addressCursorMap.set(script.args, v?.result?.last_cursor) - v.result.objects.forEach((transaction: any) => { - multisigOutputTxHashList.add(transaction.tx_hash) + v.result.objects.forEach((obj: any) => { + multisigOutputTxHashList.add(obj.tx_hash || obj.transaction?.hash) }) nextMultisigConfigs.push(currentMultisigConfigs[idx]) }