From 4cc736ef208a83d1c20310f45dcf0cea017c9cf9 Mon Sep 17 00:00:00 2001 From: lubega-deriv Date: Wed, 20 Aug 2025 17:32:41 +0800 Subject: [PATCH 01/12] feat: russian withdrawal message --- .../real/__tests__/real.spec.tsx | 26 +++++++++- .../cashier-container/real/real.scss | 10 ++++ .../cashier-container/real/real.tsx | 48 ++++++++++++++----- .../__tests__/withdrawal-crypto-form.spec.tsx | 17 +++++++ .../withdrawal-crypto-form.scss | 9 ++++ .../withdrawal-crypto-form.tsx | 28 +++++++++-- 6 files changed, 121 insertions(+), 17 deletions(-) diff --git a/packages/cashier/src/components/cashier-container/real/__tests__/real.spec.tsx b/packages/cashier/src/components/cashier-container/real/__tests__/real.spec.tsx index 54a581ea884f..249a26a5f50e 100644 --- a/packages/cashier/src/components/cashier-container/real/__tests__/real.spec.tsx +++ b/packages/cashier/src/components/cashier-container/real/__tests__/real.spec.tsx @@ -73,7 +73,7 @@ describe('', () => { expect(screen.queryByTestId('dt_doughflow_section')).toBeInTheDocument(); }); - it('should trigger setIsDeposit callback when the user clicks on Cashier breadcrumb', () => { + it('should trigger setIsDeposit callback when the user clicks on Cashier breadcrumb', async () => { render( @@ -83,8 +83,30 @@ describe('', () => { const el_breadcrumb_cashier = screen.queryByText(/cashier/i); if (el_breadcrumb_cashier) { - userEvent.click(el_breadcrumb_cashier); + await userEvent.click(el_breadcrumb_cashier); expect(mocked_cashier_store.general_store?.setIsDeposit).toHaveBeenCalledWith(false); } }); + + it('should render inline message with StaticUrl when country code is RU', () => { + const mock_store = mockStore({ + client: { + account_settings: { + country_code: 'ru', + }, + }, + }); + + render( + + + + ); + + expect(screen.getByText(/Withdraw using the same payment method you used to deposit/i)).toBeInTheDocument(); + + const link = screen.getByRole('link', { name: /available payment methods/i }); + expect(link).toBeInTheDocument(); + expect(link).toHaveAttribute('href', expect.stringContaining('/payment-methods')); + }); }); diff --git a/packages/cashier/src/components/cashier-container/real/real.scss b/packages/cashier/src/components/cashier-container/real/real.scss index 3bfb8a46406a..d4be81813708 100644 --- a/packages/cashier/src/components/cashier-container/real/real.scss +++ b/packages/cashier/src/components/cashier-container/real/real.scss @@ -9,6 +9,10 @@ inset-inline-end: 0; padding: 0 1.6rem; + &--ru { + top: 9rem; + } + + .page-container__sidebar--right { position: relative; top: 100%; @@ -17,6 +21,12 @@ } } } + + &__inline-message-link { + text-decoration: underline; + cursor: pointer; + } + &__loader { width: 100%; height: 80vh; diff --git a/packages/cashier/src/components/cashier-container/real/real.tsx b/packages/cashier/src/components/cashier-container/real/real.tsx index e1e91acb67f2..97cd379d1b78 100644 --- a/packages/cashier/src/components/cashier-container/real/real.tsx +++ b/packages/cashier/src/components/cashier-container/real/real.tsx @@ -1,11 +1,16 @@ import React from 'react'; -import { Loading } from '@deriv/components'; -import { useStore, observer } from '@deriv/stores'; + +import { InlineMessage, Loading, StaticUrl, Text } from '@deriv/components'; +import { observer, useStore } from '@deriv/stores'; +import { Localize } from '@deriv/translations'; + import { useCashierStore } from '../../../stores/useCashierStores'; + import './real.scss'; const Real = observer(() => { - const { ui } = useStore(); + const { client, ui } = useStore(); + const { account_settings } = client; const { is_dark_mode_on } = ui; const { iframe, general_store } = useCashierStore(); const { clearIframe, iframe_height, iframe_url, checkIframeLoaded, setContainerHeight } = iframe; @@ -28,14 +33,35 @@ const Real = observer(() => { {should_show_loader && } {iframe_url && ( -