diff --git a/frontend/src/components/room/CodeEditor.tsx b/frontend/src/components/room/CodeEditor.tsx index cee3c3d..d0da994 100644 --- a/frontend/src/components/room/CodeEditor.tsx +++ b/frontend/src/components/room/CodeEditor.tsx @@ -52,7 +52,7 @@ interface CodeEditorProps { userName: string; cursorPosition: { lineNumber: number; - column: number + column: number } | null; selection: { startLineNumber: number; @@ -61,12 +61,17 @@ interface CodeEditorProps { endColumn: number; } | null; }>; + initialLanguage: string; } -function CodeEditor({ code, setCode, ws, roomId, interviewType, users }: CodeEditorProps) { +function CodeEditor({ code, setCode, ws, roomId, interviewType, users, initialLanguage }: CodeEditorProps) { const { isDark } = useContext(DarkModeContext); const { userId } = useContext(UserContext); - const [language, setLanguage] = useState(interviewType === 'leetcode' ? 'python' : 'react'); + const isKnownLanguage = (lang: string): lang is Language => + LANGUAGE_OPTIONS.some(opt => opt.value === lang); + const [language, setLanguage] = useState( + isKnownLanguage(initialLanguage) ? initialLanguage : interviewType === 'leetcode' ? 'python' : 'react' + ); const [langDropdownOpen, setLangDropdownOpen] = useState(false); const [runOutput, setRunOutput] = useState(null); const [isRunning, setIsRunning] = useState(false); diff --git a/frontend/src/components/room/RoomPage.tsx b/frontend/src/components/room/RoomPage.tsx index 751bad2..c88438b 100644 --- a/frontend/src/components/room/RoomPage.tsx +++ b/frontend/src/components/room/RoomPage.tsx @@ -16,7 +16,8 @@ function RoomPage({ interviewType: propInterviewType }: RoomPageProps) { const { roomId } = useParams<{ roomId: string }>(); const navigate = useNavigate(); const location = useLocation(); - const interviewType: InterviewType = (location.state as { interviewType?: InterviewType })?.interviewType ?? propInterviewType ?? 'react'; + const fallbackInterviewType: InterviewType = + (location.state as { interviewType?: InterviewType })?.interviewType ?? propInterviewType ?? 'react'; const { isDark } = useContext(DarkModeContext); const { userId } = useContext(UserContext); const [userName, setUserName] = useState(''); @@ -25,6 +26,8 @@ function RoomPage({ interviewType: propInterviewType }: RoomPageProps) { const [showPopup, setShowPopup] = useState(false); const [roomName, setRoomName] = useState('sce interview'); const [code, setCode] = useState(DEFAULT_CODE); + const [language, setLanguage] = useState(fallbackInterviewType === 'leetcode' ? 'python' : 'react'); + const [interviewType, setInterviewType] = useState(fallbackInterviewType); const [ws, setWs] = useState(null); const [users, setUsers] = useState {/* Toast notifications */}