From 0c9d9578ffb78cbc73db9781d413ff4430bc638a Mon Sep 17 00:00:00 2001 From: classicalliu Date: Tue, 3 Sep 2019 17:46:17 +0800 Subject: [PATCH] refactor: adapt to mainnet in wallet --- .../src/controllers/wallets/index.ts | 2 ++ .../neuron-wallet/src/listeners/tx-status.ts | 21 ++++++++++++++++--- .../neuron-wallet/src/services/addresses.ts | 3 ++- .../src/services/tx/transaction-persistor.ts | 4 ++-- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/neuron-wallet/src/controllers/wallets/index.ts b/packages/neuron-wallet/src/controllers/wallets/index.ts index 0f98884eb9..179ae37e74 100644 --- a/packages/neuron-wallet/src/controllers/wallets/index.ts +++ b/packages/neuron-wallet/src/controllers/wallets/index.ts @@ -21,6 +21,7 @@ import { import i18n from 'utils/i18n' import AddressService from 'services/addresses' import WalletCreatedSubject from 'models/subjects/wallet-created-subject' +import logger from 'utils/logger' /** * @class WalletsController @@ -369,6 +370,7 @@ export default class WalletsController { result: hash, } } catch (err) { + logger.error(`sendCapacity:`, err) return { status: ResponseCode.Fail, message: `Error: "${err.message}"`, diff --git a/packages/neuron-wallet/src/listeners/tx-status.ts b/packages/neuron-wallet/src/listeners/tx-status.ts index 07a49ff8af..b442310287 100644 --- a/packages/neuron-wallet/src/listeners/tx-status.ts +++ b/packages/neuron-wallet/src/listeners/tx-status.ts @@ -1,12 +1,14 @@ import { remote } from 'electron' import { interval } from 'rxjs' import { getConnection } from 'typeorm' +import Core from '@nervosnetwork/ckb-sdk-core' import { TransactionStatus } from 'types/cell-types' import LockUtils from 'models/lock-utils' import AddressesUsedSubject from 'models/subjects/addresses-used-subject' import { FailedTransaction, TransactionPersistor } from 'services/tx' import { CONNECTION_NOT_FOUND_NAME } from 'database/chain/ormconfig' import TypeConvert from 'types/type-convert' +import GetBlocks from 'services/sync/get-blocks' const { nodeService } = remote.require('./startup/sync-block-task/params') @@ -17,17 +19,20 @@ const getTransactionStatus = async (hash: string) => { return { tx, status: TransactionStatus.Failed, + blockHash: null, } } if (tx.txStatus.status === 'committed') { return { tx: tx.transaction, status: TransactionStatus.Success, + blockHash: tx.txStatus.blockHash, } } return { tx: tx.transaction, status: TransactionStatus.Pending, + blockHash: null, } } @@ -46,6 +51,7 @@ const trackingStatus = async () => { hash, tx: txWithStatus.tx, status: txWithStatus.status, + blockHash: txWithStatus.blockHash, } }) ) @@ -58,9 +64,18 @@ const trackingStatus = async () => { AddressesUsedSubject.getSubject().next(usedAddresses) } - for (const successTx of successTxs) { - const transaction = TypeConvert.toTransaction(successTx.tx) - await TransactionPersistor.saveFetchTx(transaction) + if (successTxs.length > 0) { + const { core }: { core: Core } = nodeService + const getBlockService = new GetBlocks(core.rpc.node.url) + for (const successTx of successTxs) { + const transaction = TypeConvert.toTransaction(successTx.tx) + const { blockHash } = successTx + const blockHeader = await getBlockService.getHeader(blockHash!) + transaction.blockHash = blockHash! + transaction.blockNumber = blockHeader.number + transaction.timestamp = blockHeader.timestamp + await TransactionPersistor.saveFetchTx(transaction) + } } } diff --git a/packages/neuron-wallet/src/services/addresses.ts b/packages/neuron-wallet/src/services/addresses.ts index 028bc4f946..eee5d16034 100644 --- a/packages/neuron-wallet/src/services/addresses.ts +++ b/packages/neuron-wallet/src/services/addresses.ts @@ -165,7 +165,8 @@ export default class AddressService { AddressPrefix.Mainnet ).address - const blake160: string = LockUtils.addressToBlake160(testnetAddress) + const addressToParse = env.testnet ? testnetAddress : mainnetAddress + const blake160: string = LockUtils.addressToBlake160(addressToParse) const testnetAddressInfo = { walletId: addressMetaInfo.walletId, diff --git a/packages/neuron-wallet/src/services/tx/transaction-persistor.ts b/packages/neuron-wallet/src/services/tx/transaction-persistor.ts index 0508fe0b77..ba7cc92b5a 100644 --- a/packages/neuron-wallet/src/services/tx/transaction-persistor.ts +++ b/packages/neuron-wallet/src/services/tx/transaction-persistor.ts @@ -205,9 +205,9 @@ export class TransactionPersistor { ) let txEntity: TransactionEntity if (saveType === TxSaveType.Sent) { - txEntity = await TransactionPersistor.saveWithSent(transaction) + txEntity = await TransactionPersistor.saveWithSent(tx) } else if (saveType === TxSaveType.Fetch) { - txEntity = await TransactionPersistor.saveWithFetch(transaction) + txEntity = await TransactionPersistor.saveWithFetch(tx) } else { throw new Error('Error TxSaveType!') }