From 4ba85a380602eeedd2c98afc5fd33f08c36cde49 Mon Sep 17 00:00:00 2001 From: Kuldeep M Date: Mon, 1 Jul 2019 12:39:41 +0100 Subject: [PATCH] [refactor] improve update module --- src/js/update.js | 310 +++++++++++++---------------------------------- 1 file changed, 82 insertions(+), 228 deletions(-) diff --git a/src/js/update.js b/src/js/update.js index 391d1517..fe93cbe8 100644 --- a/src/js/update.js +++ b/src/js/update.js @@ -1,11 +1,25 @@ var update = (function() { - var _update_100 = function(data) { - data.version = 1.00; + // this associative array contains all the updates. add + // a new entry if you need to modify data. + // + // example, this assumes the previous version is less than + // 3.28.0, so 3.27.0 would be upgraded in this case. + // _update["3.28.0"] = function(data) { + // return data; + // }; + // + // always add the version in increasing order so the + // most recent version is last. + var _update = {}; + + _update["1.0.0"] = function(data) { + data.version = "1.0.0"; return data; }; - var _update_200 = function(data) { + _update["2.0.0"] = function(data) { + // major state overhaul data.state = { header: { date: { @@ -89,30 +103,28 @@ var update = (function() { active: false } }; + // version 1.0.0 bookmarks are not compatible so need to be reset data.bookmarks = []; - data.version = 2.00; return data; }; - var _update_210 = function(data) { + _update["2.1.0"] = function(data) { data.state.layout.theme = { current: data.state.layout.theme.current, random: false }; - data.version = 2.10; return data; }; - var _update_230 = function(data) { + _update["2.3.0"] = function(data) { data.state.layout.theme.random = { active: data.state.layout.theme.random, style: "any" }; - data.version = 2.30; return data; }; - var _update_240 = function(data) { + _update["2.4.0"] = function(data) { data.state.link.show = { active: true, name: true, @@ -132,17 +144,15 @@ var update = (function() { accentOpacity: 0 } }; - data.version = 2.40; return data; }; - var _update_250 = function(data) { + _update["2.5.0"] = function(data) { data.state.header.search.focus = false; - data.version = 2.50; return data; }; - var _update_270 = function(data) { + _update["2.7.0"] = function(data) { // update date character length data.state.header.date.character = { length: data.state.header.date.characterLength @@ -190,17 +200,15 @@ var update = (function() { delete data.state.menu.active; delete data.state.menu.open; // update version - data.version = 2.70; return data; }; - var _update_280 = function(data) { + _update["2.8.0"] = function(data) { data.state.layout.title = "New Tab"; - data.version = 2.80; return data; }; - var _update_290 = function(data) { + _update["2.9.0"] = function(data) { data.state.header.shade = { show: true, padding: 4, @@ -211,31 +219,42 @@ var update = (function() { bottom: false } }; - data.version = 2.90; return data; }; - var _update_2110 = function(data) { + _update["2.10.0"] = function(data) { + data.state.header.shade = { + show: true, + padding: 4, + style: "scroll", + opacity: 0.95, + border: { + top: false, + bottom: false + } + }; + return data; + }; + + _update["2.11.0"] = function(data) { data.state.header.greeting = { show: false, type: "good", name: "" }; - data.version = "2.11.0"; return data; }; - var _update_2110 = function(data) { + _update["2.11.0"] = function(data) { data.state.header.greeting = { show: false, type: "good", name: "" }; - data.version = "2.11.0"; return data; }; - var _update_2120 = function(data) { + _update["2.12.0"] = function(data) { data.state.bookmarks.link = { show: data.state.bookmarks.show.link }; @@ -255,17 +274,15 @@ var update = (function() { style: "dark" }; delete data.state.layout.theme; - data.version = "2.12.0"; return data; }; - var _update_2140 = function(data) { + _update["2.14.0"] = function(data) { data.state.layout.width = 72; - data.version = "2.14.0"; return data; }; - var _update_2160 = function(data) { + _update["2.16.0"] = function(data) { data.state.header.shade.padding = { top: data.state.header.shade.padding, bottom: data.state.header.shade.padding @@ -280,30 +297,26 @@ var update = (function() { width: 1 } }; - data.version = "2.16.0"; return data; }; - var _update_2170 = function(data) { + _update["2.17.0"] = function(data) { data.state.header.search.engine.google.name = "Google"; data.state.header.search.engine.duckduckgo.name = "Duck Duck Go"; data.state.header.search.engine.giphy.name = "Giphy"; - data.version = "2.17.0"; return data; }; - var _update_2190 = function(data) { + _update["2.19.0"] = function(data) { data.state.header.search.engine.youtube = { url: "https://www.youtube.com/results?search_query=", name: "YouTube" }; data.state.header.search.engine.custom.name = ""; - data.version = "2.19.0"; return data; }; - var _update_2200 = function(data) { - data.version = "2.20.0"; + _update["2.20.0"] = function(data) { data.state.header.search.width = { style: "auto", custom: 30 @@ -315,8 +328,7 @@ var update = (function() { return data; }; - var _update_2210 = function(data) { - data.version = "2.21.0"; + _update["2.21.0"] = function(data) { data.state.header.clock = { hours: { show: data.state.header.clock.show.hours, @@ -374,8 +386,7 @@ var update = (function() { return data; }; - var _update_2220 = function(data) { - data.version = "2.22.0"; + _update["2.22.0"] = function(data) { data.bookmarks.forEach(function(item, index) { item.accent = { override: false, @@ -389,8 +400,7 @@ var update = (function() { return data; }; - var _update_300 = function(data) { - data.version = "3.0.0"; + _update["3.0.0"] = function(data) { data.bookmarks.forEach(function(item, index) { item.display = "letter"; item.icon = { @@ -402,8 +412,7 @@ var update = (function() { return data; }; - var _update_310 = function(data) { - data.version = "3.1.0"; + _update["3.1.0"] = function(data) { data.state.header.area = { width: 90, alignment: { @@ -443,8 +452,7 @@ var update = (function() { return data; }; - var _update_320 = function(data) { - data.version = "3.2.0"; + _update["3.2.0"] = function(data) { data.state.link.display = { show: true, alignment: { @@ -461,8 +469,7 @@ var update = (function() { return data; }; - var _update_340 = function(data) { - data.version = "3.4.0"; + _update["3.4.0"] = function(data) { data.state.header.padding = data.state.header.shade.padding; delete data.state.header.shade.padding; data.state.header.border = data.state.header.shade.border; @@ -470,8 +477,7 @@ var update = (function() { return data; }; - var _update_360 = function(data) { - data.version = "3.6.0"; + _update["3.6.0"] = function(data) { data.state.header.item = data.state.header.items; delete data.state.header.items; data.state.link.area.gap = 2; @@ -489,16 +495,14 @@ var update = (function() { return data; }; - var _update_370 = function(data) { - data.version = "3.7.0"; + _update["3.7.0"] = function(data) { data.state.link.item.line = { show: true }; return data; }; - var _update_380 = function(data) { - data.version = "3.8.0"; + _update["3.8.0"] = function(data) { data.state.header.clock.size = 1; data.state.header.date.size = 1; data.state.header.greeting.size = 1; @@ -520,8 +524,7 @@ var update = (function() { return data; }; - var _update_390 = function(data) { - data.version = "3.9.0"; + _update["3.9.0"] = function(data) { delete data.state.header.padding; data.state.header.radius = false; data.state.header.border = { @@ -535,57 +538,40 @@ var update = (function() { return data; }; - var _update_3100 = function(data) { - data.version = "3.10.0"; + _update["3.10.0"] = function(data) { data.state.header.button.style = "box"; return data; }; - var _update_3110 = function(data) { - data.version = "3.11.0"; + _update["3.11.0"] = function(data) { data.state.link.item.line = data.state.link.item.line.show; data.state.link.item.hoverScale = true; return data; }; - var _update_3150 = function(data) { - data.version = "3.15.0"; + _update["3.15.0"] = function(data) { delete data.state.link.sort; return data; }; - var _update_3180 = function(data) { - data.version = "3.18.0"; + _update["3.18.0"] = function(data) { data.nighttab = true; return data; }; - var _update_3200 = function(data) { - data.version = "3.20.0"; + _update["3.20.0"] = function(data) { data.state.link.item.url = data.state.link.item.url.show; return data; }; - var _update_3210 = function(data) { - data.version = "3.21.0"; + _update["3.21.0"] = function(data) { data.state.layout.order = "headerLink"; return data; }; - // This associative array contains all the updates. Add - // a new entry if you need to modify data. - // - // Example, this assumes the previous version is less than - // 3.28.0, so 3.27.0 would be upgraded in this case. - // versionUpdates["3.28.0"] = function(data) { - // return data; - // }; - // - // Always add the version in increasing order so the - // most recent version is last. - var versionUpdates = {}; - - versionUpdates["3.27.0"] = function(data) { + _update["3.27.0"] = function(data) { + // swicth to single values for alignment controls + // no more horizontal or vertical keys in state object data.state.header.area.alignment = data.state.header.area.alignment.horizontal; data.state.header.item.alignment = data.state.header.item.alignment.horizontal; data.state.header.search.text.alignment = data.state.header.search.text.align; @@ -596,8 +582,8 @@ var update = (function() { return data; }; - // Add Bing as a option for the search engines. - versionUpdates["3.28.0"] = function(data) { + _update["3.28.0"] = function(data) { + // add bing search engine data.state.header.search.engine.bing = { url: "https://www.bing.com/search?q=", name: "Bing" @@ -607,158 +593,26 @@ var update = (function() { function run(data) { if (!("version" in data)) { - console.log("\t= running update", "1.0.0"); - data = _update_100(data); + // legacy update as first version of nightTab did not have a version number stored in the state + data = _update["1.0.0"](data); }; if (typeof data.version == "number") { - if (data.version < 2.0) { - console.log("\t= running update 2.0.0"); - data = _update_200(data); - }; - if (data.version < 2.1) { - console.log("\t= running update 2.1.0"); - data = _update_210(data); - }; - if (data.version < 2.3) { - console.log("\t= running update 2.3.0"); - data = _update_230(data); - }; - if (data.version < 2.4) { - console.log("\t= running update 2.4.0"); - data = _update_240(data); - }; - if (data.version < 2.5) { - console.log("\t= running update 2.5.0"); - data = _update_250(data); - }; - if (data.version < 2.7) { - console.log("\t= running update 2.7.0"); - data = _update_270(data); - }; - if (data.version < 2.8) { - console.log("\t= running update 2.8.0"); - data = _update_280(data); - }; - if (data.version < 2.9) { - console.log("\t= running update 2.9.0"); - data = _update_290(data); - }; - if (data.version < 2.91) { - console.log("\t= running update 2.9.1"); - data.version = 2.91; - }; - if (data.version < 2.96) { - // introduction of a new semantic version check function so the version is being bumped to 2.10.0 and changed to a string - console.log("\t= running update 2.10.0"); - data.version = "2.10.0"; - }; + // old version numbers were type of number + // change them to strings to support new version checking + data.version = data.version.toString().split(".") + data.version.push("0"); + data.version = data.version.join("."); }; - if (typeof data.version == "string") { - if (version.compare(data.version, "2.11.0") == -1) { - console.log("\t= running update 2.11.0"); - data = _update_2110(data); - }; - if (version.compare(data.version, "2.12.0") == -1) { - console.log("\t= running update 2.12.0"); - data = _update_2120(data); - }; - if (version.compare(data.version, "2.14.0") == -1) { - console.log("\t= running update 2.14.0"); - data = _update_2140(data); - }; - if (version.compare(data.version, "2.16.0") == -1) { - console.log("\t= running update 2.16.0"); - data = _update_2160(data); - }; - if (version.compare(data.version, "2.17.0") == -1) { - console.log("\t= running update 2.17.0"); - data = _update_2170(data); - }; - if (version.compare(data.version, "2.19.0") == -1) { - console.log("\t= running update 2.19.0"); - data = _update_2190(data); - }; - if (version.compare(data.version, "2.20.0") == -1) { - console.log("\t= running update 2.20.0"); - data = _update_2200(data); - }; - if (version.compare(data.version, "2.21.0") == -1) { - console.log("\t= running update 2.21.0"); - data = _update_2210(data); - }; - if (version.compare(data.version, "2.22.0") == -1) { - console.log("\t= running update 2.22.0"); - data = _update_2220(data); - }; - if (version.compare(data.version, "3.0.0") == -1) { - console.log("\t= running update 3.0.0"); - data = _update_300(data); - }; - if (version.compare(data.version, "3.1.0") == -1) { - console.log("\t= running update 3.1.0"); - data = _update_310(data); - }; - if (version.compare(data.version, "3.2.0") == -1) { - console.log("\t= running update 3.2.0"); - data = _update_320(data); - }; - if (version.compare(data.version, "3.4.0") == -1) { - console.log("\t= running update 3.4.0"); - data = _update_340(data); - }; - if (version.compare(data.version, "3.6.0") == -1) { - console.log("\t= running update 3.6.0"); - data = _update_360(data); - }; - if (version.compare(data.version, "3.7.0") == -1) { - console.log("\t= running update 3.7.0"); - data = _update_370(data); - }; - if (version.compare(data.version, "3.8.0") == -1) { - console.log("\t= running update 3.8.0"); - data = _update_380(data); - }; - if (version.compare(data.version, "3.9.0") == -1) { - console.log("\t= running update 3.9.0"); - data = _update_390(data); - }; - if (version.compare(data.version, "3.10.0") == -1) { - console.log("\t= running update 3.10.0"); - data = _update_3100(data); - }; - if (version.compare(data.version, "3.11.0") == -1) { - console.log("\t= running update 3.11.0"); - data = _update_3110(data); - }; - if (version.compare(data.version, "3.15.0") == -1) { - console.log("\t= running update 3.15.0"); - data = _update_3150(data); - }; - if (version.compare(data.version, "3.18.0") == -1) { - console.log("\t= running update 3.18.0"); - data = _update_3180(data); - }; - if (version.compare(data.version, "3.20.0") == -1) { - console.log("\t= running update 3.20.0"); - data = _update_3200(data); - }; - if (version.compare(data.version, "3.21.0") == -1) { - console.log("\t= running update 3.21.0"); - data = _update_3210(data); - }; - // Shift to a associate array for the configuration update as - // there less code to maintain. - for (var key in versionUpdates) { - if (version.compare(data.version, key) == -1) { - console.log("\t= running update", key); - data = versionUpdates[key](data); - data.version = key; - }; + + for (var key in _update) { + if (version.compare(data.version, key) == -1) { + console.log("\t= running update", key); + data = _update[key](data); + data.version = key; }; }; - // if no update is needed - // version bump + // if no update is needed version bump if (version.compare(data.version, version.get()) == -1) { console.log("\t= nothing to update, version bump to", version.get()); data.version = version.get();