1
1
import React from 'react' ;
2
2
import { RouteComponentProps , withRouter } from 'react-router-dom' ;
3
3
import { FadeWrapper , Loading } from '@deriv/components' ;
4
- import { matchRoute , routes as shared_routes } from '@deriv/shared' ;
4
+ import {
5
+ deepCopy ,
6
+ flatten ,
7
+ matchRoute ,
8
+ removeExactRouteFromRoutes ,
9
+ routes as shared_routes ,
10
+ TRoute as TSharedRoute ,
11
+ } from '@deriv/shared' ;
5
12
import { observer , useStore } from '@deriv/stores' ;
6
13
import PageOverlayWrapper from './page-overlay-wrapper' ;
7
14
import { TRoute } from '../../Types' ;
8
15
import 'Styles/account.scss' ;
9
- import { flatten } from 'Helpers/utils' ;
10
16
11
17
type TAccountProps = RouteComponentProps & {
12
18
routes : Array < TRoute > ;
@@ -30,17 +36,31 @@ const Account = observer(({ history, location, routes }: TAccountProps) => {
30
36
landing_company_shortcode,
31
37
should_allow_authentication,
32
38
should_allow_poinc_authentication,
39
+ is_passkey_supported,
33
40
} = client ;
34
- const { toggleAccountSettings, is_account_settings_visible } = ui ;
41
+ const { toggleAccountSettings, is_account_settings_visible, is_mobile, is_desktop } = ui ;
42
+
43
+ const [ available_routes , setAvailableRoutes ] = React . useState ( routes ) ;
44
+
45
+ React . useEffect ( ( ) => {
46
+ const should_remove_passkeys_route = is_desktop || ( is_mobile && ! is_passkey_supported ) ;
47
+ if ( should_remove_passkeys_route ) {
48
+ const desktop_routes = removeExactRouteFromRoutes ( deepCopy ( routes ) as TSharedRoute [ ] , 'passkeys' ) ;
49
+ setAvailableRoutes ( desktop_routes as TRoute [ ] ) ;
50
+ } else {
51
+ setAvailableRoutes ( routes ) ;
52
+ }
53
+ } , [ routes , is_desktop , is_mobile , is_passkey_supported ] ) ;
54
+
35
55
// subroutes of a route is structured as an array of arrays
36
- const subroutes = flatten ( routes . map ( i => i . subroutes ) ) ;
56
+ const subroutes = flatten ( available_routes . map ( i => i . subroutes ) ) ;
37
57
const selected_content = subroutes . find ( r => matchRoute ( r , location . pathname ) ) ;
38
58
39
59
React . useEffect ( ( ) => {
40
60
toggleAccountSettings ( true ) ;
41
61
} , [ toggleAccountSettings ] ) ;
42
62
43
- routes . forEach ( menu_item => {
63
+ available_routes . forEach ( menu_item => {
44
64
if ( menu_item ?. subroutes ?. length ) {
45
65
menu_item . subroutes . forEach ( route => {
46
66
if ( route . path === shared_routes . financial_assessment ) {
@@ -81,7 +101,7 @@ const Account = observer(({ history, location, routes }: TAccountProps) => {
81
101
keyname = 'account-page-wrapper'
82
102
>
83
103
< div className = 'account' >
84
- < PageOverlayWrapper routes = { routes } subroutes = { subroutes } />
104
+ < PageOverlayWrapper routes = { available_routes } subroutes = { subroutes } />
85
105
</ div >
86
106
</ FadeWrapper >
87
107
) ;
0 commit comments