diff --git a/extension/options.js b/extension/options.js --- a/extension/options.js +++ b/extension/options.js @@ -47,9 +47,12 @@ return document.querySelectorAll("#extensions-selection input[type=checkbox][data-extension]"); } -function loadSettings() { +function loadSettings(cb) { storage.get(DEFAULT_EXTENSION_SETTINGS, function (items) { if (chrome.runtime.lastError) { + if (typeof cb === "function") { + cb(false); + } return; } @@ -69,6 +72,10 @@ // TODO restore additional stuff if we have it } + + if (typeof cb === "function") { + cb(true); + } }); } @@ -130,21 +137,21 @@ }); } - var mpris = document.querySelectorAll("[data-extension=mpris]")[0]; - var mprisEx = document.querySelectorAll("[data-extension=mprisMediaSessions]")[0]; - mpris.addEventListener("change", function() { - mprisEx.disabled = !mpris.checked; - }); - mprisEx.disabled = !mpris.checked; - // check whether the platform is supported before loading and activating settings chrome.runtime.getPlatformInfo(function (info) { if (!SUPPORTED_PLATFORMS.includes(info.os)) { document.body.classList.add("not-supported"); return; } - loadSettings(); + loadSettings(function () { + var mpris = document.querySelector("[data-extension=mpris]"); + var mprisEx = document.querySelector("[data-extension=mprisMediaSessions]"); + mpris.addEventListener("change", function() { + mprisEx.disabled = !mpris.checked; + }); + mprisEx.disabled = !mpris.checked; + }); // auto save when changing any setting // TODO can we do that on closing, or does it not matter how often we do chrome storage sync thing?