@@ -133,8 +133,39 @@ function EditorComponent() {
133133 DEFAULT_LANGUAGE : selectedLanguage . DEFAULT_LANGUAGE ,
134134 NAME : selectedLanguage . NAME ,
135135 } ) ;
136- setCode ( selectedLanguage . HELLO_WORLD ) ;
137- } , [ currentLanguage ] ) ;
136+ let savedCode = null ;
137+ try {
138+ savedCode = localStorage . getItem ( `code-${ selectedLanguage . DEFAULT_LANGUAGE } ` ) ;
139+ } catch ( e ) {
140+ enqueueSnackbar ( "Failed to load saved code. Local storage might be unavailable." , { variant : "error" } ) ;
141+ console . error ( "Local storage load error:" , e ) ;
142+ }
143+
144+ if ( savedCode !== null ) {
145+ setCode ( savedCode ) ;
146+ } else {
147+ setCode ( selectedLanguage . HELLO_WORLD ) ;
148+ } } , [ currentLanguage , enqueueSnackbar ] ) ;
149+
150+ useEffect ( ( ) => {
151+ if ( isImportingRef . current ) return ;
152+
153+ const handler = setTimeout ( ( ) => {
154+ try {
155+ if ( code ) {
156+ localStorage . setItem ( `code-${ currentLanguage } ` , code ) ;
157+ } else {
158+ localStorage . removeItem ( `code-${ currentLanguage } ` ) ;
159+ }
160+ } catch ( e ) {
161+ enqueueSnackbar ( "Failed to save code automatically. Local storage might be full or unavailable." , { variant : "error" } ) ;
162+ console . error ( "Local storage save error:" , e ) ;
163+ } } , 500 ) ; // 500ms debounce
164+
165+ return ( ) => {
166+ clearTimeout ( handler ) ;
167+ } ;
168+ } , [ code , currentLanguage , enqueueSnackbar ] ) ;
138169
139170 const handleEditorThemeChange = async ( _ , theme ) => {
140171 if ( [ "light" , "vs-dark" ] . includes ( theme . ID ) ) {
0 commit comments