diff --git a/src/main/index.js b/src/main/index.js index 949c9aa..54d73f1 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -73,6 +73,14 @@ const createAboutWindow = () => { return window; }; +const getIsProjectSave = downloadItem => { + switch (downloadItem.getMimeType()) { + case 'application/x.scratch.sb3': + return true; + } + return false; +}; + const createMainWindow = () => { const window = createWindow({ width: defaultSize.width, @@ -82,18 +90,21 @@ const createMainWindow = () => { const webContents = window.webContents; webContents.session.on('will-download', (ev, item) => { + const isProjectSave = getIsProjectSave(item); const itemPath = item.getFilename(); const baseName = path.basename(itemPath); const extName = path.extname(baseName); + const options = { + defaultPath: baseName + }; if (extName) { const extNameNoDot = extName.replace(/^\./, ''); - const options = { - defaultPath: baseName, - filters: [getFilterForExtension(extNameNoDot)] - }; - const userChosenPath = dialog.showSaveDialog(window, options); - if (userChosenPath) { - item.setSavePath(userChosenPath); + options.filters = [getFilterForExtension(extNameNoDot)]; + } + const userChosenPath = dialog.showSaveDialog(window, options); + if (userChosenPath) { + item.setSavePath(userChosenPath); + if (isProjectSave) { const newProjectTitle = path.basename(userChosenPath, extName); webContents.send('setTitleFromSave', {title: newProjectTitle}); @@ -101,8 +112,10 @@ const createMainWindow = () => { // using the old title. This call lets the telemetry client know that the save was actually completed // and the event should be committed to the event queue with this new title. telemetry.projectSaveCompleted(newProjectTitle); - } else { - item.cancel(); + } + } else { + item.cancel(); + if (isProjectSave) { telemetry.projectSaveCanceled(); } }