124 lines
3.1 KiB
TypeScript
124 lines
3.1 KiB
TypeScript
|
import {BrowserWindow, DownloadItem} from 'electron';
|
||
|
|
||
|
declare namespace electronDl {
|
||
|
interface Options {
|
||
|
/**
|
||
|
Show a `Save As…` dialog instead of downloading immediately.
|
||
|
|
||
|
Note: Only use this option when strictly necessary. Downloading directly without a prompt is a much better user experience.
|
||
|
|
||
|
@default false
|
||
|
*/
|
||
|
readonly saveAs?: boolean;
|
||
|
|
||
|
/**
|
||
|
Directory to save the file in.
|
||
|
|
||
|
Default: [User's downloads directory](https://electronjs.org/docs/api/app/#appgetpathname)
|
||
|
*/
|
||
|
readonly directory?: string;
|
||
|
|
||
|
/**
|
||
|
Name of the saved file.
|
||
|
This option only makes sense for `electronDl.download()`.
|
||
|
|
||
|
Default: [`downloadItem.getFilename()`](https://electronjs.org/docs/api/download-item/#downloaditemgetfilename)
|
||
|
*/
|
||
|
readonly filename?: string;
|
||
|
|
||
|
/**
|
||
|
Title of the error dialog. Can be customized for localization.
|
||
|
|
||
|
@default 'Download Error'
|
||
|
*/
|
||
|
readonly errorTitle?: string;
|
||
|
|
||
|
/**
|
||
|
Message of the error dialog. `{filename}` is replaced with the name of the actual file. Can be customized for localization.
|
||
|
|
||
|
@default 'The download of {filename} was interrupted'
|
||
|
*/
|
||
|
readonly errorMessage?: string;
|
||
|
|
||
|
/**
|
||
|
Optional callback that receives the [download item](https://electronjs.org/docs/api/download-item).
|
||
|
You can use this for advanced handling such as canceling the item like `item.cancel()`.
|
||
|
*/
|
||
|
readonly onStarted?: (item: DownloadItem) => void;
|
||
|
|
||
|
/**
|
||
|
Optional callback that receives a number between `0` and `1` representing the progress of the current download.
|
||
|
*/
|
||
|
readonly onProgress?: (percent: number) => void;
|
||
|
|
||
|
/**
|
||
|
Optional callback that receives the [download item](https://electronjs.org/docs/api/download-item) for which the download has been cancelled.
|
||
|
*/
|
||
|
readonly onCancel?: (item: DownloadItem) => void;
|
||
|
|
||
|
/**
|
||
|
Reveal the downloaded file in the system file manager, and if possible, select the file.
|
||
|
|
||
|
@default false
|
||
|
*/
|
||
|
readonly openFolderWhenDone?: boolean;
|
||
|
|
||
|
/**
|
||
|
Shows the file count badge on macOS/Linux dock icons when download is in progress.
|
||
|
|
||
|
@default true
|
||
|
*/
|
||
|
readonly showBadge?: boolean;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
declare const electronDl: {
|
||
|
/**
|
||
|
Register the helper for all windows.
|
||
|
|
||
|
@example
|
||
|
```
|
||
|
import {app, BrowserWindow} from 'electron';
|
||
|
import electronDl = require('electron-dl');
|
||
|
|
||
|
electronDl();
|
||
|
|
||
|
let win;
|
||
|
(async () => {
|
||
|
await app.whenReady();
|
||
|
win = new BrowserWindow();
|
||
|
})();
|
||
|
```
|
||
|
*/
|
||
|
(options?: electronDl.Options): void;
|
||
|
|
||
|
/**
|
||
|
This can be useful if you need download functionality in a reusable module.
|
||
|
|
||
|
@param window - Window to register the behavior on.
|
||
|
@param url - URL to download.
|
||
|
@returns A promise for the downloaded file.
|
||
|
|
||
|
@example
|
||
|
```
|
||
|
import {BrowserWindow, ipcMain} from 'electron';
|
||
|
import electronDl = require('electron-dl');
|
||
|
|
||
|
ipcMain.on('download-button', async (event, {url}) => {
|
||
|
const win = BrowserWindow.getFocusedWindow();
|
||
|
console.log(await electronDl.download(win, url));
|
||
|
});
|
||
|
```
|
||
|
*/
|
||
|
download(
|
||
|
window: BrowserWindow,
|
||
|
url: string,
|
||
|
options?: electronDl.Options
|
||
|
): Promise<DownloadItem>;
|
||
|
|
||
|
// TODO: Remove this for the next major release
|
||
|
default: typeof electronDl;
|
||
|
};
|
||
|
|
||
|
export = electronDl;
|