diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 682a4447..b72d311a 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -181,7 +181,16 @@ import UserDropdown from '@/components/UserDropdown.vue' import CollapseSidebar from '@/components/Icons/CollapseSidebar.vue' import SidebarLink from '@/components/SidebarLink.vue' -import { ref, onMounted, inject, watch, reactive, markRaw, h } from 'vue' +import { + ref, + onMounted, + inject, + watch, + reactive, + markRaw, + h, + onUnmounted, +} from 'vue' import { getSidebarLinks } from '../utils' import { usersStore } from '@/stores/user' import { sessionStore } from '@/stores/session' @@ -626,4 +635,8 @@ watch(userResource, () => { const redirectToWebsite = () => { window.open('https://frappe.io/learning', '_blank') } + +onUnmounted(() => { + socket.off('publish_lms_notifications') +}) diff --git a/frontend/src/components/DiscussionReplies.vue b/frontend/src/components/DiscussionReplies.vue index 9e328587..10ae9a08 100644 --- a/frontend/src/components/DiscussionReplies.vue +++ b/frontend/src/components/DiscussionReplies.vue @@ -97,7 +97,7 @@ import { createResource, TextEditor, Button, Dropdown, toast } from 'frappe-ui' import { timeAgo } from '../utils' import UserAvatar from '@/components/UserAvatar.vue' import { ChevronLeft, MoreHorizontal } from 'lucide-vue-next' -import { ref, inject, onMounted } from 'vue' +import { ref, inject, onMounted, onUnmounted } from 'vue' const showTopics = defineModel('showTopics') const newReply = ref('') @@ -251,4 +251,10 @@ const deleteReply = (reply) => { } ) } + +onUnmounted(() => { + socket.off('publish_message') + socket.off('update_message') + socket.off('delete_message') +}) diff --git a/frontend/src/components/Discussions.vue b/frontend/src/components/Discussions.vue index 95e47efd..04747bba 100644 --- a/frontend/src/components/Discussions.vue +++ b/frontend/src/components/Discussions.vue @@ -70,7 +70,7 @@ import { createResource, Button } from 'frappe-ui' import UserAvatar from '@/components/UserAvatar.vue' import { singularize, timeAgo } from '../utils' -import { ref, onMounted, inject } from 'vue' +import { ref, onMounted, inject, onUnmounted } from 'vue' import DiscussionReplies from '@/components/DiscussionReplies.vue' import DiscussionModal from '@/components/Modals/DiscussionModal.vue' import { MessageSquareText } from 'lucide-vue-next' @@ -153,4 +153,8 @@ const showReplies = (topic) => { const openTopicModal = () => { showTopicModal.value = true } + +onUnmounted(() => { + socket.off('new_discussion_topic') +}) diff --git a/frontend/src/components/Modals/QuizInVideo.vue b/frontend/src/components/Modals/QuizInVideo.vue index 3d12ea15..18575fa3 100644 --- a/frontend/src/components/Modals/QuizInVideo.vue +++ b/frontend/src/components/Modals/QuizInVideo.vue @@ -10,10 +10,10 @@
{{ quiz.data.title }}
- + +
+
- - {{ __('Start') }} - - -
{{ __( 'You have already exceeded the maximum number of attempts allowed for this quiz.' @@ -263,7 +274,7 @@ {{ __('Try Again') }} -
@@ -316,7 +327,6 @@ let questions = reactive([]) const possibleAnswer = ref(null) const timer = ref(0) let timerInterval = null -const router = useRouter() const props = defineProps({ quizName: { @@ -327,7 +337,7 @@ const props = defineProps({ type: Boolean, default: false, }, - onSubmit: { + backToVideo: { type: Function, default: () => {}, }, @@ -627,11 +637,15 @@ const getInstructions = (question) => { } const markLessonProgress = () => { - if (router.currentRoute.value.name == 'Lesson') { + let pathname = window.location.pathname.split('/') + if (pathname[2] != 'courses') return + let lessonIndex = pathname.pop().split('-') + + if (lessonIndex.length == 2) { call('lms.lms.api.mark_lesson_progress', { - course: router.currentRoute.value.params.courseName, - chapter_number: router.currentRoute.value.params.chapterNumber, - lesson_number: router.currentRoute.value.params.lessonNumber, + course: pathname[3], + chapter_number: lessonIndex[0], + lesson_number: lessonIndex[1], }) } } diff --git a/frontend/src/components/VideoBlock.vue b/frontend/src/components/VideoBlock.vue index 692195af..e5c06a76 100644 --- a/frontend/src/components/VideoBlock.vue +++ b/frontend/src/components/VideoBlock.vue @@ -1,11 +1,11 @@