Skip to content

Commit

Permalink
Convert to generalized providers obj
Browse files Browse the repository at this point in the history
  • Loading branch information
MisterPhilip committed Jul 20, 2018
1 parent b3481b5 commit 8d1cf0e
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 37 deletions.
4 changes: 2 additions & 2 deletions src/devtools/panel.js
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ window.Omnibug = (() => {
});

// Check if the user has the provider enabled or not
if(settings.enabledProviders.indexOf(providerKey) === -1) {
if(!settings.providers[providerKey].enabled) {
input.setAttribute("disabled", "disabled");
label.classList.add("disabled");
label.setAttribute("title", "This provider is currently disabled and requests for this provider will never be shown. You can re-enable it within the settings");
Expand Down Expand Up @@ -785,7 +785,7 @@ window.Omnibug = (() => {

// Figure out what providers are hidden
let hiddenProviders = Object.entries(filters.providers).filter((provider) => {
return !provider[1] && (settings.enabledProviders.indexOf(provider[0]) > -1);
return !provider[1] && (settings.providers[provider[0]].enabled);
}).map((provider) => {
return `.request[data-provider="${provider[0]}"]`;
});
Expand Down
2 changes: 1 addition & 1 deletion src/eventPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@
*/
function setCachedSettings(settings) {
cached.settings = settings;
cached.pattern = OmnibugProvider.getPattern(cached.settings.disabledProviders);
cached.pattern = OmnibugProvider.getPattern(cached.settings.providers);
return settings;
}

Expand Down
26 changes: 16 additions & 10 deletions src/libs/OmnibugSettings.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,17 @@ class OmnibugSettings
*/
get defaults()
{
let providers = {};
Object.keys(OmnibugProvider.getProviders()).forEach((provider) => {
providers[provider] = {"enabled": true};
});

return {
// pattern to match in request url
defaultPattern : OmnibugProvider.getPattern().source,

// all providers (initially)
disabledProviders : [],
providers : providers,

// keys to highlight
highlightKeys : ["pageName", "ch", "events", "products"],
Expand Down Expand Up @@ -137,19 +142,20 @@ class OmnibugSettings
migrate()
{
return this.load().then((settings) => {
if(settings.enabledProviders) {
if(settings.enabledProviders && typeof settings.providers === "undefined") {
let allProviders = Object.keys(OmnibugProvider.getProviders()),
disabledProviders = [];
providers = {};
allProviders.forEach((provider) => {
if(settings.enabledProviders.indexOf(provider.key) === -1) {
disabledProviders.push(provider.key);
}
console.log("settings migration", provider, settings.enabledProviders.includes(provider));
providers[provider] = {
"enabled": settings.enabledProviders.includes(provider)
};
});
delete settings.enabledProviders;
settings.disabledProviders = disabledProviders;
this.save(settings);
// We'll remove this later, in case anything goes wrong in the migration phase:
/* delete settings.enabledProviders; */
settings.providers = providers;
}
return settings;
return this.save(settings);
});
}
}
2 changes: 1 addition & 1 deletion src/options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ <h1>Omnibug Options</h1>
<div id="providers-list">
<script type="text/html" id="providers-template">
<label style="display:block;" data-provider="##PROVIDER##">
<input type="checkbox" data-bind-property="disabledProviders" id="provider-##VALUE##" value="##VALUE##" />
<input type="checkbox" data-bind-property="providers-enabled" id="provider-##VALUE##" value="##VALUE##" />
##PROVIDER##
</label>
</script>
Expand Down
38 changes: 24 additions & 14 deletions src/options/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
* @param value New Value
*/
set: (target, prop, value) => {
console.log(`setting ${prop} to ${value}`);
console.log(`setting ${prop}`, value);
target[prop] = value;
if(prop === "highlightKeys")
{
Expand All @@ -36,6 +36,16 @@
paramList.appendChild(createHighlightParam(param));
});
}
else if(prop === "providers")
{
let inputs = document.querySelectorAll(`input[data-bind-property="providers-enabled"]`);
inputs.forEach((input) => {
input.checked = (target["providers"][input.value].enabled);
});
}
else if(prop === "providers-enabled") {
return;
}
else
{
let inputs = document.querySelectorAll(`input[data-bind-property="${prop}"]`);
Expand Down Expand Up @@ -129,21 +139,19 @@
value = input.value;

// Validate the input attributes
if(!settings.hasOwnProperty(field) || !type) { return; }
if((field !== "providers-enabled" && !settings.hasOwnProperty(field)) || !type) { return; }

// Do some value manipulation as needed
if(field === "disabledProviders") {
let index = settings[field].indexOf(value),
valArray = settings[field].slice();
console.log(value, input.checked, index);
if(!input.checked && index >= 0) {
valArray.splice(index, 1);
track(["send", "event", "settings", "enabledProviders", `removed: ${value}`]);
} else if(input.checked && index === -1) {
valArray.push(value);
track(["send", "event", "settings", "enabledProviders", `added: ${value}`]);
if(field === "providers-enabled") {
if(!input.checked && settings["providers"][value].enabled) {
settings["providers"][value].enabled = false;
track(["send", "event", "settings", "providers", `removed: ${value}`]);
} else if(input.checked && !settings["providers"][value].enabled) {
settings["providers"][value].enabled = true;
track(["send", "event", "settings", "providers", `added: ${value}`]);
}
value = valArray;
field = "providers";
value = settings["providers"];
} else if(type === "checkbox") {
value = input.checked;
} else if(type === "color") {
Expand All @@ -152,11 +160,13 @@
}
}

console.log("updating " + field);

// Update the object (and thus update any other elements attached to the field) & save the settings
settings[field] = value;
settingsProvider.save(settingsObj);

if(field !== "disabledProviders" && field !== "highlightKeys") {
if(field !== "providers" && field !== "highlightKeys") {
track(["send", "event", "settings", field, String(value)], (field === "allowTracking"));
}
});
Expand Down
14 changes: 5 additions & 9 deletions src/providers/OmnibugProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,19 +85,15 @@ var OmnibugProvider = (function() {
/**
* Return the patterns for all (enabled) providers
*
* @param {void|[]} disabledProviders Providers that are disabled
* @param {void|{}} providerInfo Providers that are disabled
*
* @returns {RegExp}
*/
"getPattern": (disabledProviders) => {
if(!disabledProviders.length) {
return this.defaultPattern;
}

"getPattern": (providerInfo = {}) => {
let patterns = [];
Object.keys(this.providers).forEach((provider) => {
if(!disabledProviders.includes(provider)) {
patterns.push(this.providers[provider].pattern.source);
Object.keys(providers).forEach((provider) => {
if(typeof providerInfo[provider] === "undefined" || providerInfo[provider].enabled) {
patterns.push(providers[provider].pattern.source);
}
});
return new RegExp(patterns.join("|"));
Expand Down

0 comments on commit 8d1cf0e

Please sign in to comment.