3a135a30e7
Adds a check to see if the clientConfig object is null or empty. If null or empty clientConfig then sets the disableTour to false. Related Issue: #3236 Signed-off by: imasdekar <imasdekar@disroot.org>
77 lines
2.5 KiB
TypeScript
77 lines
2.5 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
import React from 'react'
|
|
import {
|
|
Redirect,
|
|
Route,
|
|
} from 'react-router-dom'
|
|
|
|
import {Utils} from './utils'
|
|
import {getLoggedIn, getMe} from './store/users'
|
|
import {useAppSelector} from './store/hooks'
|
|
import {UserSettingKey} from './userSettings'
|
|
import {IUser, UserPropPrefix} from './user'
|
|
import {getClientConfig} from './store/clientConfig'
|
|
import {ClientConfig} from './config/clientConfig'
|
|
|
|
type RouteProps = {
|
|
path: string|string[]
|
|
exact?: boolean
|
|
render?: (props: any) => React.ReactElement
|
|
component?: React.ComponentType
|
|
children?: React.ReactElement
|
|
getOriginalPath?: (match: any) => string
|
|
loginRequired?: boolean
|
|
}
|
|
|
|
function FBRoute(props: RouteProps) {
|
|
const loggedIn = useAppSelector<boolean|null>(getLoggedIn)
|
|
const me = useAppSelector<IUser|null>(getMe)
|
|
const clientConfig = useAppSelector<ClientConfig>(getClientConfig)
|
|
|
|
let redirect: React.ReactNode = null
|
|
const disableTour = clientConfig?.featureFlags?.disableTour || false
|
|
|
|
const showWelcomePage = !disableTour &&
|
|
Utils.isFocalboardPlugin() &&
|
|
(me?.id !== 'single-user') &&
|
|
props.path !== '/welcome' &&
|
|
loggedIn === true &&
|
|
!me?.props[UserPropPrefix + UserSettingKey.WelcomePageViewed]
|
|
|
|
if (showWelcomePage) {
|
|
redirect = ({match}: any) => {
|
|
if (props.getOriginalPath) {
|
|
return <Redirect to={`/welcome?r=${props.getOriginalPath!(match)}`}/>
|
|
}
|
|
return <Redirect to='/welcome'/>
|
|
}
|
|
}
|
|
|
|
if (redirect === null && loggedIn === false && props.loginRequired) {
|
|
redirect = ({match}: any) => {
|
|
if (props.getOriginalPath) {
|
|
let redirectUrl = '/' + Utils.buildURL(props.getOriginalPath!(match))
|
|
if (redirectUrl.indexOf('//') === 0) {
|
|
redirectUrl = redirectUrl.slice(1)
|
|
}
|
|
const loginUrl = `/error?id=not-logged-in&r=${encodeURIComponent(redirectUrl)}`
|
|
return <Redirect to={loginUrl}/>
|
|
}
|
|
return <Redirect to='/error?id=not-logged-in'/>
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Route
|
|
path={props.path}
|
|
render={props.render}
|
|
component={props.component}
|
|
exact={props.exact}
|
|
>
|
|
{redirect || props.children}
|
|
</Route>
|
|
)
|
|
}
|
|
|
|
export default React.memo(FBRoute)
|