Merge pull request #77 from cwillisf/better-project-save-detection

Better project save detection
This commit is contained in:
Chris Willis-Ford 2019-09-16 12:57:57 -07:00 committed by GitHub
commit 0bf03a2199
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -73,6 +73,14 @@ const createAboutWindow = () => {
return window; return window;
}; };
const getIsProjectSave = downloadItem => {
switch (downloadItem.getMimeType()) {
case 'application/x.scratch.sb3':
return true;
}
return false;
};
const createMainWindow = () => { const createMainWindow = () => {
const window = createWindow({ const window = createWindow({
width: defaultSize.width, width: defaultSize.width,
@ -82,18 +90,21 @@ const createMainWindow = () => {
const webContents = window.webContents; const webContents = window.webContents;
webContents.session.on('will-download', (ev, item) => { webContents.session.on('will-download', (ev, item) => {
const isProjectSave = getIsProjectSave(item);
const itemPath = item.getFilename(); const itemPath = item.getFilename();
const baseName = path.basename(itemPath); const baseName = path.basename(itemPath);
const extName = path.extname(baseName); const extName = path.extname(baseName);
const options = {
defaultPath: baseName
};
if (extName) { if (extName) {
const extNameNoDot = extName.replace(/^\./, ''); const extNameNoDot = extName.replace(/^\./, '');
const options = { options.filters = [getFilterForExtension(extNameNoDot)];
defaultPath: baseName, }
filters: [getFilterForExtension(extNameNoDot)] const userChosenPath = dialog.showSaveDialog(window, options);
}; if (userChosenPath) {
const userChosenPath = dialog.showSaveDialog(window, options); item.setSavePath(userChosenPath);
if (userChosenPath) { if (isProjectSave) {
item.setSavePath(userChosenPath);
const newProjectTitle = path.basename(userChosenPath, extName); const newProjectTitle = path.basename(userChosenPath, extName);
webContents.send('setTitleFromSave', {title: newProjectTitle}); 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 // 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. // and the event should be committed to the event queue with this new title.
telemetry.projectSaveCompleted(newProjectTitle); telemetry.projectSaveCompleted(newProjectTitle);
} else { }
item.cancel(); } else {
item.cancel();
if (isProjectSave) {
telemetry.projectSaveCanceled(); telemetry.projectSaveCanceled();
} }
} }