Always show downloaded files in file manager.

shell.openItem is unsafe.

Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
Anders Kaseorg
2020-03-22 20:17:44 -07:00
parent a6d942fe6c
commit 4390966a62
3 changed files with 3 additions and 28 deletions

View File

@@ -13,7 +13,6 @@ export default function handleExternalLink(this: WebView, event: Electron.NewWin
const { url } = event; const { url } = event;
const domainPrefix = DomainUtil.getDomain(this.props.index).url; const domainPrefix = DomainUtil.getDomain(this.props.index).url;
const downloadPath = ConfigUtil.getConfigItem('downloadsPath', `${app.getPath('downloads')}`); const downloadPath = ConfigUtil.getConfigItem('downloadsPath', `${app.getPath('downloads')}`);
const shouldShowInFolder = ConfigUtil.getConfigItem('showDownloadFolder', false);
// Whitelist URLs which are allowed to be opened in the app // Whitelist URLs which are allowed to be opened in the app
const { const {
@@ -42,7 +41,7 @@ export default function handleExternalLink(this: WebView, event: Electron.NewWin
ipcRenderer.send('downloadFile', url, downloadPath); ipcRenderer.send('downloadFile', url, downloadPath);
ipcRenderer.once('downloadFileCompleted', (_event: Event, filePath: string, fileName: string) => { ipcRenderer.once('downloadFileCompleted', (_event: Event, filePath: string, fileName: string) => {
const downloadNotification = new Notification('Download Complete', { const downloadNotification = new Notification('Download Complete', {
body: shouldShowInFolder ? `Click to show ${fileName} in folder` : `Click to open ${fileName}`, body: `Click to show ${fileName} in folder`,
silent: true // We'll play our own sound - ding.ogg silent: true // We'll play our own sound - ding.ogg
}); });
@@ -52,13 +51,8 @@ export default function handleExternalLink(this: WebView, event: Electron.NewWin
} }
downloadNotification.addEventListener('click', () => { downloadNotification.addEventListener('click', () => {
if (shouldShowInFolder) { // Reveal file in download folder
// Reveal file in download folder shell.showItemInFolder(filePath);
shell.showItemInFolder(filePath);
} else {
// Open file in the default native app
shell.openItem(filePath);
}
}); });
ipcRenderer.removeAllListeners('downloadFileFailed'); ipcRenderer.removeAllListeners('downloadFileFailed');
}); });

View File

@@ -57,7 +57,6 @@ interface SettingsOptions {
flashTaskbarOnMessage?: boolean; flashTaskbarOnMessage?: boolean;
}; };
downloadsPath: string; downloadsPath: string;
showDownloadFolder: boolean;
quitOnClose: boolean; quitOnClose: boolean;
promptDownload: boolean; promptDownload: boolean;
flashTaskbarOnMessage?: boolean; flashTaskbarOnMessage?: boolean;
@@ -206,7 +205,6 @@ class ServerManagerView {
silent: false silent: false
}, },
downloadsPath: `${app.getPath('downloads')}`, downloadsPath: `${app.getPath('downloads')}`,
showDownloadFolder: false,
quitOnClose: false, quitOnClose: false,
promptDownload: false promptDownload: false
}; };

View File

@@ -100,10 +100,6 @@ export default class GeneralSection extends BaseSection {
<div class="setting-description">${t.__('Force social login in app instead of browser')}</div> <div class="setting-description">${t.__('Force social login in app instead of browser')}</div>
<div class="setting-control"></div> <div class="setting-control"></div>
</div> </div>
<div class="setting-row" id="show-download-folder">
<div class="setting-description">${t.__('Show downloaded files in file manager')}</div>
<div class="setting-control"></div>
</div>
<div class="setting-row" id="add-custom-css"> <div class="setting-row" id="add-custom-css">
<div class="setting-description"> <div class="setting-description">
${t.__('Add custom CSS')} ${t.__('Add custom CSS')}
@@ -164,7 +160,6 @@ export default class GeneralSection extends BaseSection {
this.showCustomCSSPath(); this.showCustomCSSPath();
this.removeCustomCSS(); this.removeCustomCSS();
this.downloadFolder(); this.downloadFolder();
this.showDownloadFolder();
this.updateQuitOnCloseOption(); this.updateQuitOnCloseOption();
this.updatePromptDownloadOption(); this.updatePromptDownloadOption();
this.enableErrorReporting(); this.enableErrorReporting();
@@ -473,18 +468,6 @@ export default class GeneralSection extends BaseSection {
}); });
} }
showDownloadFolder(): void {
this.generateSettingOption({
$element: document.querySelector('#show-download-folder .setting-control'),
value: ConfigUtil.getConfigItem('showDownloadFolder', false),
clickHandler: () => {
const newValue = !ConfigUtil.getConfigItem('showDownloadFolder');
ConfigUtil.setConfigItem('showDownloadFolder', newValue);
this.showDownloadFolder();
}
});
}
updatePromptDownloadOption(): void { updatePromptDownloadOption(): void {
this.generateSettingOption({ this.generateSettingOption({
$element: document.querySelector('#prompt-download .setting-control'), $element: document.querySelector('#prompt-download .setting-control'),