Lashtw commited on
Commit
a285279
·
verified ·
1 Parent(s): d789f7b

Upload 10 files

Browse files
src/services/classroom.js CHANGED
@@ -342,6 +342,7 @@ export async function getPeerPrompts(roomCode, challengeId) {
342
  * @param {string} challengeId
343
  */
344
  export async function resetProgress(userId, roomCode, challengeId) {
 
345
  const progressRef = collection(db, PROGRESS_COLLECTION);
346
  const q = query(
347
  progressRef,
@@ -350,12 +351,19 @@ export async function resetProgress(userId, roomCode, challengeId) {
350
  );
351
  const snapshot = await getDocs(q);
352
 
 
 
353
  if (!snapshot.empty) {
354
  // Reset status to 'started' so they can submit again
355
  await updateDoc(snapshot.docs[0].ref, {
356
  status: 'started',
357
  timestamp: serverTimestamp()
358
  });
 
 
 
 
 
359
  }
360
  }
361
 
 
342
  * @param {string} challengeId
343
  */
344
  export async function resetProgress(userId, roomCode, challengeId) {
345
+ console.log(`[resetProgress] Attempting reset for User: ${userId}, Challenge: ${challengeId}, Room: ${roomCode}`);
346
  const progressRef = collection(db, PROGRESS_COLLECTION);
347
  const q = query(
348
  progressRef,
 
351
  );
352
  const snapshot = await getDocs(q);
353
 
354
+ console.log(`[resetProgress] Found ${snapshot.size} documents.`);
355
+
356
  if (!snapshot.empty) {
357
  // Reset status to 'started' so they can submit again
358
  await updateDoc(snapshot.docs[0].ref, {
359
  status: 'started',
360
  timestamp: serverTimestamp()
361
  });
362
+ console.log(`[resetProgress] Document updated successfully.`);
363
+ return true;
364
+ } else {
365
+ console.warn(`[resetProgress] No progress document found to reset!`);
366
+ return false;
367
  }
368
  }
369
 
src/views/InstructorView.js CHANGED
@@ -605,16 +605,24 @@ export function setupInstructorEvents() {
605
  const challengeId = modal.dataset.challengeId;
606
  const roomCode = localStorage.getItem('vibecoding_room_code');
607
 
608
- console.log('Reject attempt:', { userId, challengeId, roomCode });
609
 
610
- if (!userId || !challengeId) return;
 
 
 
611
 
612
  if (confirm('確定要退回此學員的進度嗎?學員將需要重新作答。')) {
613
  try {
614
  const { resetProgress } = await import("../services/classroom.js");
615
- await resetProgress(userId, roomCode, challengeId);
616
- alert('已成功退回,學員將需要重新作答。');
617
- window.closeBroadcastModal();
 
 
 
 
 
618
  } catch (e) {
619
  console.error("Reject failed:", e);
620
  alert('退回失敗: ' + e.message);
 
605
  const challengeId = modal.dataset.challengeId;
606
  const roomCode = localStorage.getItem('vibecoding_room_code');
607
 
608
+ console.log('Reject attempt - Click details:', { dataset: modal.dataset, userId, challengeId, roomCode });
609
 
610
+ if (!userId || !challengeId) {
611
+ console.error('Missing userId or challengeId');
612
+ return;
613
+ }
614
 
615
  if (confirm('確定要退回此學員的進度嗎?學員將需要重新作答。')) {
616
  try {
617
  const { resetProgress } = await import("../services/classroom.js");
618
+ const success = await resetProgress(userId, roomCode, challengeId);
619
+
620
+ if (success) {
621
+ alert('已成功退回,學員將需要重新作答。');
622
+ window.closeBroadcastModal();
623
+ } else {
624
+ alert('找不到該學員的進度紀錄,無法退回 (Document Not Found)。');
625
+ }
626
  } catch (e) {
627
  console.error("Reject failed:", e);
628
  alert('退回失敗: ' + e.message);