forked from deriv-com/p2p
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMyProfile.tsx
102 lines (92 loc) · 3.88 KB
/
MyProfile.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { useEffect } from 'react';
import { AwarenessBanner, PNVBanner, ProfileContent, Verification } from '@/components';
import { NicknameModal } from '@/components/Modals';
import {
useAdvertiserStats,
useGetPhoneNumberVerification,
useIsAdvertiser,
useIsAdvertiserNotVerified,
useModalManager,
usePoiPoaStatus,
useQueryString,
} from '@/hooks/custom-hooks';
import { getLocalizedTabs } from '@/utils/tabs';
import { useTranslations } from '@deriv-com/translations';
import { Loader, Tab, Tabs, useDevice } from '@deriv-com/ui';
import { MyProfileAdDetails } from '../MyProfileAdDetails';
import { MyProfileCounterparties } from '../MyProfileCounterparties';
import { MyProfileStats } from '../MyProfileStats';
import { PaymentMethods } from '../PaymentMethods';
import MyProfileMobile from './MyProfileMobile';
import './MyProfile.scss';
const TABS = ['Stats', 'Payment methods', 'Ad details', 'My counterparties'];
const MyProfile = () => {
const { localize } = useTranslations();
const { isDesktop } = useDevice();
const { queryString, setQueryString } = useQueryString();
const { data } = usePoiPoaStatus();
const { data: advertiserStats, isLoading } = useAdvertiserStats();
const { isPoiPoaVerified } = data || {};
const isAdvertiser = useIsAdvertiser();
const isAdvertiserNotVerified = useIsAdvertiserNotVerified();
const { hideModal, isModalOpenFor, showModal } = useModalManager({ shouldReinitializeModals: false });
const { isGetSettingsLoading, shouldShowVerification } = useGetPhoneNumberVerification();
const currentTab = queryString.tab;
const tabs = [
{ component: <MyProfileStats />, title: localize('Stats') },
{ component: <PaymentMethods />, title: localize('Payment methods') },
{ component: <MyProfileAdDetails />, title: localize('Ad details') },
{ component: <MyProfileCounterparties />, title: localize('My counterparties') },
];
useEffect(() => {
if (isPoiPoaVerified && !isAdvertiser) showModal('NicknameModal');
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isAdvertiser, isPoiPoaVerified]);
if (isGetSettingsLoading || (isLoading && !advertiserStats)) {
return <Loader />;
}
if (isAdvertiserNotVerified) {
return (
<div className='overflow-y-auto h-[calc(100%-11rem)]'>
<AwarenessBanner />
<Verification />
</div>
);
}
if (!isDesktop) {
return (
<div className='my-profile'>
{isAdvertiser && shouldShowVerification && <PNVBanner />}
<MyProfileMobile data={advertiserStats} />
{!!isModalOpenFor('NicknameModal') && <NicknameModal isModalOpen onRequestClose={hideModal} />}
</div>
);
}
return (
<div className='h-full'>
{isAdvertiser && shouldShowVerification && <PNVBanner />}
<AwarenessBanner />
<div className='my-profile'>
<ProfileContent data={advertiserStats} />
<Tabs
activeTab={getLocalizedTabs(localize)[(currentTab !== 'default' && currentTab) || 'Stats']}
className='my-profile__tabs'
onChange={index => {
setQueryString({
tab: TABS[index],
});
}}
variant='primary'
>
{tabs.map(tab => (
<Tab className='my-profile__tabs-tab' key={tab.title} title={tab.title}>
{tab.component}
</Tab>
))}
</Tabs>
{!!isModalOpenFor('NicknameModal') && <NicknameModal isModalOpen onRequestClose={hideModal} />}
</div>
</div>
);
};
export default MyProfile;