Spaces:
Running
Running
Upload 9 files
Browse files- src/main.js +4 -0
- src/views/InstructorView.js +14 -1
src/main.js
CHANGED
|
@@ -52,6 +52,10 @@ function handleRoute() {
|
|
| 52 |
navigateTo('admin');
|
| 53 |
return;
|
| 54 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
|
| 56 |
// Auto-login check
|
| 57 |
const roomCode = localStorage.getItem('vibecoding_room_code');
|
|
|
|
| 52 |
navigateTo('admin');
|
| 53 |
return;
|
| 54 |
}
|
| 55 |
+
if (hash === 'instructor') {
|
| 56 |
+
navigateTo('instructor');
|
| 57 |
+
return;
|
| 58 |
+
}
|
| 59 |
|
| 60 |
// Auto-login check
|
| 61 |
const roomCode = localStorage.getItem('vibecoding_room_code');
|
src/views/InstructorView.js
CHANGED
|
@@ -171,7 +171,8 @@ export function setupInstructorEvents() {
|
|
| 171 |
const isValid = await verifyInstructorPassword(pwdInput.value);
|
| 172 |
if (isValid) {
|
| 173 |
authModal.classList.add('hidden');
|
| 174 |
-
// Store session to avoid re-login on reload
|
|
|
|
| 175 |
} else {
|
| 176 |
alert('密碼錯誤');
|
| 177 |
pwdInput.value = '';
|
|
@@ -589,12 +590,24 @@ export function setupInstructorEvents() {
|
|
| 589 |
}
|
| 590 |
});
|
| 591 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 592 |
function enterRoom(roomCode) {
|
| 593 |
createContainer.classList.add('hidden');
|
| 594 |
roomInfo.classList.remove('hidden');
|
| 595 |
dashboardContent.classList.remove('hidden');
|
| 596 |
displayRoomCode.textContent = roomCode;
|
| 597 |
localStorage.setItem('vibecoding_instructor_room', roomCode);
|
|
|
|
| 598 |
|
| 599 |
// Subscribe to updates
|
| 600 |
subscribeToRoom(roomCode, (students) => {
|
|
|
|
| 171 |
const isValid = await verifyInstructorPassword(pwdInput.value);
|
| 172 |
if (isValid) {
|
| 173 |
authModal.classList.add('hidden');
|
| 174 |
+
// Store session to avoid re-login on reload
|
| 175 |
+
sessionStorage.setItem('vibecoding_instructor_auth', 'true');
|
| 176 |
} else {
|
| 177 |
alert('密碼錯誤');
|
| 178 |
pwdInput.value = '';
|
|
|
|
| 590 |
}
|
| 591 |
});
|
| 592 |
|
| 593 |
+
// Check Previous Session
|
| 594 |
+
if (sessionStorage.getItem('vibecoding_instructor_auth') === 'true') {
|
| 595 |
+
authModal.classList.add('hidden');
|
| 596 |
+
}
|
| 597 |
+
|
| 598 |
+
// Check Active Room State
|
| 599 |
+
const activeRoom = sessionStorage.getItem('vibecoding_instructor_in_room');
|
| 600 |
+
if (activeRoom === 'true' && savedRoomCode) {
|
| 601 |
+
enterRoom(savedRoomCode);
|
| 602 |
+
}
|
| 603 |
+
|
| 604 |
function enterRoom(roomCode) {
|
| 605 |
createContainer.classList.add('hidden');
|
| 606 |
roomInfo.classList.remove('hidden');
|
| 607 |
dashboardContent.classList.remove('hidden');
|
| 608 |
displayRoomCode.textContent = roomCode;
|
| 609 |
localStorage.setItem('vibecoding_instructor_room', roomCode);
|
| 610 |
+
sessionStorage.setItem('vibecoding_instructor_in_room', 'true');
|
| 611 |
|
| 612 |
// Subscribe to updates
|
| 613 |
subscribeToRoom(roomCode, (students) => {
|