From 67ee902b49025adc7366974cbd8b342508ff8892 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Fri, 8 Sep 2023 16:48:41 +0200 Subject: [PATCH 01/20] fix: refactored fee token symbol --- .eslintrc | 1 + app/src/modules/win.js | 2 +- setup/config/webpack.config.dev.js | 1 - setup/config/webpack.config.electron.js | 6 ++++ src/modules/network/configuration/networks.js | 2 +- .../fungible/components/SendForm/SendForm.js | 10 ++++++- .../TransactionPriority/FeeViewer.js | 12 ++++---- .../components/TxComposer/index.js | 29 +++++++++++++++---- .../useTransactionFee/useTransactionFee.js | 5 +++- src/theme/Tooltip/tooltip.js | 2 +- 10 files changed, 53 insertions(+), 17 deletions(-) diff --git a/.eslintrc b/.eslintrc index 80f5fc117e..8de4e159a9 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,6 +4,7 @@ "plugins": ["import", "babel", "jest", "prettier"], "globals": { "ipc": true, + "LISK_ENABLE_DEV_TOOL": true, "PRODUCTION": true }, "env": { diff --git a/app/src/modules/win.js b/app/src/modules/win.js index 6675a70973..dcb029ecd5 100644 --- a/app/src/modules/win.js +++ b/app/src/modules/win.js @@ -29,7 +29,7 @@ const win = { }); // Enables DevTools - const { LISK_ENABLE_DEV_TOOL, DEBUG } = process.env(); + const { DEBUG } = process.env(); if (LISK_ENABLE_DEV_TOOL || DEBUG) { win.browser.devtools = true; diff --git a/setup/config/webpack.config.dev.js b/setup/config/webpack.config.dev.js index 1f624912d3..031cb2429b 100644 --- a/setup/config/webpack.config.dev.js +++ b/setup/config/webpack.config.dev.js @@ -23,7 +23,6 @@ const config = { new ESLintPlugin({ context: '../', }), - // new webpack.IgnorePlugin({ resourceRegExp: /\.\/locale$/ }), new webpack.DefinePlugin({ PRODUCTION: JSON.stringify(false), VERSION: JSON.stringify(version), diff --git a/setup/config/webpack.config.electron.js b/setup/config/webpack.config.electron.js index 2bdd14bd6e..5d4ffae19b 100644 --- a/setup/config/webpack.config.electron.js +++ b/setup/config/webpack.config.electron.js @@ -1,4 +1,5 @@ const { resolve } = require('path'); +const webpack = require('webpack'); const merge = require('webpack-merge'); const baseConfig = require('./webpack.config'); @@ -26,6 +27,11 @@ const config = { }, ], }, + plugins: [ + new webpack.DefinePlugin({ + LISK_ENABLE_DEV_TOOL: JSON.parse(process.env.LISK_ENABLE_DEV_TOOL), + }), + ], }; module.exports = merge(baseConfig, config); diff --git a/src/modules/network/configuration/networks.js b/src/modules/network/configuration/networks.js index a2c7fd7f4a..dd3fc84633 100644 --- a/src/modules/network/configuration/networks.js +++ b/src/modules/network/configuration/networks.js @@ -34,7 +34,7 @@ const networks = { label: 'Devnet', serviceUrl: 'http://devnet-service.liskdev.net:9901', wsServiceUrl: 'ws://devnet-service.liskdev.net:9901', - isAvailable: false, + isAvailable: true, }, [networkKeys.testnet]: { name: networkKeys.testnet, diff --git a/src/modules/token/fungible/components/SendForm/SendForm.js b/src/modules/token/fungible/components/SendForm/SendForm.js index b7b6af732a..b451327478 100644 --- a/src/modules/token/fungible/components/SendForm/SendForm.js +++ b/src/modules/token/fungible/components/SendForm/SendForm.js @@ -11,6 +11,7 @@ import BoxHeader from '@theme/box/header'; import { maxMessageLength } from '@transaction/configuration/transactions'; import { useApplicationExploreAndMetaData, + useApplicationManagement, useCurrentApplication, } from '@blockchainApplication/manage/hooks'; import MenuSelect, { MenuItem } from '@wallet/components/MenuSelect'; @@ -73,11 +74,18 @@ const SendForm = (props) => { props.initialValue?.address ?? props.initialValue?.recipient ) ); + const { applications: managedApps } = useApplicationManagement(); + + const mainChainApplication = useMemo( + () => managedApps.find(({ chainID }) => /0{4}$/.test(chainID)), + [managedApps] + ); const onComposed = useCallback((status) => { Piwik.trackingEvent('Send_Form', 'button', 'Next step'); setMaxAmount(status.maxAmount); }, []); + const onConfirm = useCallback((formProps, transactionJSON, selectedPriority, fees) => { nextStep({ selectedPriority, @@ -214,7 +222,7 @@ const SendForm = (props) => { onChange={(value) => setRecipientChain(value)} select={(selectedValue, option) => selectedValue?.chainID === option.chainID} > - {applications.map((application) => ( + {[mainChainApplication, ...applications].map((application) => ( !isHidden); - const transactionFeeList = composedFeeList.find( - ({ title }) => title === 'Transaction' - )?.components; + // const transactionFeeList = composedFeeList.find( + // ({ title }) => title === 'Transaction' + // )?.components; const onInputFocus = (e) => { e.preventDefault(); @@ -123,7 +123,7 @@ const FeesViewer = ({ return (
- {composedFeeList.map(({ title, value }) => ( + {composedFeeList.map(({ title, value, components }) => (
{title} @@ -133,12 +133,12 @@ const FeesViewer = ({

{t('Fee breakdown')}

- {transactionFeeList.map(({ type, value: feeValueInfo }, index) => ( + {components.map(({ type, value: feeValueInfo, feeToken }, index) => ( ))}
diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index b640b7acb3..d0543f97a2 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -19,6 +19,7 @@ import { getTotalSpendingAmount } from '@transaction/utils/transaction'; import { convertFromBaseDenom } from '@token/fungible/utils/helpers'; import { useDeprecatedAccount } from '@account/hooks/useDeprecatedAccount'; import { useTransactionFee } from '@transaction/hooks/useTransactionFee'; +import { useAppsMetaTokens } from '@token/fungible/hooks/queries'; import { PrimaryButton } from 'src/theme/buttons'; import { useCommandSchema } from 'src/modules/network/hooks'; import Feedback from './Feedback'; @@ -49,7 +50,6 @@ const TxComposer = ({ }, ] = useCurrentAccount(); const { data: auth } = useAuth({ config: { params: { address } } }); - const { symbol: tokenSymbol = '' } = formProps.fields.token || {}; const { fields } = formProps; const [customFee, setCustomFee] = useState(); const [feedback, setFeedBack] = useState(formProps.feedback); @@ -81,6 +81,7 @@ const TxComposer = ({ isFetched = true, isLoading: isLoadingFee, feeEstimateError, + feeTokenID, } = useTransactionFee({ selectedPriority, transactionJSON, @@ -89,6 +90,21 @@ const TxComposer = ({ extraCommandFee: formProps.extraCommandFee, }); + const { data: { data: feeTokens } = {} } = useAppsMetaTokens({ + config: { parmas: { tokenID: feeTokenID, limit: 1 } }, + }); + const { data: { data: messageFeeTokens } = {} } = useAppsMetaTokens({ + config: { parmas: { tokenID: messageFeeTokenID, limit: 1 } }, + }); + const feeToken = feeTokens?.[0]; + const messageFeeToken = messageFeeTokens?.[0]; + + commandParams = { + ...commandParams, + feeToken, + messageFeeToken, + }; + if (isFetched && fields?.sendingChain?.chainID !== fields?.recipientChain?.chainID) { transactionJSON.params = { ...transactionJSON.params, @@ -130,10 +146,13 @@ const TxComposer = ({ title: 'Transaction', value: getFeeStatus({ fee: Number(convertFromBaseDenom(transactionFee, formProps.fields.token)), - tokenSymbol, + tokenSymbol: feeToken?.symbol, customFee, }), - components, + components: components.map((component) => ({ + ...component, + feeToken, + })), }, { title: 'Message', @@ -141,7 +160,7 @@ const TxComposer = ({ fee: Number( convertFromBaseDenom(transactionJSON.params.messageFee || 0, formProps.fields.token) ), - tokenSymbol, + tokenSymbol: messageFeeToken?.symbol, customFee, }), isHidden: !transactionJSON.params.messageFee, @@ -184,7 +203,7 @@ const TxComposer = ({ {children} Date: Sat, 9 Sep 2023 13:29:24 +0200 Subject: [PATCH 02/20] fix: resolved issues from oskar --- .../token/fungible/components/SendForm/SendForm.js | 10 +++++++++- .../components/TransactionPriority/FeeViewer.js | 3 --- src/modules/transaction/components/TxComposer/index.js | 10 ++++++---- src/modules/wallet/components/overview/overview.js | 6 +++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/modules/token/fungible/components/SendForm/SendForm.js b/src/modules/token/fungible/components/SendForm/SendForm.js index b451327478..f58ee2c52f 100644 --- a/src/modules/token/fungible/components/SendForm/SendForm.js +++ b/src/modules/token/fungible/components/SendForm/SendForm.js @@ -170,6 +170,14 @@ const SendForm = (props) => { sendFormProps.moduleCommand = MODULE_COMMANDS_NAME_MAP.transferCrossChain; } + const toApplications = useMemo(() => { + if (mainChainApplication.chainID !== currentApplication.chainID) { + return [mainChainApplication, ...applications]; + } + + return applications; + }, [mainChainApplication, currentApplication]); + return (
{ onChange={(value) => setRecipientChain(value)} select={(selectedValue, option) => selectedValue?.chainID === option.chainID} > - {[mainChainApplication, ...applications].map((application) => ( + {toApplications.map((application) => ( !isHidden); - // const transactionFeeList = composedFeeList.find( - // ({ title }) => title === 'Transaction' - // )?.components; const onInputFocus = (e) => { e.preventDefault(); diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index d0543f97a2..050e25dd8d 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -19,7 +19,7 @@ import { getTotalSpendingAmount } from '@transaction/utils/transaction'; import { convertFromBaseDenom } from '@token/fungible/utils/helpers'; import { useDeprecatedAccount } from '@account/hooks/useDeprecatedAccount'; import { useTransactionFee } from '@transaction/hooks/useTransactionFee'; -import { useAppsMetaTokens } from '@token/fungible/hooks/queries'; +import { useTokenBalances } from '@token/fungible/hooks/queries'; import { PrimaryButton } from 'src/theme/buttons'; import { useCommandSchema } from 'src/modules/network/hooks'; import Feedback from './Feedback'; @@ -90,10 +90,10 @@ const TxComposer = ({ extraCommandFee: formProps.extraCommandFee, }); - const { data: { data: feeTokens } = {} } = useAppsMetaTokens({ + const { data: { data: feeTokens } = {} } = useTokenBalances({ config: { parmas: { tokenID: feeTokenID, limit: 1 } }, }); - const { data: { data: messageFeeTokens } = {} } = useAppsMetaTokens({ + const { data: { data: messageFeeTokens } = {} } = useTokenBalances({ config: { parmas: { tokenID: messageFeeTokenID, limit: 1 } }, }); const feeToken = feeTokens?.[0]; @@ -230,7 +230,9 @@ const TxComposer = ({ disabled={ !formProps.isFormValid || minRequiredBalance > BigInt(formProps.fields?.token?.availableBalance || 0) || - !isFetched + !isFetched || + !!feeEstimateError || + isLoadingFee } > {buttonTitle ?? t('Continue')} diff --git a/src/modules/wallet/components/overview/overview.js b/src/modules/wallet/components/overview/overview.js index f31f8486eb..17bca5a71b 100644 --- a/src/modules/wallet/components/overview/overview.js +++ b/src/modules/wallet/components/overview/overview.js @@ -128,7 +128,11 @@ const Overview = ({ isWalletRoute, history }) => {
{t('Send')} From f79277e8ef016e961189c1d47df9bf7d743f7539 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 09:37:55 +0200 Subject: [PATCH 03/20] fix: resolved deep scan issue --- src/modules/transaction/components/TxComposer/index.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index 050e25dd8d..490ca2f80c 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -99,12 +99,6 @@ const TxComposer = ({ const feeToken = feeTokens?.[0]; const messageFeeToken = messageFeeTokens?.[0]; - commandParams = { - ...commandParams, - feeToken, - messageFeeToken, - }; - if (isFetched && fields?.sendingChain?.chainID !== fields?.recipientChain?.chainID) { transactionJSON.params = { ...transactionJSON.params, From 5ec16837df403a19396328653a8a72e1d9a4caff Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 09:45:47 +0200 Subject: [PATCH 04/20] wip: fixing build issue --- setup/config/webpack.config.electron.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/config/webpack.config.electron.js b/setup/config/webpack.config.electron.js index 5d4ffae19b..7770b45ad4 100644 --- a/setup/config/webpack.config.electron.js +++ b/setup/config/webpack.config.electron.js @@ -29,7 +29,7 @@ const config = { }, plugins: [ new webpack.DefinePlugin({ - LISK_ENABLE_DEV_TOOL: JSON.parse(process.env.LISK_ENABLE_DEV_TOOL), + LISK_ENABLE_DEV_TOOL: JSON.parse(process.env.ENABLE_DEV_TOOL || true), }), ], }; From 06c6a815b6dd504191d75905003aeaff18130053 Mon Sep 17 00:00:00 2001 From: ManuGowda Date: Mon, 11 Sep 2023 11:28:14 +0200 Subject: [PATCH 05/20] :bug: Fix token endpoint invoke conditionally handle the default fee value --- src/modules/token/fungible/hooks/queries/useTokenBalances.js | 3 ++- .../transaction/components/TransactionPriority/FeeViewer.js | 2 +- src/modules/transaction/components/TxComposer/index.js | 5 +++-- src/modules/transaction/utils/helpers.js | 4 ++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/modules/token/fungible/hooks/queries/useTokenBalances.js b/src/modules/token/fungible/hooks/queries/useTokenBalances.js index 0e0c7d629a..69bd48a91a 100644 --- a/src/modules/token/fungible/hooks/queries/useTokenBalances.js +++ b/src/modules/token/fungible/hooks/queries/useTokenBalances.js @@ -37,11 +37,12 @@ export const useTokenBalances = ({ transformResult, params: { address, ...(customConfig.params || {}) }, }); + const { enabled = true } = options || {}; return useCustomInfiniteQuery({ keys: [TOKENS_BALANCE], config, - options: { ...options, enabled: !!address }, + options: { ...options, enabled: !!address && enabled }, client, }); }; diff --git a/src/modules/transaction/components/TransactionPriority/FeeViewer.js b/src/modules/transaction/components/TransactionPriority/FeeViewer.js index 6a8c6c651e..f8b433c0d1 100644 --- a/src/modules/transaction/components/TransactionPriority/FeeViewer.js +++ b/src/modules/transaction/components/TransactionPriority/FeeViewer.js @@ -126,7 +126,7 @@ const FeesViewer = ({ {typeof value === 'object' ? value?.value : value} {isCustom && showEditIcon && title === 'Transaction' && } - {title === 'Transaction' && ( + {title === 'Transaction' && components.length !== 0 && (

{t('Fee breakdown')}

diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index 490ca2f80c..04f7f777ce 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -91,14 +91,15 @@ const TxComposer = ({ }); const { data: { data: feeTokens } = {} } = useTokenBalances({ - config: { parmas: { tokenID: feeTokenID, limit: 1 } }, + config: { params: { tokenID: feeTokenID, limit: 1 } }, options: { enabled: !!feeTokenID } }); const { data: { data: messageFeeTokens } = {} } = useTokenBalances({ - config: { parmas: { tokenID: messageFeeTokenID, limit: 1 } }, + config: { params: { tokenID: messageFeeTokenID, limit: 1 } }, options: { enabled: !!messageFeeTokenID } }); const feeToken = feeTokens?.[0]; const messageFeeToken = messageFeeTokens?.[0]; + console.log({ feeToken, messageFeeToken, feeTokenID, messageFeeTokenID }); if (isFetched && fields?.sendingChain?.chainID !== fields?.recipientChain?.chainID) { transactionJSON.params = { ...transactionJSON.params, diff --git a/src/modules/transaction/utils/helpers.js b/src/modules/transaction/utils/helpers.js index ea5daaccc0..ad23e2eea0 100644 --- a/src/modules/transaction/utils/helpers.js +++ b/src/modules/transaction/utils/helpers.js @@ -27,6 +27,10 @@ const getTxDirectionConfig = (moduleCommand, host, recipient, styles) => { }; export const getFeeStatus = ({ fee, tokenSymbol, customFee }) => { + if (!tokenSymbol || !fee) { + return '-'; + } + if (customFee) { return `${formatAmountBasedOnLocale({ value: customFee.value })} ${tokenSymbol}`; } From cf8ffd1203337bb886af515404e264130b5871d8 Mon Sep 17 00:00:00 2001 From: ManuGowda Date: Mon, 11 Sep 2023 11:28:23 +0200 Subject: [PATCH 06/20] :nail_care: Format files --- libs/hardwareWallet/ledger/constants.js | 4 ++-- src/modules/token/fungible/store/actions.js | 2 +- src/modules/transaction/components/TxComposer/index.js | 6 ++++-- .../components/RegisterMultisigForm/MemberField.test.js | 5 ++++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libs/hardwareWallet/ledger/constants.js b/libs/hardwareWallet/ledger/constants.js index b45118ac22..09487cc10b 100644 --- a/libs/hardwareWallet/ledger/constants.js +++ b/libs/hardwareWallet/ledger/constants.js @@ -12,7 +12,7 @@ export const LEDGER_HW_IPC_CHANNELS = { export const LEDGER_CUSTOM_ERRORS = { openDevicePath: { return_code: 1, - match: 'cannot open device with path' - } + match: 'cannot open device with path', + }, }; export const CHECK_STATUS_INTERVAL = 4000; diff --git a/src/modules/token/fungible/store/actions.js b/src/modules/token/fungible/store/actions.js index 44d36aa1a7..9d0794ef24 100644 --- a/src/modules/token/fungible/store/actions.js +++ b/src/modules/token/fungible/store/actions.js @@ -10,7 +10,7 @@ export const tokensTransferred = (formProps, transactionJSON, privateKey, _, senderAccount, moduleCommandSchemas) => async (dispatch, getState) => { const state = getState(); - const wallet = selectCurrentAccountWithSigningData(state); + const wallet = selectCurrentAccountWithSigningData(state); const [error, tx] = await to( signTransaction({ transactionJSON, diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index 04f7f777ce..543572edc7 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -91,10 +91,12 @@ const TxComposer = ({ }); const { data: { data: feeTokens } = {} } = useTokenBalances({ - config: { params: { tokenID: feeTokenID, limit: 1 } }, options: { enabled: !!feeTokenID } + config: { params: { tokenID: feeTokenID, limit: 1 } }, + options: { enabled: !!feeTokenID }, }); const { data: { data: messageFeeTokens } = {} } = useTokenBalances({ - config: { params: { tokenID: messageFeeTokenID, limit: 1 } }, options: { enabled: !!messageFeeTokenID } + config: { params: { tokenID: messageFeeTokenID, limit: 1 } }, + options: { enabled: !!messageFeeTokenID }, }); const feeToken = feeTokens?.[0]; const messageFeeToken = messageFeeTokens?.[0]; diff --git a/src/modules/wallet/components/RegisterMultisigForm/MemberField.test.js b/src/modules/wallet/components/RegisterMultisigForm/MemberField.test.js index 786e73bac4..5ad897c988 100644 --- a/src/modules/wallet/components/RegisterMultisigForm/MemberField.test.js +++ b/src/modules/wallet/components/RegisterMultisigForm/MemberField.test.js @@ -54,7 +54,10 @@ describe('MemberField', () => { it('Should change changeIdentifier', () => { const wrapper = mount(); - wrapper.find('.msign-pk-input').at(1).simulate('change', { target: { value: 'key' } }); + wrapper + .find('.msign-pk-input') + .at(1) + .simulate('change', { target: { value: 'key' } }); const expectedObj = { index: props.index, publicKey: 'key', isMandatory: true }; expect(props.onChangeMember).toHaveBeenCalledWith(expectedObj); }); From f89071ef3d7c019d65f828ab5e61c8ed7ae53a15 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 11:58:47 +0200 Subject: [PATCH 07/20] wip: resolved unit test on win and txcompoer --- app/src/modules/win.test.js | 1 + .../components/TxComposer/index.test.js | 43 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/app/src/modules/win.test.js b/app/src/modules/win.test.js index 59b6cd9d2e..00bef3095b 100644 --- a/app/src/modules/win.test.js +++ b/app/src/modules/win.test.js @@ -15,6 +15,7 @@ describe('Electron Browser Window Wrapper', () => { register: () => {}, }; const url = 'http://localhost:8080/'; + window.LISK_ENABLE_DEV_TOOL = false; const electron = { screen: { getPrimaryDisplay: () => ({ workAreaSize: { width: 1400, height: 900 } }) }, diff --git a/src/modules/transaction/components/TxComposer/index.test.js b/src/modules/transaction/components/TxComposer/index.test.js index 07ff66af9a..b3c30d77d3 100644 --- a/src/modules/transaction/components/TxComposer/index.test.js +++ b/src/modules/transaction/components/TxComposer/index.test.js @@ -4,11 +4,14 @@ import { mountWithQueryClient, mountWithQueryAndProps } from 'src/utils/testHelp import { mockCommandParametersSchemas } from 'src/modules/common/__fixtures__'; import accounts from '@tests/constants/wallets'; import { genKey, blsKey, pop } from '@tests/constants/keys'; +import { mockAppsTokens } from '@token/fungible/__fixtures__'; +import { useTokenBalances } from '@token/fungible/hooks/queries'; import { useTransactionEstimateFees } from '@transaction/hooks/queries/useTransactionEstimateFees'; import * as encodingUtils from '../../utils/encoding'; import TxComposer from './index'; jest.mock('@transaction/hooks/queries/useTransactionEstimateFees'); +jest.mock('@token/fungible/hooks/queries/useTokenBalances'); jest.mock('@network/hooks/useCommandsSchema'); jest.spyOn(encodingUtils, 'fromTransactionJSON').mockImplementation((tx) => tx); jest.mock('@account/hooks/useDeprecatedAccount', () => ({ @@ -25,6 +28,10 @@ jest.mock('@liskhq/lisk-client', () => ({ }, })); +beforeEach(() => { + jest.clearAllMocks(); +}); + describe('TxComposer', () => { const props = { children: null, @@ -70,6 +77,8 @@ describe('TxComposer', () => { isFetching: false, isFetched: true, error: false, + isLoadingFee: false, + feeEstimateError: false, }); useCommandSchema.mockReturnValue({ @@ -78,6 +87,7 @@ describe('TxComposer', () => { {} ), }); + useTokenBalances.mockReturnValue({ data: mockAppsTokens }); it('should provide feedback when form is invalid', () => { const newProps = { @@ -174,13 +184,44 @@ describe('TxComposer', () => { }, isFetching: false, isFetched: true, + isLoading: false, }); const wrapper = mountWithQueryClient(TxComposer, newProps); expect(wrapper.find('TransactionPriority')).toExist(); expect(wrapper.find('Feedback').html()).toEqual(null); expect(wrapper.find('.confirm-btn')).toExist(); - expect(wrapper.find('.confirm-btn').at(0).props().disabled).toEqual(false); + expect(wrapper.find('.confirm-btn').at(0).props().disabled).toEqual(true); + expect(wrapper.find('.confirm-btn').at(0).props().children).toEqual('Continue to summary'); + }); + + it('should have its continue button to be disabled', () => { + const newProps = { + ...props, + buttonTitle: 'Continue to summary', + formProps: { + isFormValid: true, + moduleCommand: MODULE_COMMANDS_NAME_MAP.transfer, + fields: { token: { availableBalance: 10000000000000 } }, + sendingChain: { chainID: '1' }, + recipientChain: { chainID: '2' }, + }, + commandParams: {}, + }; + + useTransactionEstimateFees.mockReturnValue({ + data: mockEstimateFeeResponse, + isFetching: true, + isFetched: true, + error: false, + feeEstimateError: true, + }); + + const wrapper = mountWithQueryClient(TxComposer, newProps); + expect(wrapper.find('TransactionPriority')).toExist(); + expect(wrapper.find('Feedback').html()).toEqual(null); + expect(wrapper.find('.confirm-btn')).toExist(); + expect(wrapper.find('.confirm-btn').at(0).props().disabled).toEqual(true); expect(wrapper.find('.confirm-btn').at(0).props().children).toEqual('Continue to summary'); }); }); From f16bd2d679f73031c1b962c0f044539bb9d52d3a Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 12:11:34 +0200 Subject: [PATCH 08/20] wip: fixed unit test on send view --- src/modules/token/fungible/components/SendView/index.test.js | 4 +++- src/modules/transaction/components/TxComposer/index.js | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/token/fungible/components/SendView/index.test.js b/src/modules/token/fungible/components/SendView/index.test.js index 07e4d6a0cc..5f0eecca12 100644 --- a/src/modules/token/fungible/components/SendView/index.test.js +++ b/src/modules/token/fungible/components/SendView/index.test.js @@ -38,7 +38,9 @@ jest.mock('@libs/wcm/hooks/useSession', () => ({ useApplicationManagement.mockReturnValue({ setApplication: mockSetApplication, - applications: mockManagedApplications, + applications: mockManagedApplications.map((app, index) => + index === 0 ? { ...app, chainID: '00010000' } : app + ), }); useCurrentAccount.mockReturnValue([mockSavedAccounts[0], mockSetAccount]); diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index 543572edc7..625bce57b5 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -101,7 +101,6 @@ const TxComposer = ({ const feeToken = feeTokens?.[0]; const messageFeeToken = messageFeeTokens?.[0]; - console.log({ feeToken, messageFeeToken, feeTokenID, messageFeeTokenID }); if (isFetched && fields?.sendingChain?.chainID !== fields?.recipientChain?.chainID) { transactionJSON.params = { ...transactionJSON.params, From 9d4aa3f15d8d74b645e48154f5a4f25cc9e769d6 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 12:14:09 +0200 Subject: [PATCH 09/20] wip: fixed unit test on useTransactionFee --- .../hooks/useTransactionFee/useTransactionFee.test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/transaction/hooks/useTransactionFee/useTransactionFee.test.js b/src/modules/transaction/hooks/useTransactionFee/useTransactionFee.test.js index 9862e5db3b..443c1cc4ce 100644 --- a/src/modules/transaction/hooks/useTransactionFee/useTransactionFee.test.js +++ b/src/modules/transaction/hooks/useTransactionFee/useTransactionFee.test.js @@ -69,6 +69,7 @@ describe('useTransactionFee', () => { isLoading: false, messageFee: 0n, messageFeeTokenID: undefined, + feeTokenID: '0400000000000000', minimumFee: 5147764n, transactionFee: '5147764', }); From 8800ea46ad18313d729c0f92362a0e8035085a25 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 12:23:01 +0200 Subject: [PATCH 10/20] wip: fixed unit test on TransactionPriority --- .../components/TransactionPriority/TransactionPriority.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/transaction/components/TransactionPriority/TransactionPriority.js b/src/modules/transaction/components/TransactionPriority/TransactionPriority.js index f1d447c53c..8585f33ec4 100644 --- a/src/modules/transaction/components/TransactionPriority/TransactionPriority.js +++ b/src/modules/transaction/components/TransactionPriority/TransactionPriority.js @@ -135,7 +135,7 @@ const TransactionPriority = ({ {{minFee}} {{tokenSymbol}}. If you don't know what fee to pay, choose one of the provided transaction priorities. `, - { minFee, tokenSymbol: token.symbol } + { minFee, tokenSymbol: token?.symbol } )}

From 4836199a646a506c7534c87781168cc9399147de Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 12:27:43 +0200 Subject: [PATCH 11/20] wip: fixed unit test on sendform --- src/modules/token/fungible/components/SendForm/form.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/token/fungible/components/SendForm/form.test.js b/src/modules/token/fungible/components/SendForm/form.test.js index 9aca14d154..61f9643cf3 100644 --- a/src/modules/token/fungible/components/SendForm/form.test.js +++ b/src/modules/token/fungible/components/SendForm/form.test.js @@ -91,7 +91,9 @@ describe('Form', () => { }); useApplicationManagement.mockReturnValue({ setApplication: mockSetApplication, - applications: mockManagedApplications, + applications: mockManagedApplications.map((app, index) => + index === 0 ? { ...app, chainID: '00010000' } : app + ), }); useCurrentApplication.mockReturnValue([mockCurrentApplication, mockSetCurrentApplication]); From 75f59fd2bdcfbb93c8fe5ebd0d05f83bb39e9637 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 12:34:08 +0200 Subject: [PATCH 12/20] fix: applied patch from manu --- .../Form/ChangeCommissionForm.test.js | 24 +++- .../UnlockBalanceForm/unlockBalance.test.js | 110 +++++++++++++----- 2 files changed, 96 insertions(+), 38 deletions(-) diff --git a/src/modules/pos/validator/components/ChangeCommission/Form/ChangeCommissionForm.test.js b/src/modules/pos/validator/components/ChangeCommission/Form/ChangeCommissionForm.test.js index 1ca165c074..734828bd2a 100644 --- a/src/modules/pos/validator/components/ChangeCommission/Form/ChangeCommissionForm.test.js +++ b/src/modules/pos/validator/components/ChangeCommission/Form/ChangeCommissionForm.test.js @@ -163,20 +163,32 @@ describe('ChangeCommissionForm', () => { expect.objectContaining({ fees: [ { - components: [{ type: 'bytesFee', value: 96000n }], + components: [ + { + feeToken: { availableBalance: 40000000, chainID: '04000000', symbol: 'LSK' }, + type: 'bytesFee', + value: 96000n, + }, + ], title: 'Transaction', - value: '0 LSK', + value: '-', }, - { components: [], isHidden: true, title: 'Message', value: '0 LSK' }, + { components: [], isHidden: true, title: 'Message', value: '-' }, ], formProps: { composedFees: [ { - components: [{ type: 'bytesFee', value: 96000n }], + components: [ + { + feeToken: { availableBalance: 40000000, chainID: '04000000', symbol: 'LSK' }, + type: 'bytesFee', + value: 96000n, + }, + ], title: 'Transaction', - value: '0 LSK', + value: '-', }, - { components: [], isHidden: true, title: 'Message', value: '0 LSK' }, + { components: [], isHidden: true, title: 'Message', value: '-' }, ], fields: { newCommission: '30.00', diff --git a/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js b/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js index 56030ac8d5..0e527fb20d 100644 --- a/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js +++ b/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js @@ -55,7 +55,7 @@ describe('Unlock LSK modal', () => { let wrapper; useTransactionPriority.mockImplementation(() => [ { selectedIndex: 1 }, - () => {}, + () => { }, [ { title: 'Low', value: 0.001 }, { title: 'Medium', value: 0.005 }, @@ -224,12 +224,22 @@ describe('Unlock LSK modal', () => { composedFees: [ { title: 'Transaction', - value: '0 LSK', - components: [{ type: 'bytesFee', value: 96000n }], + value: '-', + components: [{ + type: 'bytesFee', + value: 96000n, + feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, + }], }, { title: 'Message', - value: '0 LSK', + value: '-', isHidden: true, components: [], }, @@ -245,12 +255,20 @@ describe('Unlock LSK modal', () => { fees: [ { title: 'Transaction', - value: '0 LSK', - components: [{ type: 'bytesFee', value: 96000n }], + value: '-', + components: [{ + type: 'bytesFee', value: 96000n, feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, + }], }, { title: 'Message', - value: '0 LSK', + value: '-', isHidden: true, components: [], }, @@ -266,43 +284,71 @@ describe('Unlock LSK modal', () => { expect(props.nextStep).toBeCalledWith( expect.objectContaining({ - transactionJSON, + fees: [ + { + components: [ + { + feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, + type: 'bytesFee', + value: 96000n, + }, + ], + title: 'Transaction', + value: '-', + }, + { components: [], isHidden: true, title: 'Message', value: '-' }, + ], formProps: { composedFees: [ { + components: [ + { + feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, + type: 'bytesFee', + value: 96000n, + }, + ], title: 'Transaction', - value: '0 LSK', - components: [{ type: 'bytesFee', value: 96000n }], - }, - { - title: 'Message', - value: '0 LSK', - isHidden: true, - components: [], + value: '-', }, + { components: [], isHidden: true, title: 'Message', value: '-' }, ], - isFormValid: true, enableMinimumBalanceFeedback: true, - moduleCommand: 'pos:unlock', fields: { - token: mockTokensBalance.data[0], + token: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, }, + isFormValid: true, + moduleCommand: 'pos:unlock', unlockedAmount: 455000000000, }, - fees: [ - { - title: 'Transaction', - value: '0 LSK', - components: [{ type: 'bytesFee', value: 96000n }], - }, - { - title: 'Message', - value: '0 LSK', - isHidden: true, - components: [], - }, - ], selectedPriority: { selectedIndex: 1 }, + transactionJSON: { + command: 'unlock', + fee: '5104000', + module: 'pos', + nonce: '0', + params: {}, + senderPublicKey: 'cf434a889d6c7a064e8de61bb01759a76f585e5ff45a78ba8126ca332601f535', + signatures: [], + }, }) ); }); From 5d7159124574a1a41f205a4175a8e45e02817933 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 14:54:56 +0200 Subject: [PATCH 13/20] fix: resolved issue with error feedback reset --- src/modules/transaction/components/TxComposer/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/transaction/components/TxComposer/index.js b/src/modules/transaction/components/TxComposer/index.js index 625bce57b5..d1763ec510 100644 --- a/src/modules/transaction/components/TxComposer/index.js +++ b/src/modules/transaction/components/TxComposer/index.js @@ -130,6 +130,10 @@ const TxComposer = ({ } }, [selectedPriority, transactionJSON.params]); + useEffect(() => { + setFeedBack(null); + }, [formProps.fields]); + useEffect(() => { setFeedBack(formProps.feedback); }, [formProps.feedback]); From 18a7fe886029420f8bfcd868509f474b0b24b793 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 15:17:40 +0200 Subject: [PATCH 14/20] fix: resolved comments from oskar --- .../UnlockBalanceForm/unlockBalance.test.js | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js b/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js index 0e527fb20d..5ecb7a8fe4 100644 --- a/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js +++ b/src/modules/pos/validator/components/UnlockBalanceForm/unlockBalance.test.js @@ -55,7 +55,7 @@ describe('Unlock LSK modal', () => { let wrapper; useTransactionPriority.mockImplementation(() => [ { selectedIndex: 1 }, - () => { }, + () => {}, [ { title: 'Low', value: 0.001 }, { title: 'Medium', value: 0.005 }, @@ -225,17 +225,19 @@ describe('Unlock LSK modal', () => { { title: 'Transaction', value: '-', - components: [{ - type: 'bytesFee', - value: 96000n, - feeToken: { - availableBalance: '1000000000', - chainName: 'Lisk', - lockedBalances: [{ amount: '10000000000', moduleID: '5' }], - symbol: 'LSK', - tokenID: '0000000100000000', + components: [ + { + type: 'bytesFee', + value: 96000n, + feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, }, - }], + ], }, { title: 'Message', @@ -256,15 +258,19 @@ describe('Unlock LSK modal', () => { { title: 'Transaction', value: '-', - components: [{ - type: 'bytesFee', value: 96000n, feeToken: { - availableBalance: '1000000000', - chainName: 'Lisk', - lockedBalances: [{ amount: '10000000000', moduleID: '5' }], - symbol: 'LSK', - tokenID: '0000000100000000', + components: [ + { + type: 'bytesFee', + value: 96000n, + feeToken: { + availableBalance: '1000000000', + chainName: 'Lisk', + lockedBalances: [{ amount: '10000000000', moduleID: '5' }], + symbol: 'LSK', + tokenID: '0000000100000000', + }, }, - }], + ], }, { title: 'Message', From b83445dde2931162e96e623d17c75a04eeab74e0 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 15:24:11 +0200 Subject: [PATCH 15/20] fix: filtred out only available networks --- .../network/components/DialogAddNetwork/DialogAddNetwork.js | 5 ++++- src/modules/network/configuration/networks.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/network/components/DialogAddNetwork/DialogAddNetwork.js b/src/modules/network/components/DialogAddNetwork/DialogAddNetwork.js index 8ecc41f106..13ac06122e 100644 --- a/src/modules/network/components/DialogAddNetwork/DialogAddNetwork.js +++ b/src/modules/network/components/DialogAddNetwork/DialogAddNetwork.js @@ -53,7 +53,10 @@ const DialogAddNetwork = () => { // eslint-disable-next-line max-statements async function onSubmit(values) { setErrorText(''); - const fullNetworkList = [...Object.values(networks), ...customNetworks]; + const fullNetworkList = [ + ...Object.values(networks).filter(({ isAvailable }) => isAvailable), + ...customNetworks, + ]; const duplicateNetworkFields = getDuplicateNetworkFields(values, fullNetworkList, defaultName); if (duplicateNetworkFields) { const duplicates = Object.keys(duplicateNetworkFields) diff --git a/src/modules/network/configuration/networks.js b/src/modules/network/configuration/networks.js index dd3fc84633..a2c7fd7f4a 100644 --- a/src/modules/network/configuration/networks.js +++ b/src/modules/network/configuration/networks.js @@ -34,7 +34,7 @@ const networks = { label: 'Devnet', serviceUrl: 'http://devnet-service.liskdev.net:9901', wsServiceUrl: 'ws://devnet-service.liskdev.net:9901', - isAvailable: true, + isAvailable: false, }, [networkKeys.testnet]: { name: networkKeys.testnet, From fcbf88d2998e25289ae580229060c3f5107a403e Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 15:46:19 +0200 Subject: [PATCH 16/20] fix: resolved token symbol issue on stakes --- src/locales/en/common.json | 2 -- .../pos/validator/components/StakingQueue/index.js | 14 +++----------- .../transaction/components/Overview/Overview.js | 4 ++-- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/locales/en/common.json b/src/locales/en/common.json index 176aff6f95..dd18b8120b 100644 --- a/src/locales/en/common.json +++ b/src/locales/en/common.json @@ -418,7 +418,6 @@ "Number of signatures must be equal to the number of members.": "Number of signatures must be equal to the number of members.", "Number of signatures must be lower than {{num}}.": "Number of signatures must be lower than {{num}}.", "Number of signatures required to approve any outgoing transactions from this account.": "Number of signatures required to approve any outgoing transactions from this account.", - "Number of transactions / Volume (LSK)": "Number of transactions / Volume (LSK)", "Old Commission": "Old Commission", "Old wallet address": "Old wallet address", "Onboarding": "Onboarding", @@ -643,7 +642,6 @@ "Terminated": "Terminated", "Terms of Use": "Terms of Use", "The Lisk application is closed": "The Lisk application is closed", - "The aggregated LSK volume transferred over the selected time period.": "The aggregated LSK volume transferred over the selected time period.", "The chain ID uniquely identifies a chain in the Lisk ecosystem": "The chain ID uniquely identifies a chain in the Lisk ecosystem", "The commission set will be your reward while the rest will be shared with the stakers.": "The commission set will be your reward while the rest will be shared with the stakers.", "The default application can not be removed": "The default application can not be removed", diff --git a/src/modules/pos/validator/components/StakingQueue/index.js b/src/modules/pos/validator/components/StakingQueue/index.js index 3a77d404b3..b64de2d3ec 100644 --- a/src/modules/pos/validator/components/StakingQueue/index.js +++ b/src/modules/pos/validator/components/StakingQueue/index.js @@ -1,8 +1,6 @@ /* istanbul ignore file */ -import React, { useEffect, useMemo, useState, useCallback } from 'react'; - +import React, { useEffect, useState, useCallback } from 'react'; import TxSignatureCollector from '@transaction/components/TxSignatureCollector'; -import { useTokenBalances } from 'src/modules/token/fungible/hooks/queries'; import { removeSearchParamsFromUrl } from 'src/utils/searchParams'; import MultiStep from 'src/modules/common/components/OldMultiStep'; import Dialog from 'src/theme/dialog/dialog'; @@ -10,7 +8,7 @@ import StakeForm from '../StakeForm'; import StakeSummary from '../StakeSummary'; import StakeStatus from '../StakeStatus'; import styles from './styles.css'; -import { usePosConstants } from '../../hooks/queries'; +import usePosToken from '../../hooks/usePosToken'; const StakingQueue = ({ history, processLaunchProtocol }) => { const [isStepTxSignatureCollector, setIsStepTxSignatureCollector] = useState(false); @@ -18,13 +16,7 @@ const StakingQueue = ({ history, processLaunchProtocol }) => { setIsStepTxSignatureCollector([2, 3].includes(current)); }, []); - const { data: posConstants, isLoading: isGettingPosConstants } = usePosConstants(); - - const { data: tokens } = useTokenBalances({ - config: { params: { tokenID: posConstants?.posTokenID } }, - options: { enabled: !isGettingPosConstants }, - }); - const token = useMemo(() => tokens?.data?.[0] || {}, [tokens]); + const { token } = usePosToken(); const closeModal = () => { removeSearchParamsFromUrl(history, ['modal'], true); diff --git a/src/modules/transaction/components/Overview/Overview.js b/src/modules/transaction/components/Overview/Overview.js index 284a057015..8b56ac7889 100644 --- a/src/modules/transaction/components/Overview/Overview.js +++ b/src/modules/transaction/components/Overview/Overview.js @@ -260,12 +260,12 @@ const Overview = () => {
-

{t('Number of transactions / Volume (LSK)')}

+

{t(`Number of transactions / Volume (${token?.symbol})`)}

); -const MultiSignatureReview = ({ t, members, fee, numberOfSignatures }) => { - const { data: tokens } = useTokenBalances(); - const token = tokens?.data?.[0] || {}; - - return ( - <> - -
- - {numberOfSignatures} - - - - -
- - ); -}; +const MultiSignatureReview = ({ t, members, fee, numberOfSignatures, token }) => ( + <> + +
+ + {numberOfSignatures} + + + + +
+ +); export default MultiSignatureReview; diff --git a/src/modules/transaction/components/RegisterMultisignatureGroup/RegisterMultisignatureGroup.js b/src/modules/transaction/components/RegisterMultisignatureGroup/RegisterMultisignatureGroup.js index 457db8db3e..fd6625915b 100644 --- a/src/modules/transaction/components/RegisterMultisignatureGroup/RegisterMultisignatureGroup.js +++ b/src/modules/transaction/components/RegisterMultisignatureGroup/RegisterMultisignatureGroup.js @@ -2,7 +2,7 @@ import React from 'react'; import { extractAddressFromPublicKey } from '@wallet/utils/account'; import MultiSignatureReview from '../MultiSignatureReview'; -const RegisterMultisignatureGroup = ({ t, transactionJSON }) => { +const RegisterMultisignatureGroup = ({ t, transactionJSON, formProps }) => { const mandatory = transactionJSON.params.mandatoryKeys.map((item) => ({ address: extractAddressFromPublicKey(item), publicKey: item, @@ -13,10 +13,12 @@ const RegisterMultisignatureGroup = ({ t, transactionJSON }) => { publicKey: item, isMandatory: false, })); + return ( diff --git a/src/modules/wallet/components/RegisterMultisigForm/index.js b/src/modules/wallet/components/RegisterMultisigForm/index.js index d811082378..ffec9bf9b2 100644 --- a/src/modules/wallet/components/RegisterMultisigForm/index.js +++ b/src/modules/wallet/components/RegisterMultisigForm/index.js @@ -80,7 +80,10 @@ const Form = ({ nextStep, prevState = {}, onNext }) => { const [currentAccount] = useCurrentAccount(); const [currentApplication] = useCurrentApplication(); const { data: tokens } = useTokenBalances(currentApplication); - const defaultToken = useMemo(() => tokens?.data?.[0] || {}, [tokens]); + const defaultToken = useMemo( + () => tokens?.data?.find(({ chainID }) => chainID === currentApplication.chainID) || {}, + [tokens] + ); const [mandatoryKeys, optionalKeys] = useMemo(() => { const mandatory = members From 7259fd3473e897f17d1b4179ce85bfb7ccd53987 Mon Sep 17 00:00:00 2001 From: Eniola Olatunji Date: Mon, 11 Sep 2023 16:39:35 +0200 Subject: [PATCH 18/20] fix: resolved token symbol issue on transaction table --- src/modules/account/const/accountMenu.js | 8 +++++--- src/modules/block/components/blockDetails/blockDetails.js | 4 +++- .../transaction/components/TransactionRow/index.js | 4 +++- src/modules/wallet/components/AccountDetails/index.js | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/modules/account/const/accountMenu.js b/src/modules/account/const/accountMenu.js index f28e9bfe35..98872c12b8 100644 --- a/src/modules/account/const/accountMenu.js +++ b/src/modules/account/const/accountMenu.js @@ -31,9 +31,11 @@ export const accountMenu = ({ }, { component: hasAvailableTokenBalance ? 'multiSignature' : 'noTokenBalance', - data: { - message: i18next.t('Token balance is not enough to register a multisignature account.'), - }, + data: !hasAvailableTokenBalance + ? { + message: i18next.t('Token balance is not enough to register a multisignature account.'), + } + : {}, icon: 'multiSignatureOutline', label: 'Register multisignature account', isHidden: authData?.data?.numberOfSignatures > 0 || hasNetworkError || isLoadingNetwork, diff --git a/src/modules/block/components/blockDetails/blockDetails.js b/src/modules/block/components/blockDetails/blockDetails.js index 3088f35eea..8260ac973b 100644 --- a/src/modules/block/components/blockDetails/blockDetails.js +++ b/src/modules/block/components/blockDetails/blockDetails.js @@ -17,6 +17,7 @@ import TokenAmount from '@token/fungible/components/tokenAmount'; import Transactions from '@transaction/components/BlockDetailsTransactions'; import { truncateAddress } from '@wallet/utils/account'; import WalletVisual from '@wallet/components/walletVisual'; +import { useCurrentApplication } from '@blockchainApplication/manage/hooks'; import TransactionEvents from '@transaction/components/TransactionEvents'; import { useBlocks } from '../../hooks/queries/useBlocks'; import { useLatestBlock } from '../../hooks/queries/useLatestBlock'; @@ -104,7 +105,8 @@ const getFields = (data = {}, token, t, currentHeight) => ({ const Rows = ({ data, t, currentHeight }) => { const { data: tokens } = useTokenBalances(); - const token = tokens?.data?.[0] || {}; + const [currentApplication] = useCurrentApplication(); + const token = tokens?.data?.find(({ chainID }) => chainID === currentApplication.chainID) || {}; const fields = getFields(data, token, t, currentHeight); diff --git a/src/modules/transaction/components/TransactionRow/index.js b/src/modules/transaction/components/TransactionRow/index.js index ecfd81b171..24c419bece 100644 --- a/src/modules/transaction/components/TransactionRow/index.js +++ b/src/modules/transaction/components/TransactionRow/index.js @@ -4,6 +4,7 @@ import { Link } from 'react-router-dom'; import { useTokenBalances } from '@token/fungible/hooks/queries'; import routes from 'src/routes/routes'; import grid from 'flexboxgrid/dist/flexboxgrid.css'; +import { useCurrentApplication } from '@blockchainApplication/manage/hooks'; import LayoutSchema from './layoutSchema'; import TransactionRowContext from '../../context/transactionRowContext'; import styles from './schemas.css'; @@ -22,8 +23,9 @@ const TransactionRow = ({ isWallet, }) => { const Layout = LayoutSchema[layout] || LayoutSchema.default; + const [currentApplication] = useCurrentApplication(); const { data: tokens } = useTokenBalances(); - const token = tokens?.data?.[0] || {}; + const token = tokens?.data?.find(({ chainID }) => chainID === currentApplication.chainID) || {}; return ( {
{readMode ? ( <> -

{authData?.meta?.name || currentAccount.metadata?.name}

+

{currentAccount.metadata?.name}

{numberOfSignatures > 0 && } {!authLoading && !queryAddress && ( setMode(e)} /> From eaa37e205ed5f85010d6496899c0ae64b4859c03 Mon Sep 17 00:00:00 2001 From: Oskar Fransson Date: Mon, 11 Sep 2023 16:59:51 +0200 Subject: [PATCH 19/20] mock return empty object from selectors --- .../TransactionMonitor/TransactionMonitorList.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/transaction/components/TransactionMonitor/TransactionMonitorList.test.js b/src/modules/transaction/components/TransactionMonitor/TransactionMonitorList.test.js index 3f47418eb5..de591baf4c 100644 --- a/src/modules/transaction/components/TransactionMonitor/TransactionMonitorList.test.js +++ b/src/modules/transaction/components/TransactionMonitor/TransactionMonitorList.test.js @@ -23,7 +23,7 @@ jest.mock('react-i18next', () => ({ })); jest.mock('react-redux', () => ({ ...jest.requireActual('react-redux'), - useSelector: jest.fn(), + useSelector: jest.fn(() => ({})), })); jest.mock('src/modules/common/hooks', () => ({ useSort: jest.fn(() => ({ From ece913520d9aa167ad00b03d5c04d60a3db065bb Mon Sep 17 00:00:00 2001 From: ManuGowda Date: Mon, 11 Sep 2023 17:04:55 +0200 Subject: [PATCH 20/20] :recycle: Fix unit tests --- .../components/MultiSignatureReview/MultiSignatureReview.test.js | 1 + .../wallet/components/RegisterMultisigSummary/summary.test.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/modules/transaction/components/MultiSignatureReview/MultiSignatureReview.test.js b/src/modules/transaction/components/MultiSignatureReview/MultiSignatureReview.test.js index 211a110636..df9de7e050 100644 --- a/src/modules/transaction/components/MultiSignatureReview/MultiSignatureReview.test.js +++ b/src/modules/transaction/components/MultiSignatureReview/MultiSignatureReview.test.js @@ -25,6 +25,7 @@ describe('Multisignature Review component', () => { ], fee: 2000000, numberOfSignatures: 2, + token: { ...mockAppsTokens.data[0], availableBalance: '1000000000' }, }; beforeEach(() => { diff --git a/src/modules/wallet/components/RegisterMultisigSummary/summary.test.js b/src/modules/wallet/components/RegisterMultisigSummary/summary.test.js index 6c5499e968..14e1f58f87 100644 --- a/src/modules/wallet/components/RegisterMultisigSummary/summary.test.js +++ b/src/modules/wallet/components/RegisterMultisigSummary/summary.test.js @@ -85,6 +85,7 @@ describe('Multisignature Summary component', () => { }, formProps: { moduleCommand: 'auth:registerMultisignature', + fields: { token: { ...mockAppsTokens.data[0], availableBalance: '1000000000' } }, }, };