From 37c890c5154dabe52b7e2044021b6e759a441253 Mon Sep 17 00:00:00 2001 From: Thisyahlen Date: Fri, 19 Apr 2024 09:14:28 +0800 Subject: [PATCH] chore: add cTrader Success --- .../CTraderSuccessModal.tsx | 68 +++++++++++++++++++ src/cfd/modals/CTraderSuccessModal/index.ts | 1 + src/cfd/modals/index.ts | 1 + src/modals/Modals.tsx | 10 ++- src/modals/__tests__/Modals.spec.tsx | 7 ++ 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 src/cfd/modals/CTraderSuccessModal/CTraderSuccessModal.tsx create mode 100644 src/cfd/modals/CTraderSuccessModal/index.ts diff --git a/src/cfd/modals/CTraderSuccessModal/CTraderSuccessModal.tsx b/src/cfd/modals/CTraderSuccessModal/CTraderSuccessModal.tsx new file mode 100644 index 0000000..db7048d --- /dev/null +++ b/src/cfd/modals/CTraderSuccessModal/CTraderSuccessModal.tsx @@ -0,0 +1,68 @@ +import { useCallback } from 'react'; +import { useNavigate } from 'react-router-dom'; + +import { PlatformDetails } from '@cfd/constants'; +import { CFDSuccess } from '@cfd/screens'; +import { Button, Modal } from '@deriv-com/ui'; + +import { useQueryParams } from '@/hooks'; +import { useUIContext } from '@/providers'; + +export const CTraderSuccessModal = () => { + const navigate = useNavigate(); + const { uiState } = useUIContext(); + const { isModalOpen, closeModal } = useQueryParams(); + + const isDemo = uiState.accountType === 'demo'; + + const renderButtons = useCallback( + () => + isDemo ? ( + + ) : ( +
+ + +
+ ), + [closeModal, isDemo, navigate] + ); + + const description = isDemo + ? `Congratulations, you have successfully created your demo ${PlatformDetails.ctrader.title} CFDs account.` + : `Congratulations, you have successfully created your real ${PlatformDetails.ctrader.title} CFDs account. To start trading, transfer funds from your Deriv account into this account.`; + + return ( + + + + + + ); +}; diff --git a/src/cfd/modals/CTraderSuccessModal/index.ts b/src/cfd/modals/CTraderSuccessModal/index.ts new file mode 100644 index 0000000..1be4473 --- /dev/null +++ b/src/cfd/modals/CTraderSuccessModal/index.ts @@ -0,0 +1 @@ +export { CTraderSuccessModal } from './CTraderSuccessModal'; diff --git a/src/cfd/modals/index.ts b/src/cfd/modals/index.ts index 049670c..13262ae 100644 --- a/src/cfd/modals/index.ts +++ b/src/cfd/modals/index.ts @@ -3,3 +3,4 @@ export * from './MT5PasswordModal'; export * from './MT5SuccessModal'; export * from './TradeModal'; export * from './DxtradeSuccessModal'; +export * from './CTraderSuccessModal'; diff --git a/src/modals/Modals.tsx b/src/modals/Modals.tsx index 673481c..0acdfa0 100644 --- a/src/modals/Modals.tsx +++ b/src/modals/Modals.tsx @@ -1,6 +1,13 @@ import { Fragment } from 'react/jsx-runtime'; -import { DxtradePasswordModal, DxtradeSuccessModal, MT5PasswordModal, MT5SuccessModal, TradeModal } from '@/cfd/modals'; +import { + CTraderSuccessModal, + DxtradePasswordModal, + DxtradeSuccessModal, + MT5PasswordModal, + MT5SuccessModal, + TradeModal, +} from '@/cfd/modals'; import { RealAccountCreation } from '@/flows'; import { JurisdictionModal } from './JurisdictionModal'; @@ -17,6 +24,7 @@ export const Modals = () => { {/* PLS DO NOT ADD ANY PROPS TO ANY MODALS HERE.💥 */} + diff --git a/src/modals/__tests__/Modals.spec.tsx b/src/modals/__tests__/Modals.spec.tsx index dd14683..8cf3232 100644 --- a/src/modals/__tests__/Modals.spec.tsx +++ b/src/modals/__tests__/Modals.spec.tsx @@ -68,6 +68,12 @@ jest.mock('@/cfd/modals/DxtradeSuccessModal', () => { return { DxtradeSuccessModal }; }); +jest.mock('@/cfd/modals/CTraderSuccessModal', () => { + const CTraderSuccessModal = () =>
CTraderSuccessModal
; + CTraderSuccessModal.displayName = 'CTraderSuccessModal'; + return { CTraderSuccessModal }; +}); + describe('Modals', () => { it('should render all modals', () => { render(); @@ -81,5 +87,6 @@ describe('Modals', () => { expect(screen.getByText('TradeModal')).toBeInTheDocument(); expect(screen.getByText('DxtradePasswordModal')).toBeInTheDocument(); expect(screen.getByText('DxtradeSuccessModal')).toBeInTheDocument(); + expect(screen.getByText('CTraderSuccessModal')).toBeInTheDocument(); }); });