diff --git a/frontend/src/pages/(navbar)/exercise-panel.tsx b/frontend/src/pages/(navbar)/exercise-panel.tsx index 0176e6417a470bf5d15e903cdafb35986b37df80..26c041e95f237699ae75870f56ca8f9cf9fb6790 100644 --- a/frontend/src/pages/(navbar)/exercise-panel.tsx +++ b/frontend/src/pages/(navbar)/exercise-panel.tsx @@ -14,7 +14,7 @@ const wrapper = css` ` const ExercisePanel = () => { - useSetPageTitle('Admin Panel') + useSetPageTitle('Exercise Panel') return ( <> diff --git a/frontend/src/pages/(navbar)/graphiql.tsx b/frontend/src/pages/(navbar)/graphiql.tsx index f5b96b241e3c62b570a4b0777ee34e2fd80de646..163b1b6479cc48fe7d554d54c8b7b015c86f31e3 100644 --- a/frontend/src/pages/(navbar)/graphiql.tsx +++ b/frontend/src/pages/(navbar)/graphiql.tsx @@ -1,7 +1,12 @@ +import { useSetPageTitle } from '@/utils' import { lazy } from 'react' const GraphiQLPage = lazy(() => import('@/logic/GraphiQL')) -export const GraphiQL = () => <GraphiQLPage /> +export const GraphiQL = () => { + useSetPageTitle('GraphiQL') + + return <GraphiQLPage /> +} export default GraphiQL diff --git a/frontend/src/pages/(navbar)/index.tsx b/frontend/src/pages/(navbar)/index.tsx index 5e5750aa395014ad03be54ede75123e6b9661271..e72d58d9b131e3d204498706578aa0ebb1e4865e 100644 --- a/frontend/src/pages/(navbar)/index.tsx +++ b/frontend/src/pages/(navbar)/index.tsx @@ -2,14 +2,12 @@ import InjectLogo from '@/assets/inject-logo--vertical-black.svg?react' import StaffSelector from '@/logic/StaffSelector' import TeamSelector from '@/logic/TeamSelector' import { useNavigate } from '@/router' -import { useSetPageTitle } from '@/utils' import { Checkbox, Collapse } from '@blueprintjs/core' import { useAuthIdentity } from '@inject/graphql/auth' import Container from '@inject/shared/components/Container' import { useEffect, useState } from 'react' const Index = () => { - useSetPageTitle('Team Selection') const { isActive, isStaff, isSuperuser, isLogged, loading } = useAuthIdentity( !!window.INJECT_NOAUTH ) diff --git a/frontend/src/pages/(navbar)/settings.tsx b/frontend/src/pages/(navbar)/settings.tsx index 0b742234837d06e2f09e57278c4299101e8030e5..d2fd5696a5bc54dbb21382e444f526f98a85df68 100644 --- a/frontend/src/pages/(navbar)/settings.tsx +++ b/frontend/src/pages/(navbar)/settings.tsx @@ -5,6 +5,7 @@ import InstructorTeams from '@/clientsettings/components/InstructorTeams' import Logout from '@/clientsettings/components/Logout' import Notification from '@/clientsettings/components/Notification' import RelativeTime from '@/clientsettings/components/RelativeTime' +import { useSetPageTitle } from '@/utils' import { css } from '@emotion/css' import { useAuthIdentity } from '@inject/graphql/auth' import Container from '@inject/shared/components/Container' @@ -14,6 +15,7 @@ const heading = css` ` const Settings = () => { + useSetPageTitle('Settings') const { isStaff, isSuperuser } = useAuthIdentity(!!window.INJECT_NOAUTH) return ( diff --git a/frontend/src/pages/404.tsx b/frontend/src/pages/404.tsx index c138c3fe7f6aa763482ce5aca8d1ec9ee0681a27..3f11b366fa20589ae6d7f31ef06f44ebf346b4e7 100644 --- a/frontend/src/pages/404.tsx +++ b/frontend/src/pages/404.tsx @@ -2,7 +2,7 @@ import { useSetPageTitle } from '@/utils' import { NonIdealState } from '@blueprintjs/core' const FourOhFour = () => { - useSetPageTitle('Page not Found') + useSetPageTitle('Page not found') return ( <NonIdealState title='Page not found' icon='warning-sign'> diff --git a/frontend/src/pages/analyst/_layout.tsx b/frontend/src/pages/analyst/_layout.tsx index 351a8afb9d4c12d5f263f1eefef46bc285322b36..2fc70e22de2b9f11dbcc69b817eed066584e521d 100644 --- a/frontend/src/pages/analyst/_layout.tsx +++ b/frontend/src/pages/analyst/_layout.tsx @@ -1,8 +1,9 @@ -import { useStaffBoundary } from '@/utils' +import { useSetPageTitle, useStaffBoundary } from '@/utils' import { Outlet } from 'react-router-dom' const Layout = () => { useStaffBoundary() + useSetPageTitle('Analyst') return <Outlet /> } diff --git a/frontend/src/pages/instructor/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx b/frontend/src/pages/instructor/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx index 4ed7e655186a910dbe5e20e3b8558a39487b5929..252a49b3df44d12f31980e450af7af225505063e 100644 --- a/frontend/src/pages/instructor/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx +++ b/frontend/src/pages/instructor/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx @@ -1,7 +1,6 @@ import { EmailSelection } from '@/analyst/utilities' import InstructorTeamEmails from '@/email/TeamEmails/InstructorTeamEmails' import { useNavigate, useParams } from '@/router' -import { useSetPageTitle } from '@/utils' import { useGetEmailThreads } from '@inject/graphql/queries/GetEmailThreads.generated' import notEmpty from '@inject/shared/utils/notEmpty' @@ -9,7 +8,6 @@ const Layout = () => { const { exerciseId, teamId, tab, channelId, threadId } = useParams( '/instructor/:exerciseId/:teamId/:channelId/email/:tab/:threadId' ) - useSetPageTitle(`Team ${teamId} - Emails`) const nav = useNavigate() const { data: emailThreadsData } = useGetEmailThreads({ diff --git a/frontend/src/pages/instructor/_layout.tsx b/frontend/src/pages/instructor/_layout.tsx index 1129364df61e41395bc81308d633d391a20a229c..2a8289ba34e758f0cd3c65bf3ce18324d01c182f 100644 --- a/frontend/src/pages/instructor/_layout.tsx +++ b/frontend/src/pages/instructor/_layout.tsx @@ -1,11 +1,12 @@ import { useParams } from '@/router' -import { useStaffBoundary } from '@/utils' +import { useSetPageTitle, useStaffBoundary } from '@/utils' import InstructorView from '@/views/InstructorView' import { Outlet } from 'react-router-dom' const Layout = () => { const { exerciseId, teamId } = useParams('/instructor/:exerciseId/:teamId') useStaffBoundary() + useSetPageTitle('Instructor') return ( <InstructorView exerciseId={exerciseId} teamId={teamId}> diff --git a/frontend/src/pages/instructor/index.tsx b/frontend/src/pages/instructor/index.tsx index 16312bd878045651460cdd42dfa6aaaaf516c20b..4c07a7831c2c6bfa02bb91486125275ef60fd918 100644 --- a/frontend/src/pages/instructor/index.tsx +++ b/frontend/src/pages/instructor/index.tsx @@ -1,16 +1,11 @@ -import { useSetPageTitle } from '@/utils' import { NonIdealState } from '@blueprintjs/core' -const InstructorIndexPage = () => { - useSetPageTitle('Instructor') - - return ( - <NonIdealState - icon='search' - title='No teams selected' - description='Select teams to interact with' - /> - ) -} +const InstructorIndexPage = () => ( + <NonIdealState + icon='search' + title='No teams selected' + description='Select teams to interact with' + /> +) export default InstructorIndexPage diff --git a/frontend/src/pages/login.tsx b/frontend/src/pages/login.tsx index 2b6d0d42d492c1561a93b2bb1dfb4336126a0b4d..50c13f000607cc774b291718cc9275017e60a82c 100644 --- a/frontend/src/pages/login.tsx +++ b/frontend/src/pages/login.tsx @@ -1,18 +1,23 @@ import InjectLogo from '@/assets/inject-logo--vertical-black.svg?react' import Login from '@/logic/Login' +import { useSetPageTitle } from '@/utils' import Container from '@inject/shared/components/Container' -const LoginPage = () => ( - <Container> - <InjectLogo - style={{ - width: '100%', - height: '300px', - margin: 'auto', - }} - /> - <Login /> - </Container> -) +const LoginPage = () => { + useSetPageTitle('Login') + + return ( + <Container> + <InjectLogo + style={{ + width: '100%', + height: '300px', + margin: 'auto', + }} + /> + <Login /> + </Container> + ) +} export default LoginPage diff --git a/frontend/src/pages/trainee/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx b/frontend/src/pages/trainee/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx index 9deebfe9d6a76d0835a1c2ed49a0bd873012442b..d0a15810936cbba6914d9e7776664ec0202b0068 100644 --- a/frontend/src/pages/trainee/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx +++ b/frontend/src/pages/trainee/[exerciseId]/[teamId]/[channelId]/email/_layout.tsx @@ -1,7 +1,6 @@ import { EmailSelection } from '@/analyst/utilities' import TraineeTeamEmails from '@/email/TeamEmails/TraineeTeamEmails' import { useNavigate, useParams } from '@/router' -import { useSetPageTitle } from '@/utils' import { useGetEmailThreads } from '@inject/graphql/queries/GetEmailThreads.generated' import notEmpty from '@inject/shared/utils/notEmpty' @@ -9,7 +8,6 @@ const Layout = () => { const { exerciseId, teamId, tab, channelId, threadId } = useParams( '/trainee/:exerciseId/:teamId/:channelId/email/:tab/:threadId' ) - useSetPageTitle(`Team ${teamId} - Emails`) const nav = useNavigate() const { data: emailThreadsData } = useGetEmailThreads({ diff --git a/frontend/src/pages/trainee/_layout.tsx b/frontend/src/pages/trainee/_layout.tsx index 931d1ee5b998fbd9331c9c47f16485c8b555b60d..e2ae62bb40557703a9bd53f168d21c45241cdb2f 100644 --- a/frontend/src/pages/trainee/_layout.tsx +++ b/frontend/src/pages/trainee/_layout.tsx @@ -1,9 +1,11 @@ import { useParams } from '@/router' +import { useSetPageTitle } from '@/utils' import TraineeView from '@/views/TraineeView' import { Outlet } from 'react-router-dom' const Layout = () => { const { exerciseId, teamId } = useParams('/trainee/:exerciseId/:teamId') + useSetPageTitle('Trainee') return ( <TraineeView exerciseId={exerciseId} teamId={teamId}> diff --git a/frontend/src/pages/users/_layout.tsx b/frontend/src/pages/users/_layout.tsx new file mode 100644 index 0000000000000000000000000000000000000000..b72fa7ef516545626480aa84266bbafa69c6e812 --- /dev/null +++ b/frontend/src/pages/users/_layout.tsx @@ -0,0 +1,10 @@ +import { useSetPageTitle } from '@/utils' +import { Outlet } from 'react-router-dom' + +const Layout = () => { + useSetPageTitle('User management') + + return <Outlet /> +} + +export default Layout diff --git a/frontend/src/pages/users/index.tsx b/frontend/src/pages/users/index.tsx index bae1aef41f5cf226bb1a8174e3adc1e0970c93c0..39aaf4ef2c1525ed9b232236b28337d73f0b63d1 100644 --- a/frontend/src/pages/users/index.tsx +++ b/frontend/src/pages/users/index.tsx @@ -1,10 +1,5 @@ import UserTable from '@/users/UserTable' -import { useSetPageTitle } from '@/utils' -const UserManagementIndexPage = () => { - useSetPageTitle('User management') - - return <UserTable /> -} +const UserManagementIndexPage = () => <UserTable /> export default UserManagementIndexPage