2929 <q-list >
3030 <template v-for =" course in user_courses " :key =" course .course_id " >
3131 <q-item clickable v-close-popup
32- @click =" changeCourse(course.course_id, course.course_name )" >
32+ @click =" changeCourse(course.course_id)" >
3333 <q-item-section >
3434 <q-item-label >{{course.course_name}}</q-item-label >
3535 </q-item-section >
6464<script setup lang="ts">
6565import { computed , defineEmits , ref } from ' vue' ;
6666import { useRouter } from ' vue-router' ;
67- import { endSession } from ' src/common/api-requests/session' ;
6867import { useI18n } from ' vue-i18n' ;
68+
6969import { setI18nLanguage } from ' boot/i18n' ;
70+ import { logger } from ' src/boot/logger' ;
71+
72+ import { endSession } from ' src/common/api-requests/session' ;
7073import { useSessionStore } from ' src/stores/session' ;
71- import type { CourseSettingInfo } from ' src/common/models/settings' ;
7274import { useSettingsStore } from ' src/stores/settings' ;
73- import { logger } from ' src/boot/logger' ;
75+
76+ import type { CourseSettingInfo } from ' src/common/models/settings' ;
7477
7578defineEmits ([' toggle-menu' , ' toggle-sidebar' ]);
7679const session = useSessionStore ();
@@ -84,18 +87,17 @@ const full_name = computed(() => session.full_name);
8487const user_courses = computed (() =>
8588 session .user_courses .filter (course => course .course_name !== current_course_name .value ));
8689
87- const changeCourse = (course_id : number , course_name : string ) => {
88- const new_course = session .user_courses .find (course => course .course_name === course_name );
90+ const changeCourse = (course_id : number ) => {
91+ logger .debug (` [MenuBar/changeCourse]: changing the course to #${course_id } ` );
92+ session .setCourse (course_id );
8993
90- if (new_course != undefined ) {
91- router .push (` /courses/${new_course .course_id } ` ).then (() => {
92- session .setCourse ({
93- course_name: new_course .course_name ,
94- course_id: new_course .course_id
95- });
96- }).catch (() => {
97- logger .error (' [MenuBar/changeCourse]: Error occurred.' );
98- });
94+ // This sets the path to the instructor or student dashboard.
95+ // This only works currently for roles of student/instructor. We'll need to think about
96+ // the UI for other roles.
97+ if (! session .course .role || session .course .role == ' unknown' ) {
98+ logger .error (` [MenuBar/changeCourse]: the role is not defined for course #${course_id } ` );
99+ } else {
100+ void router .push (` /courses/${course_id }/${session .course .role } ` );
99101 }
100102};
101103
@@ -106,6 +108,6 @@ const availableLocales = computed(() =>
106108const logout = async () => {
107109 await endSession ();
108110 void session .logout ();
109- void router .push (' / login' );
111+ void router .push ({ name: ' login' } );
110112};
111113 </script >
0 commit comments