From aa3838428203a752b9d54f757c2e1bb8a691598a Mon Sep 17 00:00:00 2001 From: Shaheer Date: Thu, 31 Aug 2023 13:53:41 +0400 Subject: [PATCH 1/4] feat: :bulb: adds svg migration hint text for cashier transfer screen --- .../account-transfer-form.tsx | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx index 15f9fcb3fab1..b2ad5feaa803 100644 --- a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx +++ b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx @@ -83,7 +83,13 @@ const AccountTransferForm = observer( common: { is_from_derivgo }, } = useStore(); - const { account_limits, authentication_status, is_dxtrade_allowed, getLimits: onMount } = client; + const { + account_limits, + authentication_status, + is_dxtrade_allowed, + getLimits: onMount, + mt5_login_list, + } = client; const { account_transfer, crypto_fiat_converter, general_store } = useCashierStore(); const { @@ -117,7 +123,7 @@ const AccountTransferForm = observer( const [from_accounts, setFromAccounts] = React.useState({}); const [to_accounts, setToAccounts] = React.useState({}); - const [transfer_to_hint, setTransferToHint] = React.useState(); + const [transfer_to_hint, setTransferToHint] = React.useState(); const is_from_outside_cashier = !location.pathname.startsWith(routes.cashier); @@ -314,14 +320,27 @@ const AccountTransferForm = observer( }; remaining_transfers = getRemainingTransfers(); - - const hint = - remaining_transfers && Number(remaining_transfers) === 1 - ? localize('You have {{number}} transfer remaining for today.', { number: remaining_transfers }) - : localize('You have {{number}} transfers remaining for today.', { number: remaining_transfers }); - setTransferToHint(hint); + let hint_text; + // flag 'open_position_status' does not exist in mt5_login_list, @deriv/api-types yet + if (mt5_login_list.find(account => account?.login === selected_to.value)?.open_position_status) { + hint_text = ; + } else { + hint_text = + remaining_transfers && Number(remaining_transfers) === 1 ? ( + + ) : ( + + ); + } + setTransferToHint(hint_text); resetConverter(); - }, [selected_to, selected_from, account_limits]); // eslint-disable-line react-hooks/exhaustive-deps + }, [account_limits, selected_from, selected_to, mt5_login_list]); // eslint-disable-line react-hooks/exhaustive-deps const is_mt5_restricted = selected_from?.is_mt && From cc70700c07c4de7172f9e0e14cc59ebc3b824147 Mon Sep 17 00:00:00 2001 From: Shaheer Date: Thu, 31 Aug 2023 16:04:42 +0400 Subject: [PATCH 2/4] test: :test_tube: adds test case for migrated svg hint text --- .../__tests__/account-transfer-form.spec.tsx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx b/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx index 870555dbf721..653f3348f869 100644 --- a/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx +++ b/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx @@ -279,6 +279,33 @@ describe('', () => { expect(screen.getByText('You have 1 transfer remaining for today.')).toBeInTheDocument(); }); + it('should show proper hint when transferring amount to a migrated svg account', () => { + mockRootStore.client.account_limits = { + daily_transfers: { + dxtrade: {}, + internal: { + available: 1, + }, + mt5: {}, + }, + }; + mockRootStore.client.mt5_login_list = [ + { + account_type: 'real', + balance: 1233, + currency: 'USD', + display_balance: '1233.00', + login: 'TEST_LOGIN_ID', + open_position_status: true, + }, + ]; + mockRootStore.modules.cashier.account_transfer.selected_to.value = 'TEST_LOGIN_ID'; + + renderAccountTransferForm(); + + expect(screen.getByText('You can no longer open new positions with this account.')).toBeInTheDocument(); + }); + describe('', () => { const accountsList = [ { From 09cda1d27a81710b91547c49dd829f7bfee2bc72 Mon Sep 17 00:00:00 2001 From: Shaheer Date: Thu, 31 Aug 2023 16:14:35 +0400 Subject: [PATCH 3/4] refactor: :art: refactors plural word usage in Localize --- .../account-transfer-form.tsx | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx index 14984fa1a19e..7783ab605f39 100644 --- a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx +++ b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx @@ -319,24 +319,19 @@ const AccountTransferForm = observer( return internal_remaining_transfers?.available; }; - remaining_transfers = getRemainingTransfers(); let hint_text; // flag 'open_position_status' does not exist in mt5_login_list, @deriv/api-types yet if (mt5_login_list.find(account => account?.login === selected_to.value)?.open_position_status) { hint_text = ; } else { - hint_text = - remaining_transfers && Number(remaining_transfers) === 1 ? ( - - ) : ( - - ); + remaining_transfers = getRemainingTransfers() ?? 0; + const transfer_text = Number(remaining_transfers) > 1 ? 'transfers' : 'transfer'; + hint_text = ( + + ); } setTransferToHint(hint_text); resetConverter(); From 866b4d419029e7492b23eb3d224c47dd38b4ccf3 Mon Sep 17 00:00:00 2001 From: Shaheer Date: Fri, 1 Sep 2023 10:05:39 +0400 Subject: [PATCH 4/4] refactor: :zap: renames BE flag name for hint text --- .../__tests__/account-transfer-form.spec.tsx | 2 +- .../account-transfer-form/account-transfer-form.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx b/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx index 653f3348f869..3bceeb2e915c 100644 --- a/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx +++ b/packages/cashier/src/pages/account-transfer/account-transfer-form/__tests__/account-transfer-form.spec.tsx @@ -296,7 +296,7 @@ describe('', () => { currency: 'USD', display_balance: '1233.00', login: 'TEST_LOGIN_ID', - open_position_status: true, + open_order_position_status: true, }, ]; mockRootStore.modules.cashier.account_transfer.selected_to.value = 'TEST_LOGIN_ID'; diff --git a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx index 7783ab605f39..4fc3c4160e6b 100644 --- a/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx +++ b/packages/cashier/src/pages/account-transfer/account-transfer-form/account-transfer-form.tsx @@ -320,8 +320,8 @@ const AccountTransferForm = observer( }; let hint_text; - // flag 'open_position_status' does not exist in mt5_login_list, @deriv/api-types yet - if (mt5_login_list.find(account => account?.login === selected_to.value)?.open_position_status) { + // flag 'open_order_position_status' does not exist in mt5_login_list, @deriv/api-types yet + if (mt5_login_list.find(account => account?.login === selected_to.value)?.open_order_position_status) { hint_text = ; } else { remaining_transfers = getRemainingTransfers() ?? 0;