Skip to content

Commit ccce2a4

Browse files
[TRAH] shontzu/TRAH-5356/fe-implementation-api-group-cleanup (#18070)
* chore: Backwards compatibility for API updates * chore: logout screen * fix: logged out version shouldnt break logged in config * chore: empty commit
1 parent 2df5fb6 commit ccce2a4

File tree

6 files changed

+40
-18
lines changed

6 files changed

+40
-18
lines changed

packages/appstore/src/components/cfds-listing-logged-out/cfds-listing-logged-out.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,28 @@
11
import React from 'react';
2-
import { observer, useStore } from '@deriv/stores';
2+
33
import { Text } from '@deriv/components';
4-
import { redirectToLogin } from '@deriv/shared';
4+
import { redirectToLogin, CFD_PLATFORMS } from '@deriv/shared';
5+
import { observer, useStore } from '@deriv/stores';
56
import { getLanguage, localize } from '@deriv/translations';
6-
import { getHasDivider } from 'Constants/utils';
7+
78
import ListingContainer from 'Components/containers/listing-container';
89
import TradingAppCard from 'Components/containers/trading-app-card';
910
import CFDsDescription from 'Components/elements/cfds-description';
1011
import CFDsTitle from 'Components/elements/cfds-title';
12+
import { getHasDivider } from 'Constants/utils';
13+
1114
import './cfds-listing-logged-out.scss';
1215

1316
const CFDsListingLoggedOut = observer(() => {
14-
const { traders_hub } = useStore();
17+
const { traders_hub, client } = useStore();
1518
const {
1619
available_dxtrade_accounts,
1720
available_ctrader_accounts,
1821
combined_cfd_mt5_accounts,
1922
selected_region,
2023
is_eu_user,
2124
} = traders_hub;
25+
const { is_eu } = client;
2226

2327
return (
2428
<ListingContainer title={<CFDsTitle />} description={<CFDsDescription />}>
@@ -28,15 +32,20 @@ const CFDsListingLoggedOut = observer(() => {
2832
</Text>
2933
</div>
3034
{combined_cfd_mt5_accounts.map((existing_account, index: number) => {
35+
// This is for backward compatibility
36+
// before BE change, EU market_type is financial. With BE change, EU market_type becomes synthetic
37+
const is_eu_standard = is_eu && existing_account.market_type !== 'financial';
38+
3139
const list_size = combined_cfd_mt5_accounts.length;
40+
3241
return (
3342
<TradingAppCard
3443
action_type={existing_account.action_type}
3544
availability={selected_region}
3645
clickable_icon
37-
icon={existing_account.icon}
46+
icon={is_eu_standard ? 'Derived' : existing_account.icon}
3847
sub_title={existing_account?.sub_title}
39-
name={existing_account?.name ?? ''}
48+
name={is_eu_standard ? 'Standard' : existing_account.name}
4049
short_code_and_region={existing_account?.short_code_and_region}
4150
platform={existing_account.platform}
4251
description={existing_account.description}

packages/cfd/src/Containers/cfd-compare-accounts/__tests__/cfd-compare-accounts-title-icon.spec.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,13 @@ describe('<CFDCompareAccountsTitleIcon />', () => {
8282
test('should render correct title for EU Clients', () => {
8383
mocked_props.trading_platforms = {
8484
platform: 'mt5',
85-
market_type: 'financial',
85+
market_type: 'gaming',
8686
shortcode: 'maltainvest',
8787
product: 'financial',
8888
};
8989
mocked_props.is_eu_user = true;
9090
render(<CFDCompareAccountsTitleIcon {...mocked_props} />);
91-
expect(screen.getByText('CFDs')).toBeInTheDocument();
91+
expect(screen.getByText('Standard')).toBeInTheDocument();
9292
});
9393

9494
test('should render correct title for standard product type in demo account', () => {
@@ -159,11 +159,11 @@ describe('<CFDCompareAccountsTitleIcon />', () => {
159159

160160
test('should render correct title for EU clients demo accounts', () => {
161161
mocked_props.trading_platforms.platform = 'mt5';
162-
mocked_props.trading_platforms.market_type = 'financial';
162+
mocked_props.trading_platforms.market_type = 'gaming';
163163
mocked_props.trading_platforms.shortcode = 'svg';
164164
mocked_props.is_demo = true;
165165
mocked_props.is_eu_user = true;
166166
render(<CFDCompareAccountsTitleIcon {...mocked_props} />);
167-
expect(screen.getByText('CFDs demo')).toBeInTheDocument();
167+
expect(screen.getByText('Standard demo')).toBeInTheDocument();
168168
});
169169
});

packages/cfd/src/Containers/cfd-compare-accounts/cfd-compare-accounts-title-icon.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ import {
1717

1818
const CFDCompareAccountsTitleIcon = ({ trading_platforms, is_eu_user, is_demo }: TCompareAccountsCard) => {
1919
const { isDesktop } = useDevice();
20-
const market_type = !is_eu_user ? getMarketType(trading_platforms) : 'CFDs';
20+
const market_type =
21+
is_eu_user && trading_platforms.market_type === 'financial'
22+
? 'CFDs' // this is for backwards compatibility with BE
23+
: getMarketType(trading_platforms);
2124

2225
const market_type_shortcode = generateMarketTypeShortcode(trading_platforms, market_type);
2326

packages/cfd/src/Helpers/compare-accounts-config.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const getHighlightedIconLabel = (
1010
selected_region?: string
1111
): TInstrumentsIcon[] => {
1212
const market_type = getMarketType(trading_platforms);
13+
1314
const market_type_shortcode =
1415
trading_platforms.product === PRODUCT.GOLD
1516
? market_type.concat('_', trading_platforms.product)
@@ -129,6 +130,7 @@ const platformsHeaderLabel = {
129130
const getAccountIcon = (shortcode: string, product?: TProducts) => {
130131
switch (shortcode) {
131132
case MARKET_TYPE.SYNTHETIC:
133+
case MARKET_TYPE.GAMING:
132134
return 'Standard';
133135
case MARKET_TYPE.FINANCIAL:
134136
switch (product) {
@@ -276,7 +278,6 @@ const getEUAvailableAccounts = (available_accounts: TModifiedTradingPlatformAvai
276278
const financial_accounts = available_accounts
277279
.filter(
278280
item =>
279-
item.market_type === MARKET_TYPE.FINANCIAL &&
280281
item.shortcode === JURISDICTION.MALTA_INVEST &&
281282
item.is_default_jurisdiction === 'true' &&
282283
item.product !== PRODUCT.GOLD
@@ -355,9 +356,7 @@ const getMT5DemoData = (available_accounts: TModifiedTradingPlatformAvailableAcc
355356
item =>
356357
item.market_type === MARKET_TYPE.FINANCIAL && item.product !== PRODUCT.STP && item.product !== PRODUCT.GOLD
357358
);
358-
const gaming_demo_accounts = available_accounts.filter(
359-
item => item.market_type === MARKET_TYPE.GAMING && item.shortcode === JURISDICTION.SVG
360-
);
359+
const gaming_demo_accounts = available_accounts.filter(item => item.market_type === MARKET_TYPE.GAMING);
361360

362361
const gold_demo_accounts = available_accounts.filter(
363362
item => item.market_type === MARKET_TYPE.FINANCIAL && item.product === PRODUCT.GOLD

packages/core/src/Stores/traders-hub-store.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,16 @@ export default class TradersHubStore extends BaseStore {
422422
return localize('Zero spread CFDs on financial and derived instruments');
423423
};
424424

425+
const getFinancialName = () => {
426+
if (!this.is_eu_user || this.is_demo_low_risk) {
427+
return 'Financial';
428+
}
429+
if (is_logged_in) {
430+
return 'CFDs';
431+
}
432+
return 'Standard';
433+
};
434+
425435
const getMT5Accounts = [
426436
{
427437
name: 'Standard',
@@ -433,12 +443,12 @@ export default class TradersHubStore extends BaseStore {
433443
availability: 'Non-EU',
434444
},
435445
{
436-
name: !this.is_eu_user || this.is_demo_low_risk ? 'Financial' : 'CFDs',
446+
name: getFinancialName(),
437447
description: getAccountDesc(),
438448
platform: CFD_PLATFORMS.MT5,
439449
market_type: 'financial',
440450
product: 'financial',
441-
icon: !this.is_eu_user || this.is_demo_low_risk ? 'Financial' : 'CFDs',
451+
icon: getFinancialName(),
442452
availability: 'All',
443453
},
444454
...(this.is_real
@@ -857,6 +867,7 @@ export default class TradersHubStore extends BaseStore {
857867
} else {
858868
this.combined_cfd_mt5_accounts = [
859869
...this.combined_cfd_mt5_accounts,
870+
860871
{
861872
icon: account.icon,
862873
name: account.name,

packages/wallets/src/features/cfd/constants.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export const getMarketTypeDetails = (
9696
title: getMarketTypeDetailsTitle(product, isEuRegion),
9797
},
9898
synthetic: {
99-
availability: 'Non-EU',
99+
availability: 'All',
100100
description: localize('CFDs on derived and financial instruments'),
101101
icon: <AccountsDmt5StandardIcon height={48} width={48} />,
102102
title: 'Standard',

0 commit comments

Comments
 (0)