update cookie handling, process saved state and defaults

This commit is contained in:
Stewart Allen 2020-11-20 09:46:10 -05:00
commit 758cee8d46
3 changed files with 23 additions and 20 deletions

13
app.js
View file

@ -62,14 +62,15 @@ function init(mod) {
mod.on.reload(() => level.close()); mod.on.reload(() => level.close());
mod.on.test((req) => { mod.on.test((req) => {
let vmatch = mod.meta.version || undefined;
let strict = (vmatch && mod.vmatch !== "*") ? true : false;
let cookie = cookieValue(req.headers.cookie, "version") || undefined; let cookie = cookieValue(req.headers.cookie, "version") || undefined;
if (strict) { let vmatch = mod.meta.version || "*";
return cookie === mod.meta.version; if (!Array.isArray(vmatch)) {
} else { vmatch = [ vmatch ];
return (!vmatch && !cookie) || (vmatch && cookie);
} }
if (vmatch.indexOf("*") >= 0) {
return true;
}
return vmatch.indexOf(cookie) >= 0;
}); });
mod.add(handleOptions); mod.add(handleOptions);

View file

@ -554,9 +554,10 @@
s = settings(), s = settings(),
def = "default", def = "default",
cp = s.process, cp = s.process,
pl = s.sproc[mode]; pl = s.sproc[mode],
lp = s.cproc[mode];
UC.prompt("Save Settings As", cp ? cp.processName || def : def).then(name => { UC.prompt("Save Settings As", cp ? lp || def : def).then(name => {
if (name) { if (name) {
let np = pl[name] = {}; let np = pl[name] = {};
cp.processName = name; cp.processName = name;
@ -564,7 +565,6 @@
if (!cp.hasOwnProperty(k)) continue; if (!cp.hasOwnProperty(k)) continue;
np[k] = cp[k]; np[k] = cp[k];
} }
s.cproc[mode] = name;
s.devproc[s.device.deviceName] = name; s.devproc[s.device.deviceName] = name;
API.conf.save(); API.conf.save();
API.conf.update(); API.conf.update();
@ -1140,7 +1140,7 @@
renm.setAttribute('class', 'rename'); renm.setAttribute('class', 'rename');
renm.setAttribute('title', 'rename file'); renm.setAttribute('title', 'rename file');
renm.appendChild(DOC.createTextNode('n')); renm.innerHTML = '<i class="far fa-edit"></i>';
renm.onclick = () => { renm.onclick = () => {
let newname = prompt(`rename file`, short); let newname = prompt(`rename file`, short);
if (newname && newname !== short) { if (newname && newname !== short) {
@ -1158,7 +1158,7 @@
del.setAttribute('del', name); del.setAttribute('del', name);
del.setAttribute('title', "remove '"+name+"'"); del.setAttribute('title', "remove '"+name+"'");
del.onclick = deleteCatalogFile; del.onclick = deleteCatalogFile;
del.appendChild(DOC.createTextNode('x')); del.innerHTML = '<i class="far fa-trash-alt"></i>';
size.setAttribute("disabled", true); size.setAttribute("disabled", true);
size.setAttribute("class", "label"); size.setAttribute("class", "label");

View file

@ -1497,8 +1497,8 @@
if (view.left || view.up) { if (view.left || view.up) {
settings.controller.view = view; settings.controller.view = view;
} }
const mode = settings.mode, name = settings.process.processName; const mode = settings.mode;
settings.sproc[mode][name] = settings.process; settings.sproc[mode].default = settings.process;
settings.device.bedRound = UI.deviceRound.checked; settings.device.bedRound = UI.deviceRound.checked;
settings.device.originCenter = UI.deviceOrigin.checked; settings.device.originCenter = UI.deviceOrigin.checked;
SDB.setItem('ws-settings', JSON.stringify(settings)); SDB.setItem('ws-settings', JSON.stringify(settings));
@ -1833,7 +1833,7 @@
function loadSettings(e, named) { function loadSettings(e, named) {
let mode = getMode(), let mode = getMode(),
name = e ? e.target.getAttribute("load") : named || settings.cproc[mode], name = e ? e.target.getAttribute("load") : named || "default",
load = settings.sproc[mode][name]; load = settings.sproc[mode][name];
if (!load) return; if (!load) return;
@ -1842,11 +1842,12 @@
settings.process = clone(load); settings.process = clone(load);
// update process name // update process name
settings.process.processName = name; settings.process.processName = name;
// set currenet process name for this mode
settings.cproc[mode] = name;
// save named process with the current device // save named process with the current device
settings.devproc[currentDeviceName()] = name; settings.devproc[currentDeviceName()] = name;
// preserve name of last library loaded
if (name !== 'default') {
settings.cproc[mode] = name;
}
// allow mode driver to take any necessary actions // allow mode driver to take any necessary actions
API.event.emit("settings.load", settings); API.event.emit("settings.load", settings);
@ -1871,7 +1872,7 @@
for (let k in sp) { for (let k in sp) {
if (sp.hasOwnProperty(k)) list.push(k); if (sp.hasOwnProperty(k)) list.push(k);
} }
list.sort().forEach(function(sk) { list.filter(n => n !=='default').sort().forEach(function(sk) {
let row = DOC.createElement('div'), let row = DOC.createElement('div'),
load = DOC.createElement('button'), load = DOC.createElement('button'),
edit = DOC.createElement('button'), edit = DOC.createElement('button'),
@ -1882,6 +1883,7 @@
load.onclick = (ev) => { load.onclick = (ev) => {
API.conf.load(undefined, sk); API.conf.load(undefined, sk);
updateSettingsList(); updateSettingsList();
hideModal();
} }
load.appendChild(DOC.createTextNode(sk)); load.appendChild(DOC.createTextNode(sk));
if (sk == settings.process.processName) { if (sk == settings.process.processName) {
@ -1890,12 +1892,12 @@
del.setAttribute('del', sk); del.setAttribute('del', sk);
del.setAttribute('title', "remove '"+sk+"'"); del.setAttribute('title', "remove '"+sk+"'");
del.innerHTML = '<i class="far fa-trash-alt"></i>';
del.onclick = deleteSettings; del.onclick = deleteSettings;
del.appendChild(DOC.createTextNode('x'));
edit.innerHTML = '&uarr;';
edit.setAttribute('name', sk); edit.setAttribute('name', sk);
edit.setAttribute('title', 'edit'); edit.setAttribute('title', 'edit');
edit.innerHTML = '<i class="far fa-edit"></i>';
edit.onclick = editSettings; edit.onclick = editSettings;
row.setAttribute("class", "flow-row"); row.setAttribute("class", "flow-row");