11/* global tcUniNav */
2- import React , { useEffect , useMemo , useRef } from 'react' ;
2+ import React , { useEffect , useRef } from 'react' ;
33import PT from 'prop-types' ;
44import { connect } from 'react-redux' ;
55import { config } from 'topcoder-react-utils' ;
66import _ from 'lodash' ;
77import { getInitials , getSubPageConfiguration } from '../utils/url' ;
88
9- let counter = 0 ;
10- const headerElIdTmpl = 'uninav-headerNav' ;
9+ const headerElId = 'uninav-headerNav' ;
1110
1211const TopcoderHeader = ( { auth } ) => {
1312 const uniNavInitialized = useRef ( false ) ;
@@ -16,32 +15,6 @@ const TopcoderHeader = ({ auth }) => {
1615 const isAuthenticated = ! ! authToken ;
1716 const authURLs = config . HEADER_AUTH_URLS ;
1817 const headerRef = useRef ( ) ;
19- const headerElId = useRef ( `${ headerElIdTmpl } -${ counter } ` ) ;
20-
21- const navType = useMemo ( ( ) => {
22- let { type } = getSubPageConfiguration ( ) ;
23-
24- if ( typeof window === 'undefined' ) {
25- return type ;
26- }
27-
28- // If url contains navTool url parameter. Overwrite settings with parameter.
29- const url = new URL ( window . location . href ) ;
30- const urlParams = new URLSearchParams ( url . search ) ;
31- if ( urlParams . get ( 'navTool' ) ) {
32- type = urlParams . get ( 'navTool' ) ;
33- }
34-
35- // if there's a stored nav type in session storage, retrieve it and overwrite type
36- const sessionNavType = sessionStorage . getItem ( 'uni-nav[navType]' ) ;
37- if ( sessionNavType && ( sessionNavType === 'tool' || sessionNavType === 'marketing' ) ) {
38- type = sessionNavType ;
39- }
40-
41- // store nav type for current session
42- sessionStorage . setItem ( 'uni-nav[navType]' , type ) ;
43- return type ;
44- } , [ ] ) ;
4518
4619 const navigationUserInfo = {
4720 ...user ,
@@ -54,13 +27,21 @@ const TopcoderHeader = ({ auth }) => {
5427 }
5528
5629 uniNavInitialized . current = true ;
57- counter += 1 ;
5830
5931 const regSource = window . location . pathname . split ( '/' ) [ 1 ] ;
6032 const retUrl = encodeURIComponent ( window . location . href ) ;
6133
62- tcUniNav ( 'init' , headerElId . current , {
63- type : navType ,
34+ let { type } = getSubPageConfiguration ( ) ;
35+
36+ // If url contains navTool url parameter. Overwrite settings with parameter.
37+ const url = new URL ( window . location . href ) ;
38+ const urlParams = new URLSearchParams ( url . search ) ;
39+ if ( urlParams . get ( 'navTool' ) ) {
40+ type = urlParams . get ( 'navTool' ) ;
41+ }
42+
43+ tcUniNav ( 'init' , headerElId , {
44+ type,
6445 toolName : getSubPageConfiguration ( ) . toolName ,
6546 toolRoot : getSubPageConfiguration ( ) . toolRoot ,
6647 signOut : ( ) => {
@@ -73,15 +54,15 @@ const TopcoderHeader = ({ auth }) => {
7354 window . location = `${ authURLs . location . replace ( '%S' , retUrl ) . replace ( 'member?' , '#!/member?' ) } &mode=signUp®Source=${ regSource } ` ;
7455 } ,
7556 } ) ;
76- } , [ navType ] ) ;
57+ } , [ ] ) ;
7758
7859 useEffect ( ( ) => {
79- tcUniNav ( 'update' , headerElId . current , {
60+ tcUniNav ( 'update' , headerElId , {
8061 user : isAuthenticated ? navigationUserInfo : null ,
8162 } ) ;
8263 } , [ isAuthenticated , navigationUserInfo ] ) ;
8364
84- return < div id = { headerElId . current } ref = { headerRef } /> ;
65+ return < div id = { headerElId } ref = { headerRef } /> ;
8566} ;
8667
8768TopcoderHeader . defaultProps = {
0 commit comments