diff --git a/src/components/Diagnostic.tsx b/src/components/Diagnostic.tsx index b38215d6..142436a0 100644 --- a/src/components/Diagnostic.tsx +++ b/src/components/Diagnostic.tsx @@ -43,7 +43,7 @@ export default function Diagnostic({onFinish}: Props) { if (exams.every((x) => !!x)) { setExams(exams.map((x) => x!)); setSelectedModules(exams.map((x) => x!.module)); - router.push("/exercises"); + router.push("/exam"); } }); }; diff --git a/src/components/High/Layout.tsx b/src/components/High/Layout.tsx index b4a3dbc6..fefe4fb6 100644 --- a/src/components/High/Layout.tsx +++ b/src/components/High/Layout.tsx @@ -1,3 +1,4 @@ +import { EntityWithRoles } from "@/interfaces/entity"; import {User} from "@/interfaces/user"; import clsx from "clsx"; import {useRouter} from "next/router"; @@ -7,6 +8,7 @@ import Sidebar from "../Sidebar"; interface Props { user: User; + entities?: EntityWithRoles[] children: React.ReactNode; className?: string; navDisabled?: boolean; @@ -16,7 +18,17 @@ interface Props { onFocusLayerMouseEnter?: () => void; } -export default function Layout({user, children, className, bgColor="bg-white", hideSidebar, navDisabled = false, focusMode = false, onFocusLayerMouseEnter}: Props) { +export default function Layout({ + user, + entities = [], + children, + className, + bgColor="bg-white", + hideSidebar, + navDisabled = false, + focusMode = false, + onFocusLayerMouseEnter +}: Props) { const router = useRouter(); return ( @@ -40,6 +52,7 @@ export default function Layout({user, children, className, bgColor="bg-white", h onFocusLayerMouseEnter={onFocusLayerMouseEnter} className="-md:hidden" user={user} + entities={entities} /> )}
= ({ .sort(sortByModule) .map((x) => x!.module), ); - router.push("/exercises"); + router.push("/exam"); } }); } diff --git a/src/components/MobileMenu.tsx b/src/components/MobileMenu.tsx index df55e6d6..0d3a9ffa 100644 --- a/src/components/MobileMenu.tsx +++ b/src/components/MobileMenu.tsx @@ -105,16 +105,6 @@ export default function MobileMenu({ > Exams - - Exercises - )} void; className?: string; user: User; + entities?: EntityWithRoles[] } interface NavProps { @@ -76,7 +76,15 @@ const Nav = ({ Icon, label, path, keyPath, disabled = false, isMinimized = false ); }; -export default function Sidebar({ path, navDisabled = false, focusMode = false, user, onFocusLayerMouseEnter, className }: Props) { +export default function Sidebar({ + path, + entities = [], + navDisabled = false, + focusMode = false, + user, + onFocusLayerMouseEnter, + className +}: Props) { const router = useRouter(); const [isMinimized, toggleMinimize] = usePreferencesStore((state) => [state.isSidebarMinimized, state.toggleSidebarMinimized]); @@ -84,6 +92,10 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false, const { totalAssignedTickets } = useTicketsListener(user.id); const { permissions } = usePermissions(user.id); + const entitiesAllowGeneration = useAllowedEntitiesSomePermissions(user, entities, [ + "generate_reading", "generate_listening", "generate_writing", "generate_speaking", "generate_level" + ]) + const logout = async () => { axios.post("/api/logout").finally(() => { setTimeout(() => router.reload(), 500); @@ -104,9 +116,6 @@ export default function Sidebar({ path, navDisabled = false, focusMode = false, {checkAccess(user, ["student", "teacher", "developer"], permissions, "viewExams") && (