From b64690e4164d168d56900bdbe732e9166ed83c74 Mon Sep 17 00:00:00 2001 From: Incharajayaram Date: Wed, 29 Oct 2025 21:28:15 +0530 Subject: [PATCH 1/3] Fix: Address Copilot review comments for autosave and language change logic --- src/pages/EditorComponent.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/pages/EditorComponent.js b/src/pages/EditorComponent.js index e012778..2a519ac 100644 --- a/src/pages/EditorComponent.js +++ b/src/pages/EditorComponent.js @@ -133,8 +133,8 @@ function EditorComponent() { DEFAULT_LANGUAGE: selectedLanguage.DEFAULT_LANGUAGE, NAME: selectedLanguage.NAME, }); - const savedCode = localStorage.getItem(`code-${currentLanguage}`); - if (savedCode) { + const savedCode = localStorage.getItem(`code-${selectedLanguage.DEFAULT_LANGUAGE}`); + if (savedCode !== null) { setCode(savedCode); } else { setCode(selectedLanguage.HELLO_WORLD); @@ -142,10 +142,20 @@ function EditorComponent() { }, [currentLanguage]); useEffect(() => { - if (code) { - localStorage.setItem(`code-${currentLanguage}`, code); - } - }, [code, currentLanguage]); + if (isImportingRef.current) return; + + const handler = setTimeout(() => { + if (code) { + localStorage.setItem(`code-${currentLanguage}`, code); + } else { + localStorage.removeItem(`code-${currentLanguage}`); + } + }, 500); // 500ms debounce + + return () => { + clearTimeout(handler); + }; + }, [code]); const handleEditorThemeChange = async (_, theme) => { if (["light", "vs-dark"].includes(theme.ID)) { From d2facc16972eebada4cc73da56c25a42242d216c Mon Sep 17 00:00:00 2001 From: Incharajayaram Date: Wed, 29 Oct 2025 22:10:11 +0530 Subject: [PATCH 2/3] Fix: Add robust error handling for localStorage operations --- src/pages/EditorComponent.js | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/pages/EditorComponent.js b/src/pages/EditorComponent.js index 2a519ac..86c4306 100644 --- a/src/pages/EditorComponent.js +++ b/src/pages/EditorComponent.js @@ -133,24 +133,34 @@ function EditorComponent() { DEFAULT_LANGUAGE: selectedLanguage.DEFAULT_LANGUAGE, NAME: selectedLanguage.NAME, }); - const savedCode = localStorage.getItem(`code-${selectedLanguage.DEFAULT_LANGUAGE}`); - if (savedCode !== null) { - setCode(savedCode); - } else { - setCode(selectedLanguage.HELLO_WORLD); - } - }, [currentLanguage]); + let savedCode = null; + try { + savedCode = localStorage.getItem(`code-${selectedLanguage.DEFAULT_LANGUAGE}`); + } catch (e) { + enqueueSnackbar("Failed to load saved code. Local storage might be unavailable.", { variant: "error" }); + console.error("Local storage load error:", e); + } + + if (savedCode !== null) { + setCode(savedCode); + } else { + setCode(selectedLanguage.HELLO_WORLD); + } }, [currentLanguage]); useEffect(() => { if (isImportingRef.current) return; const handler = setTimeout(() => { - if (code) { - localStorage.setItem(`code-${currentLanguage}`, code); - } else { - localStorage.removeItem(`code-${currentLanguage}`); - } - }, 500); // 500ms debounce + try { + if (code) { + localStorage.setItem(`code-${currentLanguage}`, code); + } else { + localStorage.removeItem(`code-${currentLanguage}`); + } + } catch (e) { + enqueueSnackbar("Failed to save code automatically. Local storage might be full or unavailable.", { variant: "error" }); + console.error("Local storage save error:", e); + } }, 500); // 500ms debounce return () => { clearTimeout(handler); From 699b1318d86bdbc28131647efb7735b205684e6c Mon Sep 17 00:00:00 2001 From: Incharajayaram Date: Wed, 29 Oct 2025 22:14:30 +0530 Subject: [PATCH 3/3] Fix: Resolve react-hooks/exhaustive-deps warnings --- src/pages/EditorComponent.js | 46 ++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/pages/EditorComponent.js b/src/pages/EditorComponent.js index 86c4306..23b41f6 100644 --- a/src/pages/EditorComponent.js +++ b/src/pages/EditorComponent.js @@ -133,39 +133,39 @@ function EditorComponent() { DEFAULT_LANGUAGE: selectedLanguage.DEFAULT_LANGUAGE, NAME: selectedLanguage.NAME, }); - let savedCode = null; - try { - savedCode = localStorage.getItem(`code-${selectedLanguage.DEFAULT_LANGUAGE}`); - } catch (e) { - enqueueSnackbar("Failed to load saved code. Local storage might be unavailable.", { variant: "error" }); - console.error("Local storage load error:", e); - } + let savedCode = null; + try { + savedCode = localStorage.getItem(`code-${selectedLanguage.DEFAULT_LANGUAGE}`); + } catch (e) { + enqueueSnackbar("Failed to load saved code. Local storage might be unavailable.", { variant: "error" }); + console.error("Local storage load error:", e); + } - if (savedCode !== null) { - setCode(savedCode); - } else { - setCode(selectedLanguage.HELLO_WORLD); - } }, [currentLanguage]); + if (savedCode !== null) { + setCode(savedCode); + } else { + setCode(selectedLanguage.HELLO_WORLD); + } }, [currentLanguage, enqueueSnackbar]); useEffect(() => { if (isImportingRef.current) return; const handler = setTimeout(() => { - try { - if (code) { - localStorage.setItem(`code-${currentLanguage}`, code); - } else { - localStorage.removeItem(`code-${currentLanguage}`); - } - } catch (e) { - enqueueSnackbar("Failed to save code automatically. Local storage might be full or unavailable.", { variant: "error" }); - console.error("Local storage save error:", e); - } }, 500); // 500ms debounce + try { + if (code) { + localStorage.setItem(`code-${currentLanguage}`, code); + } else { + localStorage.removeItem(`code-${currentLanguage}`); + } + } catch (e) { + enqueueSnackbar("Failed to save code automatically. Local storage might be full or unavailable.", { variant: "error" }); + console.error("Local storage save error:", e); + } }, 500); // 500ms debounce return () => { clearTimeout(handler); }; - }, [code]); + }, [code, currentLanguage, enqueueSnackbar]); const handleEditorThemeChange = async (_, theme) => { if (["light", "vs-dark"].includes(theme.ID)) {