diff --git a/frontend/src/views/classes/SingleClass.vue b/frontend/src/views/classes/SingleClass.vue index 500a25f4..f058d6be 100644 --- a/frontend/src/views/classes/SingleClass.vue +++ b/frontend/src/views/classes/SingleClass.vue @@ -16,6 +16,9 @@ const route = useRoute(); const classId: string = route.params.id as string; const username = ref(undefined); + const isLoading = ref(false); + const isError = ref(false); + const errorMessage = ref(""); // Queries used to access the backend and catch loading or errors @@ -32,8 +35,16 @@ // Load current user before rendering the page onMounted(async () => { - const userObject = await authState.loadUser(); - username.value = userObject?.profile?.preferred_username ?? undefined; + isLoading.value = true; + try { + const userObject = await authState.loadUser(); + username.value = userObject!.profile!.preferred_username; + } catch (error) { + isError.value = true; + errorMessage.value = error instanceof Error ? error.message : String(error); + } finally { + isLoading.value = false; + } }); // Used to set the visibility of the dialog @@ -109,6 +120,19 @@