@@ -13,6 +13,8 @@ import {
1313 Select ,
1414 useTheme ,
1515 Link ,
16+ Alert ,
17+ AlertTitle ,
1618} from '@mui/material' ;
1719import MenuIcon from '@mui/icons-material/Menu' ;
1820import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown' ;
@@ -26,7 +28,7 @@ import {
2628 gbfsMetricsNavItems ,
2729} from '../constants/Navigation' ;
2830import type NavigationItem from '../interface/Navigation' ;
29- import { useLocation , useNavigate } from 'react-router-dom' ;
31+ import { useLocation , useNavigate , useSearchParams } from 'react-router-dom' ;
3032import { useSelector } from 'react-redux' ;
3133import { selectIsAuthenticated , selectUserEmail } from '../store/selectors' ;
3234import LogoutConfirmModal from './LogoutConfirmModal' ;
@@ -44,9 +46,15 @@ import ThemeToggle from './ThemeToggle';
4446import { useTranslation } from 'react-i18next' ;
4547
4648export default function DrawerAppBar ( ) : React . ReactElement {
49+ const [ searchParams , setSearchParams ] = useSearchParams ( ) ;
50+ const hasTransitFeedsRedirectParam =
51+ searchParams . get ( 'utm_source' ) === 'transitfeeds' ;
4752 const theme = useTheme ( ) ;
4853 const location = useLocation ( ) ;
4954 const [ mobileOpen , setMobileOpen ] = React . useState ( false ) ;
55+ const [ hasTransitFeedsRedirect , setHasTransitFeedsRedirect ] = React . useState (
56+ hasTransitFeedsRedirectParam ,
57+ ) ;
5058 const [ openDialog , setOpenDialog ] = React . useState ( false ) ;
5159 const [ activeTab , setActiveTab ] = React . useState ( '' ) ;
5260 const [ navigationItems , setNavigationItems ] = React . useState <
@@ -118,7 +126,7 @@ export default function DrawerAppBar(): React.ReactElement {
118126 < Box
119127 sx = { {
120128 display : 'flex' ,
121- height : '64px' ,
129+ height : hasTransitFeedsRedirect ? '115px' : '64px' ,
122130 mb : { xs : 2 , md : 4 } ,
123131 } }
124132 >
@@ -399,7 +407,32 @@ export default function DrawerAppBar(): React.ReactElement {
399407 ) }
400408 </ Box >
401409 </ Toolbar >
410+ { hasTransitFeedsRedirect && (
411+ < Alert
412+ severity = 'warning'
413+ onClose = { ( ) => {
414+ setHasTransitFeedsRedirect ( false ) ;
415+ if ( hasTransitFeedsRedirectParam ) {
416+ searchParams . delete ( 'utm_source' ) ;
417+ setSearchParams ( searchParams ) ;
418+ }
419+ } }
420+ sx = { { '.MuiAlert-message' : { pb : { xs : 0 , md : 1 } } } }
421+ >
422+ < AlertTitle >
423+ You've been redirected from TransitFeeds
424+ </ AlertTitle >
425+ < Box
426+ component = { 'span' }
427+ sx = { { display : { xs : 'none' , md : 'block' } } }
428+ >
429+ This page now lives on MobilityDatabase.org, where you'll
430+ find the most up-to-date transit data.
431+ </ Box >
432+ </ Alert >
433+ ) }
402434 </ AppBar >
435+
403436 < nav >
404437 < Drawer
405438 container = { container }
0 commit comments