1.0.1 • Published 3 years ago

electron-dialog-external v1.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

electron-dialog-external

Directly use the core functions from Electron's dialog module.
This is really useful for small Node.js applications and scripts.

npm install electron-dialog-external
const dialog = require('electron-dialog-external');

(async function() {
    await dialog.showOpenDialog(options);
    await dialog.showSaveDialog(options);
    await dialog.showMessageBox(options);
})();

dialog.showOpenDialogSync(options);
dialog.showSaveDialogSync(options);
dialog.showMessageBoxSync(options);
dialog.showErrorBox(title, content)

Please refer to the official Electron docs for concrete usage instructions. Everything behaves exactly the same <3.

This package is built on Electron v11.2.0.

What is not supported?

Performance Tip

If you have the choice, prefer the Promise functions over the Sync functions, because all sync functions have a delay of about 1 second before the function returns.In contrast, the Promise functions resolve immediately.

I suspect the delay has something to do with the deconstruction of the Electron process, which apperently takes longer if we called a dialog Sync function. Oddly enough, Electron's dialog.*Sync() function alone does not have any delay. And it is not the fault of child_process.spawnSync() either, because child_process.spawn() has the same delay if it runs an Electron process with a dialog.*Sync() call. The delay really has to come from the Electron "Main process" itself, which exits with delay if a dialog.*Sync function was used. Probably, it has something to do with the Event Loop xD.

Examples?

See src/_test.ts. It calls each function with example parameters. You could use that as a starting point ;)

A note on errors

Theoretically the dialog functions should, just like the official functions, never throw an exception (sync functions) or reject (async functions / promises). If it happens, then this is a bug. Please report on the Issues page.

Cue

If you know an easier way to achieve external usage of the dialog module than using child processes, please tell me (Issues page).