Skip to content

Commit 2d98cdd

Browse files
Merge pull request #274 from mayuran-deriv/mayuran/landing-company-call-fix
fix: landing company call
2 parents c7df75a + fb7fc48 commit 2d98cdd

File tree

5 files changed

+77
-4
lines changed

5 files changed

+77
-4
lines changed

src/components/UserNavbarItem/UserMenu/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import Translate from '@docusaurus/Translate';
1616
import useLogout from '@site/src/hooks/useLogout';
1717
import Routes from '@site/src/utils/routes';
1818
import { useIsAffiliate } from '@site/src/hooks/useIsAffiliate';
19+
import { useLandingCompany } from '@site/src/hooks/useLandingCompany';
1920

2021
const UserMenu = () => {
2122
const { deviceType } = useDeviceType();
@@ -27,6 +28,8 @@ const UserMenu = () => {
2728

2829
const hasWalletAccount = userAccounts?.some((account) => account.loginid?.includes('VRW'));
2930
const { isAffiliate, data, isLoading } = useIsAffiliate();
31+
const { data: landingCompanyData, isLoading: landingCompanyLoading } =
32+
useLandingCompany(is_authorized);
3033

3134
useEffect(() => {
3235
if (is_authorized) {
@@ -51,9 +54,14 @@ const UserMenu = () => {
5154
variant='secondary'
5255
color='black'
5356
fullWidth
57+
disabled={landingCompanyLoading}
5458
onClick={() =>
5559
window.location.assign(
56-
Routes.GET_REAL_ACCOUNT + `&target=${user?.upgradeable_landing_companies?.[0]}`,
60+
Routes.GET_REAL_ACCOUNT +
61+
`&target=${
62+
landingCompanyData?.financial_company?.shortcode ||
63+
landingCompanyData?.gaming_company?.shortcode
64+
}`,
5765
)
5866
}
5967
>

src/features/dashboard/components/cta-banner/cta-banner.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@ import Translate from '@docusaurus/Translate';
44
import './cta-banner.scss';
55
import Routes from '@site/src/utils/routes';
66
import useAuthContext from '@site/src/hooks/useAuthContext';
7+
import { useLandingCompany } from '@site/src/hooks/useLandingCompany';
78

89
const CtaBanner: React.FC = () => {
9-
const { user } = useAuthContext();
10+
const { is_authorized } = useAuthContext();
11+
const { data: landingCompanyData, isLoading: landingCompanyLoading } =
12+
useLandingCompany(is_authorized);
13+
1014
return (
1115
<div className='cta-banner'>
1216
<div className='cta-banner__content'>
@@ -20,9 +24,14 @@ const CtaBanner: React.FC = () => {
2024
</Text>
2125
<Button
2226
className='cta-banner__button'
27+
disabled={landingCompanyLoading}
2328
onClick={() =>
2429
window.location.assign(
25-
Routes.GET_REAL_ACCOUNT + `&target=${user?.upgradeable_landing_companies?.[0]}`,
30+
Routes.GET_REAL_ACCOUNT +
31+
`&target=${
32+
landingCompanyData?.financial_company?.shortcode ||
33+
landingCompanyData?.gaming_company?.shortcode
34+
}`,
2635
)
2736
}
2837
>

src/hooks/useGetSettings/index.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import useWS from '@site/src/hooks/useWs';
2+
import { useCallback } from 'react';
3+
4+
export const useGetSettings = () => {
5+
const { data, send, is_loading } = useWS('get_settings');
6+
7+
const getSettings = useCallback(async () => {
8+
await send({ get_settings: '1' });
9+
}, [send]);
10+
11+
return {
12+
isLoading: is_loading,
13+
getSettings,
14+
data,
15+
};
16+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import useWS from '@site/src/hooks/useWs';
2+
import { useEffect, useState } from 'react';
3+
import { useGetSettings } from '../useGetSettings';
4+
5+
export const useLandingCompany = (is_authorized: boolean) => {
6+
const { getSettings, data: settingsData } = useGetSettings();
7+
const { data, send } = useWS('landing_company');
8+
const [hasRequestedLandingCompany, setHasRequestedLandingCompany] = useState(false);
9+
10+
// First, always call getSettings on mount
11+
useEffect(() => {
12+
is_authorized && getSettings();
13+
// eslint-disable-next-line react-hooks/exhaustive-deps
14+
}, [is_authorized]);
15+
16+
// When settingsData.country_code is available, call landing_company
17+
useEffect(() => {
18+
if (settingsData?.country_code && !hasRequestedLandingCompany) {
19+
send({ landing_company: settingsData.country_code });
20+
setHasRequestedLandingCompany(true);
21+
}
22+
// eslint-disable-next-line react-hooks/exhaustive-deps
23+
}, [settingsData?.country_code, send]);
24+
25+
// isLoading should be false until landing_company is actually called
26+
const isLoading = !data;
27+
28+
return {
29+
isLoading,
30+
data,
31+
};
32+
};

src/theme/Navbar/MobileSidebar/PrimaryMenu/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import classnames from 'classnames';
2020
import Translate from '@docusaurus/Translate';
2121
import Routes from '@site/src/utils/routes';
2222
import { useIsAffiliate } from '@site/src/hooks/useIsAffiliate';
23+
import { useLandingCompany } from '@site/src/hooks/useLandingCompany';
2324

2425
// Utility function to get icons for menu items
2526
const getMenuItemIcons = (item) => {
@@ -102,6 +103,8 @@ export default function CustomMobileSidebar() {
102103
const items = useNavbarItems();
103104
const [leftItems] = splitNavbarItems(items);
104105
const { pathname } = useLocation();
106+
const { data: landingCompanyData, isLoading: landingCompanyLoading } =
107+
useLandingCompany(is_authorized);
105108

106109
const { isAffiliate, data, isLoading } = useIsAffiliate();
107110

@@ -176,10 +179,15 @@ export default function CustomMobileSidebar() {
176179
className='get-real-account-btn'
177180
variant='secondary'
178181
color='black'
182+
disabled={landingCompanyLoading}
179183
fullWidth
180184
onClick={() =>
181185
window.location.assign(
182-
Routes.GET_REAL_ACCOUNT + `&target=${user?.upgradeable_landing_companies?.[0]}`,
186+
Routes.GET_REAL_ACCOUNT +
187+
`&target=${
188+
landingCompanyData?.financial_company?.shortcode ||
189+
landingCompanyData?.gaming_company?.shortcode
190+
}`,
183191
)
184192
}
185193
>

0 commit comments

Comments
 (0)