const Store = require("electron-store"); const defaults = require("./defaults"); const migrations = { ">=1.14.0": (store) => { if ( typeof store.get("plugins.precise-volume.globalShortcuts") !== "object" ) { store.set("plugins.precise-volume.globalShortcuts", {}); } if (store.get("plugins.hide-video-player.enabled")) { store.delete("plugins.hide-video-player"); store.set("plugins.video-toggle.enabled", true); } }, ">=1.13.0": (store) => { if (store.get("plugins.discord.listenAlong") === undefined) { store.set("plugins.discord.listenAlong", true); } }, ">=1.12.0": (store) => { const options = store.get("plugins.shortcuts"); let updated = false; for (const optionType of ["global", "local"]) { if (Array.isArray(options[optionType])) { const updatedOptions = {}; for (const optionObject of options[optionType]) { if (optionObject.action && optionObject.shortcut) { updatedOptions[optionObject.action] = optionObject.shortcut; } } options[optionType] = updatedOptions; updated = true; } } if (updated) { store.set("plugins.shortcuts", options); } }, ">=1.11.0": (store) => { if (store.get("options.resumeOnStart") === undefined) { store.set("options.resumeOnStart", true); } }, ">=1.7.0": (store) => { const enabledPlugins = store.get("plugins"); if (!Array.isArray(enabledPlugins)) { console.warn("Plugins are not in array format, cannot migrate"); return; } // Include custom options const plugins = { adblocker: { enabled: true, cache: true, additionalBlockLists: [], }, downloader: { enabled: false, ffmpegArgs: [], // e.g. ["-b:a", "192k"] for an audio bitrate of 192kb/s downloadFolder: undefined, // Custom download folder (absolute path) }, }; enabledPlugins.forEach((enabledPlugin) => { plugins[enabledPlugin] = { ...plugins[enabledPlugin], enabled: true, }; }); store.set("plugins", plugins); }, }; module.exports = new Store({ defaults, clearInvalidConfig: false, migrations, });