feat(web): 课堂求助 store 与全局 collab 连接

连接全局常驻,不跟题目页起落 —— 老师在任何页面都要能收到求助。
列表按题目聚合,同题多人时能一眼看出该全班讲。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K1d8B3f4SXJwDvUY625eQd
This commit is contained in:
2026-08-28 05:36:51 -06:00
parent aef687bcfc
commit 17aa69f8a7
3 changed files with 226 additions and 0 deletions

View File

@@ -6,10 +6,12 @@ import { useConfigStore } from "shared/store/config"
import { useConfigUpdate } from "shared/composables/configUpdate"
import { useMaxKB } from "shared/composables/maxkb"
import { useUserStore } from "shared/store/user"
import { useCollabStore } from "shared/store/collab"
const isDark = useDark()
const configStore = useConfigStore()
const userStore = useUserStore()
const collabStore = useCollabStore()
// 初始化配置和实时更新
onMounted(() => {
@@ -23,6 +25,17 @@ onMounted(() => {
useConfigUpdate()
useMaxKB()
// 课堂求助通道。和 /ws/config 一样是全局常驻的:老师可能正在后台改题时
// 收到求助,学生也要在排队期间一直挂着,所以不放在题目页里起落
watch(
() => userStore.isAuthed,
(isAuthed) => {
if (isAuthed) collabStore.connect()
else collabStore.disconnect()
},
{ immediate: true },
)
// 延迟加载 highlight.js避免阻塞首屏
const hljsInstance = ref<any>(null)
const loadHighlightJS = async () => {