From b5367ed18ac96f54595fbe6c17fe8a4a897020aa Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Mon, 21 Aug 2023 22:45:48 +0100 Subject: [PATCH] js: load preferences from HTML elements It will be useful on KaiOS to be able to specify default user preferences that aren't the standard ones, in the same way that we specify some environment variables. As with environment variables, we can now do this be embedding a These are loaded before the preferences from localStorage, so they just set defaults and can be overridden by the user (but not on KaiOS yet, because we still don't have dialogue boxes there). --- emcclib.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/emcclib.js b/emcclib.js index 1a5e04c..7ad5501 100644 --- a/emcclib.js +++ b/emcclib.js @@ -821,9 +821,7 @@ mergeInto(LibraryManager.library, { * pass it back in as a string, via prefs_load_callback. */ js_load_prefs: function(me) { - try { - var prefsdata = - localStorage.getItem(location.pathname + " preferences"); + function load_prefs_from_string(prefsdata) { if (prefsdata !== undefined && prefsdata !== null) { var lenbytes = lengthBytesUTF8(prefsdata) + 1; var dest = _malloc(lenbytes); @@ -833,6 +831,15 @@ mergeInto(LibraryManager.library, { _free(dest); } } + } + // Load any default preferences embedded in HTML. + for (var prefsscript of + document.querySelectorAll("script.preferences")) + load_prefs_from_string(prefsscript.textContent); + // Load saved preferences if they exist. + try { + load_prefs_from_string( + localStorage.getItem(location.pathname + " preferences")); } catch (error) { // Log the error but otherwise pretend the settings were // absent.