From 2bae223f92fecf1a839e9a8261764ede22e395d8 Mon Sep 17 00:00:00 2001 From: Jim Daniels Wasswa Date: Tue, 10 Jan 2023 12:28:42 +0800 Subject: [PATCH 1/2] chore: integrate topup button --- .../src/components/cfds-listing/index.tsx | 27 ++++++++++----- .../containers/trading-app-card-actions.tsx | 21 ++++++++---- .../containers/trading-app-card.tsx | 7 ++-- .../src/components/modals/modal-manager.tsx | 27 +++++++++++++-- .../multi-action-button-group/index.ts | 4 +++ .../multi-action-button-group.scss} | 2 +- .../multi-action-button-group.tsx | 34 +++++++++++++++++++ .../options-multipliers-listing/index.tsx | 4 +-- .../transfer-trade-button-group/index.ts | 4 --- .../transfer-trade-button-group.tsx | 21 ------------ packages/core/src/Stores/traders-hub-store.js | 15 ++++++-- 11 files changed, 117 insertions(+), 49 deletions(-) create mode 100644 packages/appstore/src/components/multi-action-button-group/index.ts rename packages/appstore/src/components/{transfer-trade-button-group/transfer-trade-button-group.scss => multi-action-button-group/multi-action-button-group.scss} (73%) create mode 100644 packages/appstore/src/components/multi-action-button-group/multi-action-button-group.tsx delete mode 100644 packages/appstore/src/components/transfer-trade-button-group/index.ts delete mode 100644 packages/appstore/src/components/transfer-trade-button-group/transfer-trade-button-group.tsx diff --git a/packages/appstore/src/components/cfds-listing/index.tsx b/packages/appstore/src/components/cfds-listing/index.tsx index 5d4c1bcbb9d5..3eaab522d3d4 100644 --- a/packages/appstore/src/components/cfds-listing/index.tsx +++ b/packages/appstore/src/components/cfds-listing/index.tsx @@ -45,6 +45,7 @@ const CFDsListing = () => { no_MF_account, toggleAccountTransferModal, is_demo, + showTopUpModal, } = traders_hub; const { toggleCompareAccountsModal, setAccountType } = cfd; @@ -125,11 +126,11 @@ const CFDsListing = () => { platform={existing_account.platform} description={existing_account.description} key={existing_account.key} - type={existing_account.type} + action_type={existing_account.action_type} availability={selected_region} has_divider={(!is_eu_user || is_demo) && getHasDivider(index, list_size, 3)} onAction={(e?: React.MouseEvent) => { - if (existing_account.type === 'get') { + if (existing_account.action_type === 'get') { if ((has_no_real_account && is_real) || no_real_mf_account_eu_regulator) { openDerivRealAccountNeededModal(); } else { @@ -140,9 +141,12 @@ const CFDsListing = () => { setAppstorePlatform(existing_account.platform); getAccount(); } - } else if (existing_account.type === 'transfer_trade') { - if (e?.currentTarget?.name === 'transfer-btn') { + } else if (existing_account.action_type === 'multi-action') { + const button_name = e?.currentTarget?.name; + if (button_name === 'transfer-btn') { toggleAccountTransferModal(); + } else if (button_name === 'topup-btn') { + showTopUpModal(existing_account); } else { startTrade(existing_account.platform, existing_account); } @@ -195,10 +199,17 @@ const CFDsListing = () => { description={existing_account.display_login} platform={account.platform} key={`trading_app_card_${existing_account.display_login}`} - type='transfer_trade' + action_type='multi-action' availability={selected_region} - onAction={() => { - startTrade(account.platform, existing_account); + onAction={(e?: React.MouseEvent) => { + const button_name = e?.currentTarget?.name; + if (button_name === 'transfer-btn') { + toggleAccountTransferModal(); + } else if (button_name === 'topup-btn') { + showTopUpModal(existing_account); + } else { + startTrade(account.platform, existing_account); + } }} /> )) @@ -221,7 +232,7 @@ const CFDsListing = () => { } }} key={`trading_app_card_${account.name}`} - type='get' + action_type='get' availability={selected_region} /> ); diff --git a/packages/appstore/src/components/containers/trading-app-card-actions.tsx b/packages/appstore/src/components/containers/trading-app-card-actions.tsx index 629ac6585342..330f7519f1d7 100644 --- a/packages/appstore/src/components/containers/trading-app-card-actions.tsx +++ b/packages/appstore/src/components/containers/trading-app-card-actions.tsx @@ -1,21 +1,29 @@ import { Button } from '@deriv/components'; import { localize } from '@deriv/translations'; import TradeButton from 'Components/trade-button/trade-button'; -import TransferTradeButtonGroup from 'Components/transfer-trade-button-group'; import React from 'react'; import { observer } from 'mobx-react-lite'; +import MultiActionButtonGroup from 'Components/multi-action-button-group'; export type Actions = { - type: 'get' | 'none' | 'trade' | 'dxtrade' | 'transfer_trade' | 'dxtrade_transfer_trade'; + action_type: 'get' | 'none' | 'trade' | 'dxtrade' | 'multi-action'; // multi-action can be tranfer_trade or top_up_trade link_to?: string; has_divider?: boolean; onAction?: (e?: React.MouseEvent) => void; is_external?: boolean; is_buttons_disabled?: boolean; + is_real?: boolean; }; -const TradingAppCardActions = ({ type, link_to, onAction, is_external, is_buttons_disabled }: Actions) => { - switch (type) { +const TradingAppCardActions = ({ + action_type, + link_to, + onAction, + is_external, + is_buttons_disabled, + is_real, +}: Actions) => { + switch (action_type) { case 'get': return ( + + + ); +}; +export default MultiActionButtonGroup; diff --git a/packages/appstore/src/components/options-multipliers-listing/index.tsx b/packages/appstore/src/components/options-multipliers-listing/index.tsx index 943e67474119..e6935c17c7eb 100644 --- a/packages/appstore/src/components/options-multipliers-listing/index.tsx +++ b/packages/appstore/src/components/options-multipliers-listing/index.tsx @@ -82,7 +82,7 @@ const OptionsAndMultipliersListing = () => { description={localize('Get a real Deriv account, start trading and manage your funds.')} icon='Options' availability='All' - type='get' + action_type='get' onAction={() => { if (no_MF_account) { ui.openRealAccountSignup('maltainvest'); @@ -99,7 +99,7 @@ const OptionsAndMultipliersListing = () => { diff --git a/packages/appstore/src/components/transfer-trade-button-group/index.ts b/packages/appstore/src/components/transfer-trade-button-group/index.ts deleted file mode 100644 index a53f4cd41a6c..000000000000 --- a/packages/appstore/src/components/transfer-trade-button-group/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import TransferTradeButtonGroup from './transfer-trade-button-group'; -import './transfer-trade-button-group.scss'; - -export default TransferTradeButtonGroup; diff --git a/packages/appstore/src/components/transfer-trade-button-group/transfer-trade-button-group.tsx b/packages/appstore/src/components/transfer-trade-button-group/transfer-trade-button-group.tsx deleted file mode 100644 index cc2d55ea8ab8..000000000000 --- a/packages/appstore/src/components/transfer-trade-button-group/transfer-trade-button-group.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Button } from '@deriv/components'; -import { localize } from '@deriv/translations'; -import { Actions } from 'Components/containers/trading-app-card-actions'; -import TradeButton from 'Components/trade-button'; -import React from 'react'; - -const TransferTradeButtonGroup = ({ - link_to, - onAction, - is_buttons_disabled, -}: Pick) => { - return ( -
- - -
- ); -}; -export default TransferTradeButtonGroup; diff --git a/packages/core/src/Stores/traders-hub-store.js b/packages/core/src/Stores/traders-hub-store.js index 2dcc6fd04a78..3aaea724fc96 100644 --- a/packages/core/src/Stores/traders-hub-store.js +++ b/packages/core/src/Stores/traders-hub-store.js @@ -93,6 +93,7 @@ export default class TradersHubStore extends BaseStore { toggleIsTourOpen: action.bound, toggleRegulatorsCompareModal: action.bound, updatePlatformBalance: action.bound, + showTopUpModal: action.bound, }); reaction( @@ -526,7 +527,7 @@ export default class TradersHubStore extends BaseStore { platform: account.platform, description: existing_account.display_login, key: `trading_app_card_${existing_account.display_login}`, - type: 'transfer_trade', + action_type: 'multi-action', availability: this.selected_region, market_type: account.market_type, }, @@ -541,7 +542,7 @@ export default class TradersHubStore extends BaseStore { platform: account.platform, description: account.description, key: `trading_app_card_${account.name}`, - type: 'get', + action_type: 'get', availability: this.selected_region, market_type: account.market_type, }, @@ -616,4 +617,14 @@ export default class TradersHubStore extends BaseStore { ); return { balance: total_balance.balance, currency: base_currency }; } + showTopUpModal(data) { + const { ui, modules } = this.root_store; + const { openTopUpModal } = ui; + const { setCurrentAccount } = modules.cfd; + setCurrentAccount(data, { + category: this.selected_account_type, + type: data.market_type, + }); + openTopUpModal(); + } } From 56d4cdb5cdcee573d3694db8c52f2b143277e5cc Mon Sep 17 00:00:00 2001 From: Jim Daniels Wasswa Date: Tue, 10 Jan 2023 14:55:46 +0800 Subject: [PATCH 2/2] chore: update trading-app-card styles --- .../containers/trading-app-card.scss | 21 ++++++++++++++----- .../containers/trading-app-card.tsx | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/appstore/src/components/containers/trading-app-card.scss b/packages/appstore/src/components/containers/trading-app-card.scss index 5a0a534903a2..aca5591ca48e 100644 --- a/packages/appstore/src/components/containers/trading-app-card.scss +++ b/packages/appstore/src/components/containers/trading-app-card.scss @@ -1,21 +1,32 @@ .trading-app-card { display: inline-flex; align-items: center; - height: max-content; + height: 100%; + + &__icon { + &--container { + display: inline-flex; + align-items: center; + justify-content: center; + height: 100%; + padding: 0 0 2rem; + } + } &__container { display: inline-flex; justify-content: space-between; - align-items: flex-start; + align-items: center; width: 100%; - padding: 0 0 1rem; + height: 100%; + padding: 0 0 2rem; margin-left: 1.6rem; } &__details { - display: flex; - justify-content: center; + display: inline-flex; flex-direction: column; + justify-content: center; height: 100%; padding: 0 2rem 0 0; width: 100%; diff --git a/packages/appstore/src/components/containers/trading-app-card.tsx b/packages/appstore/src/components/containers/trading-app-card.tsx index fe526b25f1a6..331a29c589d2 100644 --- a/packages/appstore/src/components/containers/trading-app-card.tsx +++ b/packages/appstore/src/components/containers/trading-app-card.tsx @@ -36,7 +36,7 @@ const TradingAppCard = ({ return (
-
+