Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TRAH] Sergei / TRAH 3229 / Making Traders Hub the landing page and introducing Traders Hub's logged out version #14740

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
e485ea5
chore: initial setup
ahmadtaimoor-deriv Apr 9, 2024
316ae95
chore: merge master
ahmadtaimoor-deriv Apr 15, 2024
b16ebde
chore: test case fix
ahmadtaimoor-deriv Apr 16, 2024
6077f48
chore: fixing test cases
ahmadtaimoor-deriv Apr 16, 2024
e1d0573
chore: fixing test cases
ahmadtaimoor-deriv Apr 16, 2024
4a31515
chore: binary link fix
ahmadtaimoor-deriv Apr 16, 2024
5191fce
chore: add root route /
ahmadtaimoor-deriv Apr 16, 2024
dc63769
feat: started
sergei-deriv Apr 19, 2024
239327a
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 22, 2024
39b2004
feat: intermediate result
sergei-deriv Apr 22, 2024
39d40c2
feat: intermediate result 2
sergei-deriv Apr 22, 2024
954c69f
feat: add 1st test case
sergei-deriv Apr 22, 2024
2b631d0
Merge branch 'master' of github.com:binary-com/deriv-app into f_updat…
ahmadtaimoor-deriv Apr 23, 2024
63e95b6
chore: review fix
ahmadtaimoor-deriv Apr 23, 2024
ce8e683
chore: fixing test case
ahmadtaimoor-deriv Apr 24, 2024
7bd699d
chore: redirecting trading button to dtrader
ahmadtaimoor-deriv Apr 24, 2024
a98f1f9
fix: test case
ahmadtaimoor-deriv Apr 24, 2024
948a39a
fix: trigger
ahmadtaimoor-deriv Apr 24, 2024
5883cc3
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 24, 2024
72a28d1
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 25, 2024
ea6fd0a
Merge remote-tracking branch 'ahmad/f_update_dtrader_url' into sergei…
sergei-deriv Apr 25, 2024
1d5a949
feat: change hardcoded dtrader route to routes.trade
sergei-deriv Apr 25, 2024
d2e9f61
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 25, 2024
3e92015
feat: add trustpilot widget
sergei-deriv Apr 25, 2024
27ded2a
refactor: extract the code to separate components
sergei-deriv Apr 25, 2024
ba45c1d
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 26, 2024
7f8e0df
feat: add getLandingCompany to client store
sergei-deriv Apr 26, 2024
38182d5
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv Apr 26, 2024
b722e07
feat: create trustpilot helper function
sergei-deriv Apr 29, 2024
ea33b83
feat: add some icons for banner and trustpilot
sergei-deriv Apr 29, 2024
af796cb
feat: intermediate result
sergei-deriv Apr 29, 2024
0382d54
feat: complete widget and banner
sergei-deriv Apr 30, 2024
8ef5635
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 2, 2024
0ea14da
feat: refactor the code a little bit
sergei-deriv May 2, 2024
8891cb0
feat: complete with options and multipliers
sergei-deriv May 2, 2024
2254dfa
feat: change trustpilot data type
sergei-deriv May 2, 2024
62b5873
feat: changed content for CFDs part
sergei-deriv May 2, 2024
4817754
feat: renamed some components
sergei-deriv May 2, 2024
d6c4a31
feat: change 3 headers
sergei-deriv May 2, 2024
4429cd7
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 3, 2024
0ab248b
fix: add mock for header tests
sergei-deriv May 3, 2024
8bca057
feat: complete changes for header
sergei-deriv May 3, 2024
35d83f5
feat: change trust pilot widget data
sergei-deriv May 3, 2024
557e91f
feat: separate styles
sergei-deriv May 3, 2024
75060f9
feat: add some styles
sergei-deriv May 3, 2024
acb80be
fix: remove exclamation mark
sergei-deriv May 3, 2024
ca0e81c
feat: make legacy TH route as root
sergei-deriv May 7, 2024
012782f
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 7, 2024
6469608
fix: implement sonalcloud suggestions
sergei-deriv May 7, 2024
86f27fd
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 7, 2024
2f37dbb
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 7, 2024
3c6df5d
fix: repair tests
sergei-deriv May 7, 2024
593f5e7
feat: get back changes for content because it will be done by card tr…
sergei-deriv May 8, 2024
dc0152b
feat: create separate components for option and cfds titles and descr…
sergei-deriv May 8, 2024
66fc857
feat: remove waiting for landing company and show just eu and non-eu …
sergei-deriv May 10, 2024
bbeeafd
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 10, 2024
8811faa
feat: change routes to legacy th
sergei-deriv May 10, 2024
ce6f73c
feat: change routes to legacy th 2
sergei-deriv May 10, 2024
4bc0aaf
fix: repair tests due to route changes
sergei-deriv May 10, 2024
c6bb5e8
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 15, 2024
b164836
feat: add exact to the trades_hub route
sergei-deriv May 15, 2024
6bebd28
feat: add position absolute to the image
sergei-deriv May 15, 2024
b4b1b36
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 15, 2024
7b3c39d
feat: add redirection from old traders hub route to the new one
sergei-deriv May 15, 2024
3e97a08
fix: same route for wallets and TH
nijil-deriv May 16, 2024
13a2040
Merge branch 'sergei/trah-3229/th-logout-version' of github.com:serge…
nijil-deriv May 16, 2024
bcfbd60
fix: change route order to fix old TH route redirect
nijil-deriv May 17, 2024
34dfb2a
feat: add redirection to dtrader
sergei-deriv May 17, 2024
a5caa26
Merge branch 'sergei/trah-3229/th-logout-version' of github.com:serge…
nijil-deriv May 17, 2024
0b15158
fix: wallet_transfer route in shared
nijil-deriv May 17, 2024
737a235
chore: code clean-up
nijil-deriv May 17, 2024
062cd15
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 17, 2024
733a165
Merge branch 'sergei/trah-3229/th-logout-version' of github.com:serge…
nijil-deriv May 17, 2024
454d84b
chore: more code clean-up
nijil-deriv May 17, 2024
0c3ff96
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 20, 2024
05df801
Merge branch 'sergei/trah-3229/th-logout-version' of github.com:serge…
nijil-deriv May 20, 2024
185d2fb
fix: move wallets check out of appstore
nijil-deriv May 20, 2024
03522fa
chore: reset file to base branch
nijil-deriv May 20, 2024
66033c3
fix: compare account route height and hover shadow clipping
nijil-deriv May 20, 2024
c935506
Merge pull request #12 from nijil-deriv/nijil/wall-3711/wallets-route…
sergei-deriv May 21, 2024
6d11c83
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 21, 2024
dd561e2
chore: remove unused import
sergei-deriv May 21, 2024
514cb57
fix: repair wallet tests
sergei-deriv May 21, 2024
09968e1
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 21, 2024
3f65de2
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 21, 2024
dc042ee
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 22, 2024
7a67227
fix: add logged_in_app_platform and logged_out_app_platform
sergei-deriv May 22, 2024
77ca35f
feat: show content for incognito
sergei-deriv May 22, 2024
5e46381
chore: refactor routes.ts for better readability
nijil-deriv May 22, 2024
66037f4
fix: insufficient balance modal button routing
nijil-deriv May 22, 2024
7f632d7
fix: routing to contract page giving 404
nijil-deriv May 22, 2024
db05af2
Merge branch 'sergei/trah-3229/th-logout-version' of github.com:serge…
nijil-deriv May 22, 2024
2fe5433
Merge pull request #13 from nijil-deriv/nijil/wall-3711/wallets-route…
sergei-deriv May 22, 2024
e47e6db
Merge remote-tracking branch 'upstream/master' into sergei/trah-3229/…
sergei-deriv May 23, 2024
f75ba34
feat: change options & multipliers to options
sergei-deriv May 23, 2024
9b7a194
feat: update mobile header
sergei-deriv May 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ describe('<ContinueTradingButton/>', () => {
renderWithRouter(<ContinueTradingButton />);
const continue_btn_text = screen.getByTestId('continue_btn_text');
fireEvent.click(continue_btn_text);
expect(history.location.pathname).toBe(routes.root);
expect(history.location.pathname).toBe(routes.trade);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React from 'react';
import classNames from 'classnames';
import { ButtonLink, Text } from '@deriv/components';
import { Localize } from '@deriv/translations';
import { routes } from '@deriv/shared/src/utils/routes/routes';

type TContinueTradingButtonProps = { className?: string };

Expand All @@ -12,7 +13,7 @@ type TContinueTradingButtonProps = { className?: string };
* @returns React Element
*/
export const ContinueTradingButton = ({ className }: TContinueTradingButtonProps) => (
<ButtonLink className={classNames('account-management__button', className)} to='/'>
<ButtonLink className={classNames('account-management__button', className)} to={routes.trade}>
<Text className='dc-btn__text' as='p' weight='bold' data-testid='continue_btn_text'>
<Localize i18n_default_text='Continue trading' />
</Text>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const PageOverlayWrapper = observer(({ routes, subroutes }: PageOverlayWrapperPr
const history = useHistory();
const { client, common, ui } = useStore();
const { is_mobile } = ui;
const { has_wallet, logout } = client;
const { logout } = client;
const { is_from_derivgo } = common;

const passkeysMenuCloseActionEventTrack = React.useCallback(() => {
Expand All @@ -46,8 +46,8 @@ const PageOverlayWrapper = observer(({ routes, subroutes }: PageOverlayWrapperPr
passkeysMenuCloseActionEventTrack();
}

has_wallet ? history.push(shared_routes.wallets) : history.push(shared_routes.traders_hub);
}, [history, has_wallet]);
history.push(shared_routes.traders_hub);
}, [history]);

const selected_route = getSelectedRoute({ routes: subroutes as Array<TRoute>, pathname: location.pathname });

Expand Down
2 changes: 1 addition & 1 deletion packages/api-v2/src/hooks/useOnfido.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ const useOnfido = (country?: string, selectedDocument?: string) => {
document.body.appendChild(linkNode);

scriptNode.addEventListener('load', () => {
initOnfido();
initOnfido();
setIsOnfidoLoading(false);
});
}
Expand Down
1 change: 1 addition & 0 deletions packages/appstore/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
"@deriv/stores": "^1.0.0",
"@deriv/translations": "^1.0.0",
"@deriv/hooks": "^1.0.0",
"@deriv/wallets": "^1.0.0",
"classnames": "^2.2.6",
"mobx": "^6.6.1",
"mobx-react-lite": "^3.4.0",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
.cfds-listing-logged-out {
&__cfd-full-row {
user-select: none;
display: grid;
width: 100%;
grid-column: 1 / span 3;
}

&__divider {
width: 100%;
height: 1px;
background-color: var(--general-hover);
border: none;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import React from 'react';
import { observer, useStore } from '@deriv/stores';
import { Text } from '@deriv/components';
import { redirectToLogin } from '@deriv/shared';
import { getLanguage, localize } from '@deriv/translations';
import { getHasDivider } from 'Constants/utils';
import ListingContainer from 'Components/containers/listing-container';
import TradingAppCard from 'Components/containers/trading-app-card';
import CFDsDescription from 'Components/elements/cfds-description';
import CFDsTitle from 'Components/elements/cfds-title';
import './cfds-listing-logged-out.scss';

const CFDsListingLoggedOut = observer(() => {
const { traders_hub } = useStore();
const {
available_dxtrade_accounts,
available_ctrader_accounts,
combined_cfd_mt5_accounts,
selected_region,
is_eu_user,
} = traders_hub;

return (
<ListingContainer title={<CFDsTitle />} description={<CFDsDescription />}>
<div className='cfds-listing-logged-out__cfd-full-row'>
<Text line_height='m' weight='bold' color='prominent'>
{localize('Deriv MT5')}
</Text>
</div>
{combined_cfd_mt5_accounts.map((existing_account, index: number) => {
const list_size = combined_cfd_mt5_accounts.length;
return (
<TradingAppCard
action_type={existing_account.action_type}
availability={selected_region}
clickable_icon
icon={existing_account.icon}
sub_title={existing_account?.sub_title}
name={existing_account?.name ?? ''}
short_code_and_region={existing_account?.short_code_and_region}
platform={existing_account.platform}
description={existing_account.description}
key={existing_account.key}
has_divider={!is_eu_user && getHasDivider(index, list_size, 3)}
onAction={() => redirectToLogin(false, getLanguage())}
market_type='all'
/>
);
})}
{!is_eu_user && (
<div className='cfds-listing-logged-out__cfd-full-row'>
<hr className='cfds-listing-logged-out__divider' />
</div>
)}
{!is_eu_user && (
<div className='cfds-listing-logged-out__cfd-full-row'>
<Text weight='bold'>{localize('Deriv cTrader')}</Text>
</div>
)}
{available_ctrader_accounts.map(account => (
<TradingAppCard
action_type='get'
availability={selected_region}
clickable_icon
icon={account.icon}
name={account.name}
platform={account.platform}
description={account.description}
onAction={() => redirectToLogin(false, getLanguage())}
key={`trading_app_card_${account.name}`}
market_type='all'
/>
))}
{!is_eu_user && (
<React.Fragment>
<div className='cfds-listing-logged-out__cfd-full-row'>
<hr className='cfds-listing-logged-out__divider' />
</div>

<div className='cfds-listing-logged-out__cfd-full-row'>
<Text line_height='m' weight='bold' color='prominent'>
{localize('Deriv X')}
</Text>
</div>
</React.Fragment>
)}
{available_dxtrade_accounts?.map(account => (
<TradingAppCard
action_type='get'
availability={selected_region}
clickable_icon
icon={account.icon}
name={account.name}
platform={account.platform}
description={account.description}
onAction={() => redirectToLogin(false, getLanguage())}
key={`trading_app_card_${account.name}`}
market_type='all'
/>
))}
</ListingContainer>
);
});

export default CFDsListingLoggedOut;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import CFDsListingLoggedOut from './cfds-listing-logged-out';

export default CFDsListingLoggedOut;
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ const TradingAppCard = ({
const { is_eu_user, is_demo_low_risk, content_flag, is_real, selected_account_type } = traders_hub;
const { current_language } = common;
const { is_account_being_created } = cfd;
const { account_status: { authentication } = {} } = client;
const { account_status: { authentication } = {}, is_logged_in } = client;

const [is_open_position_svg_modal_open, setIsOpenPositionSvgModalOpen] = React.useState(false);
const demo_label = localize('Demo');
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import React from 'react';
import { Text, StaticUrl } from '@deriv/components';
import { Localize } from '@deriv/translations';

const CFDsDescription = () => {
return (
<Text size='xs' line_height='s'>
<Localize
i18n_default_text='Trade bigger positions with less capital across diverse financial and derived instruments. <0>Learn more</0>'
components={[<StaticUrl key={0} className='options' href='/trade-types/cfds' />]}
/>
</Text>
);
};

export default CFDsDescription;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import CFDsDescription from './cfds-description';

export default CFDsDescription;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.cfds-title {
display: flex;
justify-content: flex-start;
align-items: center;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from 'react';
import { Text } from '@deriv/components';
import { observer, useStore } from '@deriv/stores';
import { localize } from '@deriv/translations';
import './cfds-title.scss';

const CFDsTitle = observer(() => {
const { ui } = useStore();
const { is_mobile } = ui;

if (is_mobile) return null;
return (
<div className='cfds-title'>
<Text size='sm' weight='bold' color='prominent'>
{localize('CFDs')}
</Text>
</div>
);
});

export default CFDsTitle;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import CFDsTitle from './cfds-title';

export default CFDsTitle;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import OptionsTitle from './options-description';

export default OptionsTitle;
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import React from 'react';
import { Text, StaticUrl } from '@deriv/components';
import { Localize } from '@deriv/translations';

type TOptionsDescription = {
is_eu_user: boolean;
};

const OptionsDescription = ({ is_eu_user }: TOptionsDescription) => {
return is_eu_user ? (
<Text size='xs'>
<Localize
i18n_default_text='Multipliers let you trade with leverage and limit your risk to your stake. <0>Learn more</0>'
components={[<StaticUrl key={0} className='options' href='trade-types/multiplier/' />]}
/>
</Text>
) : (
<div>
<Text size='xs'>
<Localize
i18n_default_text='Buy or sell at a specific time for a specific price. <0>Learn more</0>'
components={[
<StaticUrl
key={0}
className='options'
href='trade-types/options/digital-options/up-and-down/'
/>,
]}
/>
</Text>
</div>
);
};

export default OptionsDescription;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import OptionsTitle from './options-title';

export default OptionsTitle;
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import React from 'react';
import { Text } from '@deriv/components';
import { observer, useStore } from '@deriv/stores';
import { Localize } from '@deriv/translations';

type TOptionsTitle = {
is_eu_user: boolean;
};

const OptionsTitle = observer(({ is_eu_user }: TOptionsTitle) => {
const { ui } = useStore();
const { is_mobile } = ui;

if (is_mobile) return null;
return is_eu_user ? (
<Text size='sm' weight='bold' color='prominent'>
<Localize i18n_default_text='Multipliers' />
</Text>
) : (
<Text size='sm' weight='bold' color='prominent'>
<Localize i18n_default_text='Options' />
</Text>
);
});

export default OptionsTitle;
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
.get-started-trading-banner {
border: 1px solid var(--general-section-5);
border-radius: $BORDER_RADIUS * 4;

&__content {
position: relative;
display: flex;
justify-content: space-between;

border-radius: $BORDER_RADIUS * 4 $BORDER_RADIUS * 4 0 0;
background: var(--traders-hub-logged-out-banner-bg-color);
height: 18rem;
background-image: url('./../../public/images/traders-hub-logged-out-banner-bg-desktop.svg');
background-repeat: no-repeat;

@include mobile {
height: 14.4rem;
background-image: url('./../../public/images/traders-hub-logged-out-banner-bg-responsive.svg');
background-repeat: no-repeat;
}
}

&__description {
display: flex;
flex-direction: column;
align-items: flex-start;
align-self: center;
gap: 1.6rem;
margin-inline-start: 4.8rem;

@include mobile {
margin-inline-start: 1.6rem;
}
}

&__button {
padding: 1.2rem 1.6rem;
border-radius: $BORDER_RADIUS * 3;

@include mobile {
padding: 0.5rem 1.2rem;
}
}

&__image {
position: absolute;
right: 0;
margin-inline-end: 1.2rem;

@include mobile {
margin-inline-end: 0;
align-self: flex-end;
}
}
}
Loading
Loading