fix(演示模式): 演示模式下提交列表和提交详情不再露出别人的代码——投屏装成学生时,和学生看到的一样是「别人的代码看不到」
Deploy / deploy (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
10d2638c23
commit
e10a7791a2
2 files changed
+17
-1
No files matched your search
@@ -78,6 +78,12 @@ async function load(quiet = false) {
|
||||
try {
|
||||
const res = await getSubmission(currentId.value, true)
|
||||
if (seq !== loadSeq) return
|
||||
// 演示模式(超管装成学生投屏):后端照样给了别人的代码,学生是看不到的,这里也挡掉
|
||||
if (userStore.demoMode && res.userId !== userStore.user?.id) {
|
||||
detail.value = null
|
||||
state.value = "forbidden"
|
||||
return
|
||||
}
|
||||
detail.value = res
|
||||
state.value = "ok"
|
||||
if (judging.value) timer = setTimeout(() => load(true), 2000)
|
||||
|
||||
@@ -167,7 +167,7 @@ async function listSubmissions() {
|
||||
const res = await fetchPage()
|
||||
if (seq !== requestSeq) return
|
||||
if (mode) flowcharts.value = res.results as FlowchartSubmissionListItem[]
|
||||
else submissions.value = res.results as SubmissionListItem[]
|
||||
else submissions.value = asSeenByStudent(res.results as SubmissionListItem[])
|
||||
total.value = res.total
|
||||
unknownProblems.value = res.unknownProblems
|
||||
newCount.value = 0
|
||||
@@ -671,6 +671,16 @@ function languageText(row: SubmissionListItem) {
|
||||
}
|
||||
|
||||
/** 学生看别人的那几行:名字淡一档、带一把锁(自己的看不了是题单那道闸,另说) */
|
||||
/**
|
||||
* 演示模式(超管把界面装成学生投屏):后端认的还是超管,每一行都给了 showLink。
|
||||
* 学生是看不到别人代码的,投屏时也不该露出来 —— 别人的行一律当成看不到
|
||||
*/
|
||||
function asSeenByStudent(rows: SubmissionListItem[]) {
|
||||
if (!userStore.demoMode) return rows
|
||||
const me = userStore.user?.id
|
||||
return rows.map((row) => (row.userId === me ? row : { ...row, showLink: false }))
|
||||
}
|
||||
|
||||
function othersRow(row: SubmissionListItem) {
|
||||
return !row.showLink && row.userId !== userStore.user?.id
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user