MCPcopy
hub / github.com/jgraph/drawio-desktop / saveDraft

Function saveDraft

src/main/electron.js:3079–3117  ·  view source on GitHub ↗
(fileObject, data)

Source from the content-addressed store, hash-verified

3077};
3078
3079async function saveDraft(fileObject, data)
3080{
3081 var draftFileName = fileObject.draftFileName || getDraftFileName(fileObject);
3082
3083 if (!checkFileContent(data))
3084 {
3085 throw new Error('Invalid file data');
3086 }
3087
3088 await assertWritablePath(draftFileName);
3089
3090 let draftFh;
3091
3092 try
3093 {
3094 draftFh = await fsProm.open(draftFileName, O_SYNC | O_CREAT | O_WRONLY | O_TRUNC);
3095 await fsProm.writeFile(draftFh, data, 'utf8');
3096 await draftFh.sync(); // Flush to disk
3097 }
3098 finally
3099 {
3100 await draftFh?.close();
3101 }
3102
3103 if (isWin)
3104 {
3105 try
3106 {
3107 // Add Hidden attribute:
3108 var child = spawn('attrib', ['+h', draftFileName]);
3109 child.on('error', function(err)
3110 {
3111 console.log('hiding draft file error: ' + err);
3112 });
3113 } catch(e) {}
3114 }
3115
3116 return draftFileName;
3117}
3118
3119// Reads the .bkp backup written before the last overwrite (see saveFile),
3120// used for best-effort recovery when the main file fails to load. Returns

Callers 1

electron.jsFile · 0.85

Calls 4

getDraftFileNameFunction · 0.85
checkFileContentFunction · 0.85
assertWritablePathFunction · 0.85
closeMethod · 0.80

Tested by

no test coverage detected