29
29
<q-list >
30
30
<template v-for =" course in user_courses " :key =" course .course_id " >
31
31
<q-item clickable v-close-popup
32
- @click =" changeCourse(course.course_id, course.course_name )" >
32
+ @click =" changeCourse(course.course_id)" >
33
33
<q-item-section >
34
34
<q-item-label >{{course.course_name}}</q-item-label >
35
35
</q-item-section >
64
64
<script setup lang="ts">
65
65
import { computed , defineEmits , ref } from ' vue' ;
66
66
import { useRouter } from ' vue-router' ;
67
- import { endSession } from ' src/common/api-requests/session' ;
68
67
import { useI18n } from ' vue-i18n' ;
68
+
69
69
import { setI18nLanguage } from ' boot/i18n' ;
70
+ import { logger } from ' src/boot/logger' ;
71
+
72
+ import { endSession } from ' src/common/api-requests/session' ;
70
73
import { useSessionStore } from ' src/stores/session' ;
71
- import type { CourseSettingInfo } from ' src/common/models/settings' ;
72
74
import { useSettingsStore } from ' src/stores/settings' ;
73
- import { logger } from ' src/boot/logger' ;
75
+
76
+ import type { CourseSettingInfo } from ' src/common/models/settings' ;
74
77
75
78
defineEmits ([' toggle-menu' , ' toggle-sidebar' ]);
76
79
const session = useSessionStore ();
@@ -84,18 +87,17 @@ const full_name = computed(() => session.full_name);
84
87
const user_courses = computed (() =>
85
88
session .user_courses .filter (course => course .course_name !== current_course_name .value ));
86
89
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 );
89
93
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 } ` );
99
101
}
100
102
};
101
103
@@ -106,6 +108,6 @@ const availableLocales = computed(() =>
106
108
const logout = async () => {
107
109
await endSession ();
108
110
void session .logout ();
109
- void router .push (' / login' );
111
+ void router .push ({ name: ' login' } );
110
112
};
111
113
</script >
0 commit comments