diff --git a/plugins/downloader/menu.js b/plugins/downloader/menu.js index a1ae503a..c9c21313 100644 --- a/plugins/downloader/menu.js +++ b/plugins/downloader/menu.js @@ -8,7 +8,7 @@ const chokidar = require('chokidar'); const { setOptions } = require("../../config/plugins"); const { sendError } = require("./back"); -const { defaultMenuDownloadLabel, getFolder, presets } = require("./utils"); +const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils"); let downloadLabel = defaultMenuDownloadLabel; let playingPlaylistId = undefined; @@ -70,19 +70,21 @@ module.exports = (win, options) => { ); } - const steps = 1 / playlist.items.length; - let progress = 0; - win.setProgressBar(2); // starts with indefinite bar + let downloadCount = 0; + setBadge(playlist.items.length); + let dirWatcher = chokidar.watch(playlistFolder); dirWatcher.on('add', () => { - progress += steps; - if (progress >= 0.9999) { + downloadCount += 1; + if (downloadCount >= playlist.items.length) { win.setProgressBar(-1); // close progress bar + setBadge(0); // close badge counter dirWatcher.close().then(() => dirWatcher = null); } else { - win.setProgressBar(progress); + win.setProgressBar(downloadCount / playlist.items.length); + setBadge(playlist.items.length - downloadCount); } }); diff --git a/plugins/downloader/utils.js b/plugins/downloader/utils.js index 9e17c04d..a716c891 100644 --- a/plugins/downloader/utils.js +++ b/plugins/downloader/utils.js @@ -1,4 +1,5 @@ const electron = require("electron"); +const is = require('electron-is'); module.exports.getFolder = customFolder => customFolder || electron.app.getPath("downloads"); module.exports.defaultMenuDownloadLabel = "Download playlist"; @@ -37,3 +38,9 @@ module.exports.presets = { ffmpegArgs: ["-acodec", "libopus"], }, }; + +module.exports.setBadge = num => { + if (is.linux() || is.macOS()) { + electron.app.badgeCount = num; + } +}