Verified Commit 4b41bb2e authored by Adam Parák's avatar Adam Parák 💬
Browse files

v8

parent 617bc84b
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
import { DUMMY_EXERCISE, ExerciseContext } from '@inject/analyst'
import { useStaffBoundary } from '@inject/frontend'
import { GetExercise, useTypedQuery } from '@inject/graphql'
import { authIdentity, GetExercise, useTypedQuery } from '@inject/graphql'
import { ErrorMessage } from '@inject/shared'
import { createFileRoute, Outlet, useParams } from '@tanstack/react-router'
import {
  createFileRoute,
  Outlet,
  redirect,
  useParams,
} from '@tanstack/react-router'
import { useMemo } from 'react'
import { NavigationBar } from '../../components/NavigationBar'
import { ExerciseLayoutRoute } from './$exerciseId/route'

const RouteComponent = () => {
  useStaffBoundary({ to: '/' })

  const params = useParams({
    from: ExerciseLayoutRoute.id,
    shouldThrow: false,
@@ -57,6 +59,15 @@ const RouteComponent = () => {

export const Route = createFileRoute('/_layout')({
  component: RouteComponent,
  beforeLoad: async ({ context }) => {
    const auth = await authIdentity(context.gql)

    if (!auth.isStaff) {
      throw redirect({
        to: '/',
      })
    }
  },
  head: () => ({
    meta: [
      {
+6 −21
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ import { useClient, WriteReadReceiptEmail } from '@inject/graphql'
import { breakWord, Timestamp } from '@inject/shared'
import type { NavigateOptions } from '@tanstack/react-router'
import type { FC } from 'react'
import { useEffect, useLayoutEffect, useState } from 'react'
import { useEffect, useState } from 'react'
import InjectComment from '../../actionlog/InjectMessage/InjectComment'
import { RenderedContent } from '../../components'
import Description from '../../components/Description'
@@ -59,22 +59,15 @@ export const EmailCard: FC<{
  inInstructor,
  getFileLink,
}) => {
  const client = useClient()
  // this ensures the message is rendered as 'not read' the first time it's rendered
  const [initialReadReceipt, setInitialReadReceipt] = useState(false)

  if (email.details.__typename !== 'EmailType') {
    throw new Error('Wrong details type')
  }
  const client = useClient()
  // this ensures the message is rendered as 'not read' the first time it's rendered

  useLayoutEffect(() => {
    if (
      email.details.__typename === 'EmailType' &&
  const [initialReadReceipt, _setInitialReadReceipt] = useState(
    !email.details.readReceipt
    ) {
      setInitialReadReceipt(true)
    }
  }, [email, email.readReceipt])
  )

  useEffect(() => {
    // you can't use URQL calls in layout effects
@@ -94,14 +87,6 @@ export const EmailCard: FC<{
    initialReadReceipt,
  ])

  if (email.details.__typename !== 'EmailType') {
    throw new Error('Wrong details type')
  }

  if (email.details.__typename !== 'EmailType') {
    throw new Error('Wrong details type')
  }

  return (
    <Section
      className={cx({ [section]: true, [unread]: initialReadReceipt === null })}
+0 −1
Original line number Diff line number Diff line
@@ -17,5 +17,4 @@ export type { ExtendedEmail } from './email/typing'
export { InstructorQuestionnaireCard } from './instructor/InstructorQuestionnaire/InstructorQuestionnaireCard'
export { LearningObjective } from './instructor/LearningObjectives/LearningObjective'

export { useStaffBoundary } from './utils'
export { barClass } from './views/InstructorView/barClass'
+16 −11
Original line number Diff line number Diff line
import { authIdentity } from '@inject/graphql'
import { Container, flexedPage } from '@inject/shared'
import { createFileRoute, Outlet } from '@tanstack/react-router'
import { useStaffBoundary } from '../../../utils'
import { createFileRoute, Outlet, redirect } from '@tanstack/react-router'
import { RootRoute } from '../../__root'

const RouteComponent = () => {
  useStaffBoundary({ to: RootRoute.to })

  return (
const RouteComponent = () => (
  <Container className={flexedPage} maxWidth={75}>
    <Outlet />
  </Container>
)
}

export const Route = createFileRoute('/_navbar/exercise-panel')({
  component: RouteComponent,
  beforeLoad: async ({ context }) => {
    const auth = await authIdentity(context.gql)

    if (!auth.isStaff) {
      throw redirect({
        to: RootRoute.to,
      })
    }
  },
  head: () => ({
    meta: [
      {
+11 −4
Original line number Diff line number Diff line
import { Classes, Icon, type IconName } from '@blueprintjs/core'
import { css } from '@emotion/css'
import { useAuthIdentity } from '@inject/graphql'
import { authIdentity, useAuthIdentity } from '@inject/graphql'
import { Container, LinkButton, useExperimentalV2 } from '@inject/shared'
import type { NavigateOptions } from '@tanstack/react-router'
import { createFileRoute, useRouter } from '@tanstack/react-router'
import { useStaffBoundary } from '../../utils'
import { createFileRoute, redirect, useRouter } from '@tanstack/react-router'
import { RightNavbar } from '../../views/InstructorView/RightNavbar'
import { RootRoute } from '../__root'
import { ExercisePanelRoute } from './exercise-panel'
@@ -114,7 +113,6 @@ const RouteComponent = () => {
    },
  ]

  useStaffBoundary({ to: RootRoute.to })
  const { isSuperuser } = useAuthIdentity()
  const isExperimentalV2 = useExperimentalV2()

@@ -169,6 +167,15 @@ export const StaffRouteComponent = RouteComponent

export const Route = createFileRoute('/_navbar/staff')({
  component: RouteComponent,
  beforeLoad: async ({ context }) => {
    const auth = await authIdentity(context.gql)

    if (!auth.isStaff) {
      throw redirect({
        to: RootRoute.to,
      })
    }
  },
  head: () => ({
    meta: [
      {
Loading