@@ -80,135 +80,138 @@ export const handle_restore_review = async (
8080 content : original_content ,
8181 is_new : ! file_exists ,
8282 workspace_name : file . workspace_name ,
83- is_deleted : file . is_deleted
83+ is_deleted : file . is_deleted ,
84+ is_checked : file . is_checked
8485 } )
8586
86- if ( file . is_deleted ) {
87- if ( file_exists ) {
88- try {
89- const tabs_to_close : vscode . Tab [ ] = [ ]
90- for ( const tab_group of vscode . window . tabGroups . all ) {
91- tabs_to_close . push (
92- ...tab_group . tabs . filter ( ( tab ) => {
93- const tab_uri = ( tab . input as any ) ?. uri as
94- | vscode . Uri
95- | undefined
96- return tab_uri && tab_uri . fsPath === safe_path
97- } )
87+ if ( file . is_checked !== false ) {
88+ if ( file . is_deleted ) {
89+ if ( file_exists ) {
90+ try {
91+ const tabs_to_close : vscode . Tab [ ] = [ ]
92+ for ( const tab_group of vscode . window . tabGroups . all ) {
93+ tabs_to_close . push (
94+ ...tab_group . tabs . filter ( ( tab ) => {
95+ const tab_uri = ( tab . input as any ) ?. uri as
96+ | vscode . Uri
97+ | undefined
98+ return tab_uri && tab_uri . fsPath === safe_path
99+ } )
100+ )
101+ }
102+
103+ if ( tabs_to_close . length > 0 ) {
104+ await vscode . window . tabGroups . close ( tabs_to_close )
105+ }
106+
107+ fs . unlinkSync ( safe_path )
108+ Logger . info ( {
109+ function_name : 'handle_restore_review' ,
110+ message : 'File deleted' ,
111+ data : safe_path
112+ } )
113+ await remove_directory_if_empty ( {
114+ dir_path : path . dirname ( safe_path ) ,
115+ workspace_root
116+ } )
117+ } catch ( error ) {
118+ Logger . error ( {
119+ function_name : 'handle_restore_review' ,
120+ message : 'Error deleting file' ,
121+ data : { safe_path, error }
122+ } )
123+ vscode . window . showErrorMessage (
124+ `Failed to delete file: ${ file . file_path } `
98125 )
99126 }
127+ }
128+ } else if ( file . content !== undefined ) {
129+ // Create or update
130+ if ( file_exists ) {
131+ try {
132+ const file_uri = vscode . Uri . file ( safe_path )
133+ const document = await vscode . workspace . openTextDocument ( file_uri )
134+ const editor = await vscode . window . showTextDocument ( document )
135+ let final_content = file . content
136+ if (
137+ original_content . endsWith ( '\n' ) &&
138+ ! final_content . endsWith ( '\n' )
139+ ) {
140+ final_content += '\n'
141+ }
142+ await editor . edit ( ( edit ) => {
143+ edit . replace (
144+ new vscode . Range (
145+ document . positionAt ( 0 ) ,
146+ document . positionAt ( document . getText ( ) . length )
147+ ) ,
148+ final_content
149+ )
150+ } )
100151
101- if ( tabs_to_close . length > 0 ) {
102- await vscode . window . tabGroups . close ( tabs_to_close )
152+ await document . save ( )
153+ Logger . info ( {
154+ function_name : 'handle_restore_review' ,
155+ message : 'Existing file replaced and saved' ,
156+ data : safe_path
157+ } )
158+ } catch ( error ) {
159+ Logger . error ( {
160+ function_name : 'handle_restore_review' ,
161+ message : 'Error updating file' ,
162+ data : { safe_path, error }
163+ } )
164+ vscode . window . showErrorMessage (
165+ `Failed to update file: ${ file . file_path } `
166+ )
103167 }
104-
105- fs . unlinkSync ( safe_path )
106- Logger . info ( {
107- function_name : 'handle_restore_review' ,
108- message : 'File deleted' ,
109- data : safe_path
110- } )
111- await remove_directory_if_empty ( {
112- dir_path : path . dirname ( safe_path ) ,
113- workspace_root
114- } )
115- } catch ( error ) {
116- Logger . error ( {
117- function_name : 'handle_restore_review' ,
118- message : 'Error deleting file' ,
119- data : { safe_path, error }
120- } )
121- vscode . window . showErrorMessage (
122- `Failed to delete file: ${ file . file_path } `
123- )
124- }
125- }
126- } else if ( file . content !== undefined ) {
127- // Create or update
128- if ( file_exists ) {
129- try {
130- const file_uri = vscode . Uri . file ( safe_path )
131- const document = await vscode . workspace . openTextDocument ( file_uri )
132- const editor = await vscode . window . showTextDocument ( document )
133- let final_content = file . content
134- if (
135- original_content . endsWith ( '\n' ) &&
136- ! final_content . endsWith ( '\n' )
137- ) {
138- final_content += '\n'
168+ } else {
169+ // New file
170+ const directory = path . dirname ( safe_path )
171+ if ( ! fs . existsSync ( directory ) ) {
172+ try {
173+ fs . mkdirSync ( directory , { recursive : true } )
174+ Logger . info ( {
175+ function_name : 'handle_restore_review' ,
176+ message : 'Directory created' ,
177+ data : directory
178+ } )
179+ } catch ( error ) {
180+ Logger . error ( {
181+ function_name : 'handle_restore_review' ,
182+ message : 'Failed to create directory' ,
183+ data : { directory, error, file_path : file . file_path }
184+ } )
185+ vscode . window . showErrorMessage (
186+ dictionary . error_message . FAILED_TO_CREATE_DIRECTORY (
187+ file . file_path
188+ )
189+ )
190+ continue
191+ }
139192 }
140- await editor . edit ( ( edit ) => {
141- edit . replace (
142- new vscode . Range (
143- document . positionAt ( 0 ) ,
144- document . positionAt ( document . getText ( ) . length )
145- ) ,
146- final_content
147- )
148- } )
149193
150- await document . save ( )
151- Logger . info ( {
152- function_name : 'handle_restore_review' ,
153- message : 'Existing file replaced and saved' ,
154- data : safe_path
155- } )
156- } catch ( error ) {
157- Logger . error ( {
158- function_name : 'handle_restore_review' ,
159- message : 'Error updating file' ,
160- data : { safe_path, error }
161- } )
162- vscode . window . showErrorMessage (
163- `Failed to update file: ${ file . file_path } `
164- )
165- }
166- } else {
167- // New file
168- const directory = path . dirname ( safe_path )
169- if ( ! fs . existsSync ( directory ) ) {
170194 try {
171- fs . mkdirSync ( directory , { recursive : true } )
195+ fs . writeFileSync ( safe_path , file . content )
172196 Logger . info ( {
173197 function_name : 'handle_restore_review' ,
174- message : 'Directory created' ,
175- data : directory
198+ message : 'New file created' ,
199+ data : safe_path
176200 } )
201+ const document = await vscode . workspace . openTextDocument ( safe_path )
202+ await vscode . window . showTextDocument ( document , { preview : false } )
177203 } catch ( error ) {
178204 Logger . error ( {
179205 function_name : 'handle_restore_review' ,
180- message : 'Failed to create directory ' ,
181- data : { directory , error, file_path : file . file_path }
206+ message : 'Failed to write new file ' ,
207+ data : { safe_path , error, file_path : file . file_path }
182208 } )
183209 vscode . window . showErrorMessage (
184- dictionary . error_message . FAILED_TO_CREATE_DIRECTORY (
185- file . file_path
186- )
210+ dictionary . error_message . FAILED_TO_WRITE_FILE ( file . file_path )
187211 )
188212 continue
189213 }
190214 }
191-
192- try {
193- fs . writeFileSync ( safe_path , file . content )
194- Logger . info ( {
195- function_name : 'handle_restore_review' ,
196- message : 'New file created' ,
197- data : safe_path
198- } )
199- const document = await vscode . workspace . openTextDocument ( safe_path )
200- await vscode . window . showTextDocument ( document , { preview : false } )
201- } catch ( error ) {
202- Logger . error ( {
203- function_name : 'handle_restore_review' ,
204- message : 'Failed to write new file' ,
205- data : { safe_path, error, file_path : file . file_path }
206- } )
207- vscode . window . showErrorMessage (
208- dictionary . error_message . FAILED_TO_WRITE_FILE ( file . file_path )
209- )
210- continue
211- }
212215 }
213216 }
214217 }
0 commit comments