@@ -19,7 +19,7 @@ such restriction.
19
19
*/
20
20
import React , { useEffect , useMemo , useRef } from 'react'
21
21
import { useDispatch , useSelector } from 'react-redux'
22
- import { useParams , Outlet } from 'react-router-dom'
22
+ import { useParams , Outlet , useNavigate } from 'react-router-dom'
23
23
import classNames from 'classnames'
24
24
import { isEmpty } from 'lodash'
25
25
@@ -29,13 +29,15 @@ import DownloadContainer from '../../common/Download/DownloadContainer'
29
29
import { getTransitionEndEventName } from 'igz-controls/utils/common.util'
30
30
import { fetchFrontendSpec } from '../../reducers/appReducer'
31
31
import { NAVBAR_WIDTH_CLOSED , NAVBAR_WIDTH_OPENED } from '../../constants'
32
+ import { isProjectValid } from '../../utils/handleRedirect'
32
33
33
34
import './Page.scss'
34
35
35
36
const Page = ( { isNavbarPinned, setProjectName } ) => {
36
37
const { projectName } = useParams ( )
37
38
const mainRef = useRef ( )
38
39
const dispatch = useDispatch ( )
40
+ const navigate = useNavigate ( )
39
41
const transitionEndEventName = useMemo ( ( ) => getTransitionEndEventName ( ) , [ ] )
40
42
const pinnedClasses = classNames ( ! ( isNavbarPinned && projectName ) && 'unpinned' )
41
43
const mainStyles = {
@@ -46,11 +48,16 @@ const Page = ({ isNavbarPinned, setProjectName }) => {
46
48
: `${ NAVBAR_WIDTH_CLOSED } px`
47
49
}
48
50
const { frontendSpec, frontendSpecPopupIsOpened } = useSelector ( store => store . appStore )
51
+ const { projectsNames } = useSelector ( store => store . projectStore )
49
52
50
53
useEffect ( ( ) => {
51
54
setProjectName ( projectName )
52
55
} , [ projectName , setProjectName ] )
53
56
57
+ useEffect ( ( ) => {
58
+ isProjectValid ( navigate , projectsNames . data , projectName )
59
+ } , [ navigate , projectName , projectsNames . data ] )
60
+
54
61
useEffect ( ( ) => {
55
62
if ( mainRef ) {
56
63
mainRef . current . addEventListener ( transitionEndEventName , event => {
0 commit comments