Feat: Implement notification feature for download completion

This commit is contained in:
MasterAcnolo
2026-04-13 20:39:23 +02:00
parent 83ac76381a
commit 40bea35286
5 changed files with 14 additions and 7 deletions

View File

@@ -18,7 +18,8 @@ const FEATURE_WHITELIST = new Set([
"autoDownloadPlaylist", "autoDownloadPlaylist",
"customCodec", "customCodec",
"theme", "theme",
"createPlaylistFolders" "createPlaylistFolders",
"notifySystem"
]); ]);
const configFolderPath = featuresPath; const configFolderPath = featuresPath;

View File

@@ -97,13 +97,13 @@
</div> </div>
</div> </div>
<!-- <div class="setting-item"> <div class="setting-item">
<input type="checkbox" data-key="notifySystem" id="notifySystem"> <input type="checkbox" data-key="notifySystem" id="notifySystem">
<div class="setting-info"> <div class="setting-info">
<span class="setting-title">Notification at the end</span> <span class="setting-title">Notification at the end</span>
<small>Notify when a download finishes.</small> <small>Notify when a download finishes.</small>
</div> </div>
</div> --> </div>
<div class="setting-item"> <div class="setting-item">
<input type="checkbox" data-key="autoCheckInfo" id="autoCheckInfo"> <input type="checkbox" data-key="autoCheckInfo" id="autoCheckInfo">

View File

@@ -44,8 +44,11 @@ form.addEventListener("submit", async (e) => {
return; return;
} }
// Download successful // Download successful - check if notifications are enabled
const features = await window.electronAPI.getFeatures();
if (features.notifySystem) {
window.showSuccess("Download completed!"); window.showSuccess("Download completed!");
}
} catch (err) { } catch (err) {
if (!isDownloading && !userStoppedDownload) { if (!isDownloading && !userStoppedDownload) {

View File

@@ -2,6 +2,7 @@ const { fetchDownload, cancelDownload } = require("../services/download.services
const { logger } = require("../logger"); const { logger } = require("../logger");
const { isValidUrl, isSafePath } = require("../helpers/validation.helpers"); const { isValidUrl, isSafePath } = require("../helpers/validation.helpers");
const { notifyDownloadFinished } = require("../helpers/notify.helpers"); const { notifyDownloadFinished } = require("../helpers/notify.helpers");
const { configFeatures } = require("../../config");
const listeners = []; const listeners = [];
const speedListeners = []; const speedListeners = [];
@@ -26,7 +27,7 @@ async function downloadController(req, res) {
// Get output folder when the download is finished // Get output folder when the download is finished
const outputFolder = await fetchDownload(options, listeners, speedListeners, stageListeners, playlistInfoListeners); const outputFolder = await fetchDownload(options, listeners, speedListeners, stageListeners, playlistInfoListeners);
notifyDownloadFinished(outputFolder); notifyDownloadFinished(outputFolder, configFeatures.notifySystem);
res.send("Download Done !"); res.send("Download Done !");
} catch (err) { } catch (err) {

View File

@@ -1,7 +1,9 @@
const { Notification, shell } = require("electron"); const { Notification, shell } = require("electron");
const { iconPaths } = require("./path.helpers"); const { iconPaths } = require("./path.helpers");
function notifyDownloadFinished(folder) { function notifyDownloadFinished(folder, notifyEnabled = true) {
if (!notifyEnabled) return;
const notif = new Notification({ const notif = new Notification({
title: "Freedom Loader", title: "Freedom Loader",
body: "Your download is complete, click here to open it.", body: "Your download is complete, click here to open it.",