diff --git a/src/lib/saver-list.js b/src/lib/saver-list.js index 75f7d799..8557982f 100644 --- a/src/lib/saver-list.js +++ b/src/lib/saver-list.js @@ -262,6 +262,10 @@ module.exports = class SaverListManager { contents.published = true; } + if ( typeof(contents.requirements) === "undefined" ) { + contents.requirements = ["screen"]; + } + contents.valid = typeof(contents.name) !== "undefined" && typeof(contents.description) !== "undefined" && contents.published === true; diff --git a/src/main/index.js b/src/main/index.js index 102e9503..952e255d 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -635,7 +635,7 @@ var runScreenSaverOnDisplay = function(saver, s) { // otherwise just boot it // const reqs = saver.requirements; - if ( reqs.findIndex((x) => { return x === "screen"; }) > -1 ) { + if ( reqs !== undefined && reqs.findIndex((x) => { return x === "screen"; }) > -1 ) { return grabScreen(s).then((message) => { runSaver(message.url, saver, s, url_opts, tickCount); }); diff --git a/test/lib/saver-list.js b/test/lib/saver-list.js index 80141668..0809e698 100644 --- a/test/lib/saver-list.js +++ b/test/lib/saver-list.js @@ -111,6 +111,14 @@ describe("SaverListManager", function() { done(); }); }); + + it("adds requirements if missing", (done) => { + var f = path.join(__dirname, "../fixtures/no-requirements.json"); + savers.loadFromFile(f, false, {}).then((s) => { + assert.deepEqual(["screen"], s.requirements); + done(); + }); + }); }); describe("list", function() {