1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-15 20:35:23 +03:00

Migrate chrome storage API to window.localStorage

Add remove function

Remove callback from set and remove

Rebased

Rebased
This commit is contained in:
Mark Haslinghuis 2021-10-18 01:45:30 +02:00
parent c86348b4db
commit f41e135333
17 changed files with 597 additions and 636 deletions

View file

@ -4,7 +4,7 @@
// localStorage deals with strings, not objects, so the objects have been serialized. // localStorage deals with strings, not objects, so the objects have been serialized.
const ConfigStorage = { const ConfigStorage = {
// key can be one string, or array of strings // key can be one string, or array of strings
get: function(key, callback) { get: function(key) {
let result = {}; let result = {};
if (Array.isArray(key)) { if (Array.isArray(key)) {
key.forEach(function (element) { key.forEach(function (element) {
@ -14,7 +14,6 @@ const ConfigStorage = {
// is okay // is okay
} }
}); });
callback?.(result);
} else { } else {
const keyValue = window.localStorage.getItem(key); const keyValue = window.localStorage.getItem(key);
if (keyValue) { if (keyValue) {
@ -23,9 +22,6 @@ const ConfigStorage = {
} catch (e) { } catch (e) {
// It's fine if we fail that parse // It's fine if we fail that parse
} }
callback?.(result);
} else {
callback?.(result);
} }
} }
@ -39,4 +35,7 @@ const ConfigStorage = {
window.localStorage.setItem(element, JSON.stringify(tmpObj)); window.localStorage.setItem(element, JSON.stringify(tmpObj));
}); });
}, },
remove: function(item) {
window.localStorage.removeItem(item);
},
}; };

View file

@ -44,19 +44,18 @@ let FirmwareCache = (function () {
function persist(data) { function persist(data) {
let obj = {}; let obj = {};
obj[CACHEKEY] = data; obj[CACHEKEY] = data;
chrome.storage.local.set(obj); ConfigStorage.set(obj);
} }
/** /**
* @param {Function} callback * @param {Function} callback
*/ */
function load(callback) { function load(callback) {
chrome.storage.local.get(CACHEKEY, obj => { const obj = ConfigStorage.get(CACHEKEY);
let entries = typeof obj === "object" && obj.hasOwnProperty(CACHEKEY) let entries = typeof obj === "object" && obj.hasOwnProperty(CACHEKEY)
? obj[CACHEKEY] ? obj[CACHEKEY]
: []; : [];
callback(entries); callback(entries);
});
} }
return { return {
@ -76,18 +75,14 @@ let FirmwareCache = (function () {
} }
let key = oldest[0]; let key = oldest[0];
let cacheKey = withCachePrefix(key); let cacheKey = withCachePrefix(key);
chrome.storage.local.get(cacheKey, obj => { const obj = ConfigStorage.get(cacheKey);
/** @type {CacheItem} */ /** @type {CacheItem} */
let cached = typeof obj === "object" && obj.hasOwnProperty(cacheKey) const cached = typeof obj === "object" && obj.hasOwnProperty(cacheKey) ? obj[cacheKey] : null;
? obj[cacheKey]
: null;
if (cached === null) { if (cached === null) {
return; return undefined;
} }
chrome.storage.local.remove(cacheKey, () => { ConfigStorage.remove(cacheKey);
onRemoveFromCache(cached.release); onRemoveFromCache(cached.release);
});
});
return oldest; return oldest;
}; };
@ -143,9 +138,8 @@ let FirmwareCache = (function () {
release: release, release: release,
hexdata: hexdata, hexdata: hexdata,
}; };
chrome.storage.local.set(obj, () => { ConfigStorage.set(obj);
onPutToCache(release); onPutToCache(release);
});
} }
/** /**
@ -163,13 +157,9 @@ let FirmwareCache = (function () {
return; return;
} }
let cacheKey = withCachePrefix(key); let cacheKey = withCachePrefix(key);
chrome.storage.local.get(cacheKey, obj => { const obj = ConfigStorage.get(cacheKey);
/** @type {CacheItem} */ const cached = typeof obj === "object" && obj.hasOwnProperty(cacheKey) ? obj[cacheKey] : null;
let cached = typeof obj === "object" && obj.hasOwnProperty(cacheKey)
? obj[cacheKey]
: null;
callback(cached); callback(cached);
});
} }
/** /**
@ -184,10 +174,11 @@ let FirmwareCache = (function () {
for (let key of journal.keys()) { for (let key of journal.keys()) {
cacheKeys.push(withCachePrefix(key)); cacheKeys.push(withCachePrefix(key));
} }
chrome.storage.local.get(cacheKeys, obj => { const obj = ConfigStorage.get(cacheKeys);
if (typeof obj !== "object") { if (typeof obj !== "object") {
return; return;
} }
console.log(obj.entries());
for (let cacheKey of cacheKeys) { for (let cacheKey of cacheKeys) {
if (obj.hasOwnProperty(cacheKey)) { if (obj.hasOwnProperty(cacheKey)) {
/** @type {CacheItem} */ /** @type {CacheItem} */
@ -195,8 +186,7 @@ let FirmwareCache = (function () {
onRemoveFromCache(item.release); onRemoveFromCache(item.release);
} }
} }
chrome.storage.local.remove(cacheKeys); ConfigStorage.remove(cacheKeys);
});
journal.clear(); journal.clear();
JournalStorage.persist(journal.toJSON()); JournalStorage.persist(journal.toJSON());
} }

View file

@ -22,7 +22,7 @@ const cordovaUI = {
if (screenWidth > 575 && screenHeight > 575) { if (screenWidth > 575 && screenHeight > 575) {
self.canChangeUI = false; self.canChangeUI = false;
} }
ConfigStorage.get('cordovaForceComputerUI', function (result) { const result = ConfigStorage.get('cordovaForceComputerUI');
if (result.cordovaForceComputerUI === undefined) { if (result.cordovaForceComputerUI === undefined) {
if ((orientation === 'landscape' && screenHeight <= 575) if ((orientation === 'landscape' && screenHeight <= 575)
|| (orientation === 'portrait' && screenWidth <= 575)) { || (orientation === 'portrait' && screenWidth <= 575)) {
@ -31,12 +31,11 @@ const cordovaUI = {
ConfigStorage.set({'cordovaForceComputerUI': true}); ConfigStorage.set({'cordovaForceComputerUI': true});
} }
} }
});
self.set(); self.set();
}, },
set: function() { set: function() {
const self = this; const self = this;
ConfigStorage.get('cordovaForceComputerUI', function (result) { const result = ConfigStorage.get('cordovaForceComputerUI');
if (result.cordovaForceComputerUI) { if (result.cordovaForceComputerUI) {
window.screen.orientation.lock('landscape'); window.screen.orientation.lock('landscape');
$('body').css('zoom', self.uiZoom); $('body').css('zoom', self.uiZoom);
@ -44,7 +43,6 @@ const cordovaUI = {
window.screen.orientation.lock('portrait'); window.screen.orientation.lock('portrait');
$('body').css('zoom', 1); $('body').css('zoom', 1);
} }
});
}, },
}; };

View file

@ -389,13 +389,12 @@ GuiControl.prototype.content_ready = function (callback) {
}; };
GuiControl.prototype.selectDefaultTabWhenConnected = function() { GuiControl.prototype.selectDefaultTabWhenConnected = function() {
ConfigStorage.get(['rememberLastTab', 'lastTab'], function (result) { const result = ConfigStorage.get(['rememberLastTab', 'lastTab']);
if (result.rememberLastTab && result.lastTab) { if (result.rememberLastTab && result.lastTab) {
$(`#tabs ul.mode-connected .${result.lastTab} a`).click(); $(`#tabs ul.mode-connected .${result.lastTab} a`).click();
} else { } else {
$('#tabs ul.mode-connected .tab_setup a').click(); $('#tabs ul.mode-connected .tab_setup a').click();
} }
});
}; };
GuiControl.prototype.isNWJS = function () { GuiControl.prototype.isNWJS = function () {

View file

@ -21,7 +21,7 @@ JenkinsLoader.prototype.loadJobs = function (viewName, callback) {
callback(jobs); callback(jobs);
}; };
chrome.storage.local.get([cacheLastUpdateTag, jobsDataTag], function (result) { const result = ConfigStorage.get([cacheLastUpdateTag, jobsDataTag]);
const jobsDataTimestamp = $.now(); const jobsDataTimestamp = $.now();
const cachedJobsData = result[jobsDataTag]; const cachedJobsData = result[jobsDataTag];
const cachedJobsLastUpdate = result[cacheLastUpdateTag]; const cachedJobsLastUpdate = result[cacheLastUpdateTag];
@ -49,7 +49,7 @@ JenkinsLoader.prototype.loadJobs = function (viewName, callback) {
const object = {}; const object = {};
object[jobsDataTag] = jobs; object[jobsDataTag] = jobs;
object[cacheLastUpdateTag] = $.now(); object[cacheLastUpdateTag] = $.now();
chrome.storage.local.set(object); ConfigStorage.set(object);
wrappedCallback(jobs); wrappedCallback(jobs);
}).fail(xhr => { }).fail(xhr => {
@ -59,7 +59,6 @@ JenkinsLoader.prototype.loadJobs = function (viewName, callback) {
} else { } else {
cachedCallback(); cachedCallback();
} }
});
}; };
JenkinsLoader.prototype.loadBuilds = function (jobName, callback) { JenkinsLoader.prototype.loadBuilds = function (jobName, callback) {
@ -69,7 +68,7 @@ JenkinsLoader.prototype.loadBuilds = function (jobName, callback) {
const buildsDataTag = `${jobUrl}BuildsData`; const buildsDataTag = `${jobUrl}BuildsData`;
const cacheLastUpdateTag = `${jobUrl}BuildsLastUpdate`; const cacheLastUpdateTag = `${jobUrl}BuildsLastUpdate`;
chrome.storage.local.get([cacheLastUpdateTag, buildsDataTag], function (result) { const result = ConfigStorage.get([cacheLastUpdateTag, buildsDataTag]);
const buildsDataTimestamp = $.now(); const buildsDataTimestamp = $.now();
const cachedBuildsData = result[buildsDataTag]; const cachedBuildsData = result[buildsDataTag];
const cachedBuildsLastUpdate = result[cacheLastUpdateTag]; const cachedBuildsLastUpdate = result[cacheLastUpdateTag];
@ -101,7 +100,7 @@ JenkinsLoader.prototype.loadBuilds = function (jobName, callback) {
const object = {}; const object = {};
object[buildsDataTag] = builds; object[buildsDataTag] = builds;
object[cacheLastUpdateTag] = $.now(); object[cacheLastUpdateTag] = $.now();
chrome.storage.local.set(object); ConfigStorage.set(object);
self._parseBuilds(jobUrl, jobName, builds, callback); self._parseBuilds(jobUrl, jobName, builds, callback);
}).fail(xhr => { }).fail(xhr => {
@ -111,7 +110,6 @@ JenkinsLoader.prototype.loadBuilds = function (jobName, callback) {
} else { } else {
cachedCallback(); cachedCallback();
} }
});
}; };
JenkinsLoader.prototype._parseBuilds = function (jobUrl, jobName, builds, callback) { JenkinsLoader.prototype._parseBuilds = function (jobUrl, jobName, builds, callback) {

View file

@ -190,22 +190,16 @@ i18n.localizePage = function(forceReTranslate) {
* returns the current locale to the callback * returns the current locale to the callback
*/ */
function getStoredUserLocale(cb) { function getStoredUserLocale(cb) {
if (typeof ConfigStorage !== 'undefined') {
ConfigStorage.get('userLanguageSelect', function (result) {
let userLanguage = 'DEFAULT'; let userLanguage = 'DEFAULT';
if (typeof ConfigStorage !== 'undefined') {
const result = ConfigStorage.get('userLanguageSelect');
if (result.userLanguageSelect) { if (result.userLanguageSelect) {
userLanguage = result.userLanguageSelect; userLanguage = result.userLanguageSelect;
} }
i18n.selectedLanguage = userLanguage; i18n.selectedLanguage = userLanguage;
userLanguage = getValidLocale(userLanguage);
cb(userLanguage);
});
} else {
const userLanguage = getValidLocale('DEFAULT');
cb(userLanguage);
} }
userLanguage = getValidLocale(userLanguage);
cb(userLanguage);
} }
function getValidLocale(userLocale) { function getValidLocale(userLocale) {

View file

@ -45,14 +45,13 @@ function appReady() {
function checkSetupAnalytics(callback) { function checkSetupAnalytics(callback) {
if (!analytics) { if (!analytics) {
setTimeout(function () { setTimeout(function () {
ConfigStorage.get(['userId', 'analyticsOptOut', 'checkForConfiguratorUnstableVersions' ], function (result) { const result = ConfigStorage.get(['userId', 'analyticsOptOut', 'checkForConfiguratorUnstableVersions' ]);
if (!analytics) { if (!analytics) {
setupAnalytics(result); setupAnalytics(result);
} }
callback(analytics); callback(analytics);
}); });
});
} else if (callback) { } else if (callback) {
callback(analytics); callback(analytics);
} }
@ -499,13 +498,12 @@ function startProcess() {
$(this).data('state', state); $(this).data('state', state);
}); });
ConfigStorage.get('logopen', function (result) { let result = ConfigStorage.get('logopen');
if (result.logopen) { if (result.logopen) {
$("#showlog").trigger('click'); $("#showlog").trigger('click');
} }
});
ConfigStorage.get('permanentExpertMode', function (result) { result = ConfigStorage.get('permanentExpertMode');
const expertModeCheckbox = 'input[name="expertModeCheckbox"]'; const expertModeCheckbox = 'input[name="expertModeCheckbox"]';
if (result.permanentExpertMode) { if (result.permanentExpertMode) {
$(expertModeCheckbox).prop('checked', true); $(expertModeCheckbox).prop('checked', true);
@ -527,20 +525,18 @@ function startProcess() {
}); });
$(expertModeCheckbox).trigger("change"); $(expertModeCheckbox).trigger("change");
});
ConfigStorage.get('cliAutoComplete', function (result) { result = ConfigStorage.get('cliAutoComplete');
CliAutoComplete.setEnabled(typeof result.cliAutoComplete == 'undefined' || result.cliAutoComplete); // On by default CliAutoComplete.setEnabled(typeof result.cliAutoComplete === undefined || result.cliAutoComplete); // On by default
});
ConfigStorage.get('darkTheme', function (result) { result = ConfigStorage.get('darkTheme');
if (result.darkTheme === undefined || typeof result.darkTheme !== "number") { if (result.darkTheme === undefined || typeof result.darkTheme !== "number") {
// sets dark theme to auto if not manually changed // sets dark theme to auto if not manually changed
setDarkTheme(2); setDarkTheme(2);
} else { } else {
setDarkTheme(result.darkTheme); setDarkTheme(result.darkTheme);
} }
});
if (GUI.isCordova()) { if (GUI.isCordova()) {
let darkMode = false; let darkMode = false;
const checkDarkMode = function() { const checkDarkMode = function() {
@ -575,7 +571,7 @@ function checkForConfiguratorUpdates() {
} }
function notifyOutdatedVersion(releaseData) { function notifyOutdatedVersion(releaseData) {
ConfigStorage.get('checkForConfiguratorUnstableVersions', function (result) { const result = ConfigStorage.get('checkForConfiguratorUnstableVersions');
let showUnstableReleases = false; let showUnstableReleases = false;
if (result.checkForConfiguratorUnstableVersions) { if (result.checkForConfiguratorUnstableVersions) {
showUnstableReleases = true; showUnstableReleases = true;
@ -620,7 +616,6 @@ function notifyOutdatedVersion(releaseData) {
dialog.showModal(); dialog.showModal();
} }
});
} }
function isExpertModeEnabled() { function isExpertModeEnabled() {

View file

@ -32,9 +32,12 @@ PortHandler.initialize = function () {
PortHandler.check = function () { PortHandler.check = function () {
const self = this; const self = this;
let result;
ConfigStorage.get('showVirtualMode', res => self.showVirtualMode = res.showVirtualMode); result = ConfigStorage.get('showVirtualMode');
ConfigStorage.get('showAllSerialDevices', res => self.showAllSerialDevices = res.showAllSerialDevices); self.showVirtualMode = result.showVirtualMode;
result = ConfigStorage.get('showAllSerialDevices');
self.showAllSerialDevices = result.showAllSerialDevices;
self.check_usb_devices(); self.check_usb_devices();
self.check_serial_devices(); self.check_serial_devices();
@ -168,7 +171,7 @@ PortHandler.detectPort = function(currentPorts) {
currentPorts = self.updatePortSelect(currentPorts); currentPorts = self.updatePortSelect(currentPorts);
console.log(`PortHandler - Found: ${JSON.stringify(newPorts)}`); console.log(`PortHandler - Found: ${JSON.stringify(newPorts)}`);
ConfigStorage.get('last_used_port', function (result) { const result = ConfigStorage.get('last_used_port');
if (result.last_used_port) { if (result.last_used_port) {
if (result.last_used_port.includes('tcp')) { if (result.last_used_port.includes('tcp')) {
self.portPickerElement.val('manual'); self.portPickerElement.val('manual');
@ -178,7 +181,6 @@ PortHandler.detectPort = function(currentPorts) {
self.selectPort(currentPorts); self.selectPort(currentPorts);
} }
} }
});
self.port_available = true; self.port_available = true;
// Signal board verification // Signal board verification

View file

@ -11,10 +11,11 @@ const ReleaseChecker = function (releaseName, releaseUrl) {
ReleaseChecker.prototype.loadReleaseData = function (processFunction) { ReleaseChecker.prototype.loadReleaseData = function (processFunction) {
const self = this; const self = this;
chrome.storage.local.get([self._releaseLastUpdateTag, self._releaseDataTag], function (result) { const result = ConfigStorage.get([self._releaseLastUpdateTag, self._releaseDataTag]);
const releaseDataTimestamp = $.now(); const releaseDataTimestamp = $.now();
const cacheReleaseData = result[self._releaseDataTag]; const cacheReleaseData = result[self._releaseDataTag];
const cachedReleaseLastUpdate = result[self._releaseLastUpdateTag]; const cachedReleaseLastUpdate = result[self._releaseLastUpdateTag];
if (!cacheReleaseData || !cachedReleaseLastUpdate || releaseDataTimestamp - cachedReleaseLastUpdate > 3600 * 1000) { if (!cacheReleaseData || !cachedReleaseLastUpdate || releaseDataTimestamp - cachedReleaseLastUpdate > 3600 * 1000) {
$.get(self._releaseUrl, function (releaseData) { $.get(self._releaseUrl, function (releaseData) {
GUI.log(i18n.getMessage('releaseCheckLoaded',[self._releaseName])); GUI.log(i18n.getMessage('releaseCheckLoaded',[self._releaseName]));
@ -22,7 +23,7 @@ ReleaseChecker.prototype.loadReleaseData = function (processFunction) {
const data = {}; const data = {};
data[self._releaseDataTag] = releaseData; data[self._releaseDataTag] = releaseData;
data[self._releaseLastUpdateTag] = releaseDataTimestamp; data[self._releaseLastUpdateTag] = releaseDataTimestamp;
chrome.storage.local.set(data, function () {}); ConfigStorage.set(data);
self._processReleaseData(releaseData, processFunction); self._processReleaseData(releaseData, processFunction);
}).fail(function (data) { }).fail(function (data) {
@ -41,7 +42,6 @@ ReleaseChecker.prototype.loadReleaseData = function (processFunction) {
self._processReleaseData(cacheReleaseData, processFunction); self._processReleaseData(cacheReleaseData, processFunction);
} }
});
}; };

View file

@ -33,16 +33,17 @@ function initializeSerialBackend() {
ConfigStorage.set({'portOverride': $('#port-override').val()}); ConfigStorage.set({'portOverride': $('#port-override').val()});
}); });
ConfigStorage.get('portOverride', function (data) { const data = ConfigStorage.get('portOverride');
if (data.portOverride) {
$('#port-override').val(data.portOverride); $('#port-override').val(data.portOverride);
}); }
$('div#port-picker #port').change(function (target) { $('div#port-picker #port').change(function (target) {
GUI.updateManualPortVisibility(); GUI.updateManualPortVisibility();
}); });
$('div.connect_controls a.connect').click(function () { $('div.connect_controls a.connect').click(function () {
if (GUI.connect_lock != true) { // GUI control overrides the user control if (!GUI.connect_lock) { // GUI control overrides the user control
const toggleStatus = function() { const toggleStatus = function() {
clicks = !clicks; clicks = !clicks;
@ -113,7 +114,7 @@ function initializeSerialBackend() {
}); });
// auto-connect // auto-connect
ConfigStorage.get('auto_connect', function (result) { const result = ConfigStorage.get('auto_connect');
if (result.auto_connect === undefined || result.auto_connect) { if (result.auto_connect === undefined || result.auto_connect) {
// default or enabled by user // default or enabled by user
GUI.auto_connect = true; GUI.auto_connect = true;
@ -130,7 +131,7 @@ function initializeSerialBackend() {
$('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectDisabled')); $('input.auto_connect, span.auto_connect').prop('title', i18n.getMessage('autoConnectDisabled'));
} }
// bind UI hook to auto-connect checkbox // bind UI hook to auto-connect checkbos
$('input.auto_connect').change(function () { $('input.auto_connect').change(function () {
GUI.auto_connect = $(this).is(':checked'); GUI.auto_connect = $(this).is(':checked');
@ -147,7 +148,6 @@ function initializeSerialBackend() {
ConfigStorage.set({'auto_connect': GUI.auto_connect}); ConfigStorage.set({'auto_connect': GUI.auto_connect});
}); });
});
PortHandler.initialize(); PortHandler.initialize();
PortUsage.initialize(); PortUsage.initialize();

View file

@ -540,7 +540,7 @@ TABS.auxiliary.initialize = function (callback) {
} }
let hideUnusedModes = false; let hideUnusedModes = false;
ConfigStorage.get('hideUnusedModes', function (result) { const result = ConfigStorage.get('hideUnusedModes');
$("input#switch-toggle-unused") $("input#switch-toggle-unused")
.change(function() { .change(function() {
hideUnusedModes = $(this).prop("checked"); hideUnusedModes = $(this).prop("checked");
@ -549,7 +549,6 @@ TABS.auxiliary.initialize = function (callback) {
}) })
.prop("checked", !!result.hideUnusedModes) .prop("checked", !!result.hideUnusedModes)
.change(); .change();
});
// update ui instantly on first load // update ui instantly on first load
update_ui(); update_ui();

View file

@ -158,12 +158,11 @@ firmware_flasher.initialize = function (callback) {
TABS.firmware_flasher.releases = builds; TABS.firmware_flasher.releases = builds;
ConfigStorage.get('selected_board', function (result) { result = ConfigStorage.get('selected_board');
if (result.selected_board) { if (result.selected_board) {
const boardBuilds = builds[result.selected_board]; const boardBuilds = builds[result.selected_board];
$('select[name="board"]').val(boardBuilds ? result.selected_board : 0).trigger('change'); $('select[name="board"]').val(boardBuilds ? result.selected_board : 0).trigger('change');
} }
});
} }
function processBoardOptions(releaseData, showDevReleases) { function processBoardOptions(releaseData, showDevReleases) {
@ -244,7 +243,7 @@ firmware_flasher.initialize = function (callback) {
if (builds && hasUnifiedTargetBuild(builds)) { if (builds && hasUnifiedTargetBuild(builds)) {
console.log('loaded some builds for later'); console.log('loaded some builds for later');
const storageTag = 'unifiedSourceCache'; const storageTag = 'unifiedSourceCache';
chrome.storage.local.get(storageTag, function (result) { result = ConfigStorage.get(storageTag);
let storageObj = result[storageTag]; let storageObj = result[storageTag];
if (!storageObj || !storageObj.lastUpdate || checkTime - storageObj.lastUpdate > expirationPeriod) { if (!storageObj || !storageObj.lastUpdate || checkTime - storageObj.lastUpdate > expirationPeriod) {
console.log('go get', unifiedSource); console.log('go get', unifiedSource);
@ -255,7 +254,7 @@ firmware_flasher.initialize = function (callback) {
newDataObj.lastUpdate = checkTime; newDataObj.lastUpdate = checkTime;
newDataObj.data = data; newDataObj.data = data;
newStorageObj[storageTag] = newDataObj; newStorageObj[storageTag] = newDataObj;
chrome.storage.local.set(newStorageObj); ConfigStorage.set(newStorageObj);
parseUnifiedBuilds(data, builds); parseUnifiedBuilds(data, builds);
}).fail(xhr => { }).fail(xhr => {
@ -267,7 +266,6 @@ firmware_flasher.initialize = function (callback) {
console.log('unified config cached data', Math.floor((checkTime - storageObj.lastUpdate)/60), 'mins old'); console.log('unified config cached data', Math.floor((checkTime - storageObj.lastUpdate)/60), 'mins old');
parseUnifiedBuilds(storageObj.data, builds); parseUnifiedBuilds(storageObj.data, builds);
} }
});
} else { } else {
populateBoardOptions(builds); populateBoardOptions(builds);
} }
@ -314,13 +312,12 @@ firmware_flasher.initialize = function (callback) {
TABS.firmware_flasher.releases = releases; TABS.firmware_flasher.releases = releases;
TABS.firmware_flasher.unifiedConfigs = unifiedConfigs; TABS.firmware_flasher.unifiedConfigs = unifiedConfigs;
ConfigStorage.get('selected_board', function (result) { result = ConfigStorage.get('selected_board');
if (result.selected_board) { if (result.selected_board) {
const boardReleases = TABS.firmware_flasher.unifiedConfigs[result.selected_board] const boardReleases = TABS.firmware_flasher.unifiedConfigs[result.selected_board]
|| TABS.firmware_flasher.releases[result.selected_board]; || TABS.firmware_flasher.releases[result.selected_board];
$('select[name="board"]').val(boardReleases ? result.selected_board : 0).trigger('change'); $('select[name="board"]').val(boardReleases ? result.selected_board : 0).trigger('change');
} }
});
} }
const buildTypes = [ const buildTypes = [
@ -416,7 +413,7 @@ firmware_flasher.initialize = function (callback) {
buildTypesToShow[build_type].loader(); buildTypesToShow[build_type].loader();
} }
chrome.storage.local.set({'selected_build_type': build_type}); ConfigStorage.set({'selected_build_type': build_type});
}); });
function populateBuilds(builds, target, manufacturerId, duplicateName, targetVersions, callback) { function populateBuilds(builds, target, manufacturerId, duplicateName, targetVersions, callback) {
@ -613,7 +610,7 @@ firmware_flasher.initialize = function (callback) {
const storageTag = 'unifiedConfigLast'; const storageTag = 'unifiedConfigLast';
const expirationPeriod = 3600; // One of your earth hours. const expirationPeriod = 3600; // One of your earth hours.
const checkTime = Math.floor(Date.now() / 1000); // Lets deal in seconds. const checkTime = Math.floor(Date.now() / 1000); // Lets deal in seconds.
chrome.storage.local.get(storageTag, function (result) { result = ConfigStorage.get(storageTag);
let storageObj = result[storageTag]; let storageObj = result[storageTag];
const unifiedConfigList = TABS.firmware_flasher.unifiedConfigs[target]; const unifiedConfigList = TABS.firmware_flasher.unifiedConfigs[target];
const manufacturerIds = Object.keys(unifiedConfigList); const manufacturerIds = Object.keys(unifiedConfigList);
@ -656,7 +653,7 @@ firmware_flasher.initialize = function (callback) {
targetId: targetId, targetId: targetId,
lastUpdate: checkTime, lastUpdate: checkTime,
}; };
chrome.storage.local.set(newStorageObj); ConfigStorage.set(newStorageObj);
populateBuilds(builds, target, manufacturerId, duplicateName, TABS.firmware_flasher.releases[bareBoard], processNext); populateBuilds(builds, target, manufacturerId, duplicateName, TABS.firmware_flasher.releases[bareBoard], processNext);
}); });
@ -684,7 +681,6 @@ firmware_flasher.initialize = function (callback) {
}; };
processManufacturer(0); processManufacturer(0);
});
} else { } else {
self.unifiedTarget = {}; self.unifiedTarget = {};
finishPopulatingBuilds(); finishPopulatingBuilds();
@ -894,7 +890,7 @@ firmware_flasher.initialize = function (callback) {
document.querySelector('select[name="board"]').addEventListener('change', updateDetectBoardButton); document.querySelector('select[name="board"]').addEventListener('change', updateDetectBoardButton);
document.querySelector('select[name="firmware_version"]').addEventListener('change', updateDetectBoardButton); document.querySelector('select[name="firmware_version"]').addEventListener('change', updateDetectBoardButton);
ConfigStorage.get('erase_chip', function (result) { let result = ConfigStorage.get('erase_chip');
if (result.erase_chip) { if (result.erase_chip) {
$('input.erase_chip').prop('checked', true); $('input.erase_chip').prop('checked', true);
} else { } else {
@ -904,23 +900,19 @@ firmware_flasher.initialize = function (callback) {
$('input.erase_chip').change(function () { $('input.erase_chip').change(function () {
ConfigStorage.set({'erase_chip': $(this).is(':checked')}); ConfigStorage.set({'erase_chip': $(this).is(':checked')});
}).change(); }).change();
});
chrome.storage.local.get('show_development_releases', function (result) { result = ConfigStorage.get('show_development_releases');
$('input.show_development_releases') $('input.show_development_releases')
.prop('checked', result.show_development_releases) .prop('checked', result.show_development_releases)
.change(function () { .change(function () {
chrome.storage.local.set({'show_development_releases': $(this).is(':checked')}); ConfigStorage.set({'show_development_releases': $(this).is(':checked')});
}).change(); }).change();
}); result = ConfigStorage.get('selected_build_type');
chrome.storage.local.get('selected_build_type', function (result) {
// ensure default build type is selected // ensure default build type is selected
buildType_e.val(result.selected_build_type || 0).trigger('change'); buildType_e.val(result.selected_build_type || 0).trigger('change');
});
ConfigStorage.get('no_reboot_sequence', function (result) { result = ConfigStorage.get('no_reboot_sequence');
if (result.no_reboot_sequence) { if (result.no_reboot_sequence) {
$('input.updating').prop('checked', true); $('input.updating').prop('checked', true);
$('.flash_on_connect_wrapper').show(); $('.flash_on_connect_wrapper').show();
@ -943,9 +935,8 @@ firmware_flasher.initialize = function (callback) {
}); });
$('input.updating').change(); $('input.updating').change();
});
ConfigStorage.get('flash_manual_baud', function (result) { result = ConfigStorage.get('flash_manual_baud');
if (result.flash_manual_baud) { if (result.flash_manual_baud) {
$('input.flash_manual_baud').prop('checked', true); $('input.flash_manual_baud').prop('checked', true);
} else { } else {
@ -959,9 +950,8 @@ firmware_flasher.initialize = function (callback) {
}); });
$('input.flash_manual_baud').change(); $('input.flash_manual_baud').change();
});
ConfigStorage.get('flash_manual_baud_rate', function (result) { result = ConfigStorage.get('flash_manual_baud_rate');
$('#flash_manual_baud_rate').val(result.flash_manual_baud_rate); $('#flash_manual_baud_rate').val(result.flash_manual_baud_rate);
// bind UI hook so the status is saved on change // bind UI hook so the status is saved on change
@ -971,7 +961,6 @@ firmware_flasher.initialize = function (callback) {
}); });
$('input.flash_manual_baud_rate').change(); $('input.flash_manual_baud_rate').change();
});
// UI Hooks // UI Hooks
$('a.load_file').click(function () { $('a.load_file').click(function () {
@ -1175,17 +1164,16 @@ firmware_flasher.initialize = function (callback) {
function setAcknowledgementTimestamp() { function setAcknowledgementTimestamp() {
const storageObj = {}; const storageObj = {};
storageObj[storageTag] = Date.now(); storageObj[storageTag] = Date.now();
chrome.storage.local.set(storageObj); ConfigStorage.set(storageObj);
} }
chrome.storage.local.get(storageTag, function (result) { result = ConfigStorage.get(storageTag);
if (!result[storageTag] || Date.now() - result[storageTag] > DAY_MS) { if (!result[storageTag] || Date.now() - result[storageTag] > DAY_MS) {
showAcknowledgementDialog(setAcknowledgementTimestamp); showAcknowledgementDialog(setAcknowledgementTimestamp);
} else { } else {
startFlashing(); startFlashing();
} }
});
} }
function showAcknowledgementDialog(acknowledgementCallback) { function showAcknowledgementDialog(acknowledgementCallback) {
@ -1306,8 +1294,8 @@ firmware_flasher.initialize = function (callback) {
if (status) { if (status) {
const catch_new_port = function () { const catch_new_port = function () {
PortHandler.port_detected('flash_detected_device', function (result) { PortHandler.port_detected('flash_detected_device', function (resultPort) {
const port = result[0]; const port = resultPort[0];
if (!GUI.connect_lock) { if (!GUI.connect_lock) {
GUI.log(i18n.getMessage('firmwareFlasherFlashTrigger', [port])); GUI.log(i18n.getMessage('firmwareFlasherFlashTrigger', [port]));

View file

@ -99,7 +99,7 @@ logging.initialize = function (callback) {
} }
}); });
ConfigStorage.get('logging_file_entry', function (result) { const result = ConfigStorage.get('logging_file_entry');
if (result.logging_file_entry) { if (result.logging_file_entry) {
chrome.fileSystem.restoreEntry(result.logging_file_entry, function (entry) { chrome.fileSystem.restoreEntry(result.logging_file_entry, function (entry) {
if (checkChromeRuntimeError()) { if (checkChromeRuntimeError()) {
@ -110,7 +110,6 @@ logging.initialize = function (callback) {
prepare_writer(true); prepare_writer(true);
}); });
} }
});
GUI.content_ready(callback); GUI.content_ready(callback);
} }

View file

@ -559,7 +559,7 @@ TABS.motors.initialize = function (callback) {
}); });
// set refresh speeds according to configuration saved in storage // set refresh speeds according to configuration saved in storage
ConfigStorage.get(['motors_tab_sensor_settings', 'motors_tab_gyro_settings', 'motors_tab_accel_settings'], function (result) { const result = ConfigStorage.get(['motors_tab_sensor_settings', 'motors_tab_gyro_settings', 'motors_tab_accel_settings']);
if (result.motors_tab_sensor_settings) { if (result.motors_tab_sensor_settings) {
$('.tab-motors select[name="sensor_choice"]').val(result.motors_tab_sensor_settings.sensor); $('.tab-motors select[name="sensor_choice"]').val(result.motors_tab_sensor_settings.sensor);
} }
@ -574,7 +574,6 @@ TABS.motors.initialize = function (callback) {
TABS.motors.sensorAccelScale = result.motors_tab_accel_settings.scale; TABS.motors.sensorAccelScale = result.motors_tab_accel_settings.scale;
} }
$('.tab-motors .sensor select:first').change(); $('.tab-motors .sensor select:first').change();
});
// Amperage // Amperage
function power_data_pull() { function power_data_pull() {

View file

@ -32,7 +32,7 @@ options.cleanup = function (callback) {
}; };
options.initShowWarnings = function () { options.initShowWarnings = function () {
ConfigStorage.get('showPresetsWarningBackup', function (result) { const result = ConfigStorage.get('showPresetsWarningBackup');
if (result.showPresetsWarningBackup) { if (result.showPresetsWarningBackup) {
$('div.presetsWarningBackup input').prop('checked', true); $('div.presetsWarningBackup input').prop('checked', true);
} }
@ -41,11 +41,10 @@ options.initShowWarnings = function () {
const checked = $(this).is(':checked'); const checked = $(this).is(':checked');
ConfigStorage.set({'showPresetsWarningBackup': checked}); ConfigStorage.set({'showPresetsWarningBackup': checked});
}).change(); }).change();
});
}; };
options.initPermanentExpertMode = function () { options.initPermanentExpertMode = function () {
ConfigStorage.get('permanentExpertMode', function (result) { const result = ConfigStorage.get('permanentExpertMode');
if (result.permanentExpertMode) { if (result.permanentExpertMode) {
$('div.permanentExpertMode input').prop('checked', true); $('div.permanentExpertMode input').prop('checked', true);
} }
@ -57,20 +56,18 @@ options.initPermanentExpertMode = function () {
$('input[name="expertModeCheckbox"]').prop('checked', checked).change(); $('input[name="expertModeCheckbox"]').prop('checked', checked).change();
}).change(); }).change();
});
}; };
options.initRememberLastTab = function () { options.initRememberLastTab = function () {
ConfigStorage.get('rememberLastTab', function (result) { const result = ConfigStorage.get('rememberLastTab');
$('div.rememberLastTab input') $('div.rememberLastTab input')
.prop('checked', !!result.rememberLastTab) .prop('checked', !!result.rememberLastTab)
.change(function() { ConfigStorage.set({rememberLastTab: $(this).is(':checked')}); }) .change(function() { ConfigStorage.set({rememberLastTab: $(this).is(':checked')}); })
.change(); .change();
});
}; };
options.initCheckForConfiguratorUnstableVersions = function () { options.initCheckForConfiguratorUnstableVersions = function () {
ConfigStorage.get('checkForConfiguratorUnstableVersions', function (result) { const result = ConfigStorage.get('checkForConfiguratorUnstableVersions');
if (result.checkForConfiguratorUnstableVersions) { if (result.checkForConfiguratorUnstableVersions) {
$('div.checkForConfiguratorUnstableVersions input').prop('checked', true); $('div.checkForConfiguratorUnstableVersions input').prop('checked', true);
} }
@ -82,11 +79,10 @@ options.initCheckForConfiguratorUnstableVersions = function () {
checkForConfiguratorUpdates(); checkForConfiguratorUpdates();
}); });
});
}; };
options.initAnalyticsOptOut = function () { options.initAnalyticsOptOut = function () {
ConfigStorage.get('analyticsOptOut', function (result) { const result = ConfigStorage.get('analyticsOptOut');
if (result.analyticsOptOut) { if (result.analyticsOptOut) {
$('div.analyticsOptOut input').prop('checked', true); $('div.analyticsOptOut input').prop('checked', true);
} }
@ -108,7 +104,6 @@ options.initAnalyticsOptOut = function () {
} }
}); });
}).change(); }).change();
});
}; };
options.initCliAutoComplete = function () { options.initCliAutoComplete = function () {
@ -122,19 +117,29 @@ options.initCliAutoComplete = function () {
}).change(); }).change();
}; };
options.initAutoConnectConnectionTimeout = function () {
const result = ConfigStorage.get('connectionTimeout');
if (result.connectionTimeout) {
$('#connectionTimeoutSelect').val(result.connectionTimeout);
}
$('#connectionTimeoutSelect').on('change', function () {
const value = parseInt($(this).val());
ConfigStorage.set({'connectionTimeout': value});
});
};
options.initShowAllSerialDevices = function() { options.initShowAllSerialDevices = function() {
const showAllSerialDevicesElement = $('div.showAllSerialDevices input'); const showAllSerialDevicesElement = $('div.showAllSerialDevices input');
ConfigStorage.get('showAllSerialDevices', result => { const result = ConfigStorage.get('showAllSerialDevices');
showAllSerialDevicesElement showAllSerialDevicesElement
.prop('checked', !!result.showAllSerialDevices) .prop('checked', !!result.showAllSerialDevices)
.on('change', () => ConfigStorage.set({ showAllSerialDevices: showAllSerialDevicesElement.is(':checked') })) .on('change', () => ConfigStorage.set({ showAllSerialDevices: showAllSerialDevicesElement.is(':checked') }))
.trigger('change'); .trigger('change');
});
}; };
options.initShowVirtualMode = function() { options.initShowVirtualMode = function() {
const showVirtualModeElement = $('div.showVirtualMode input'); const showVirtualModeElement = $('div.showVirtualMode input');
ConfigStorage.get('showVirtualMode', result => { const result = ConfigStorage.get('showVirtualMode');
showVirtualModeElement showVirtualModeElement
.prop('checked', !!result.showVirtualMode) .prop('checked', !!result.showVirtualMode)
.on('change', () => { .on('change', () => {
@ -142,12 +147,11 @@ options.initShowVirtualMode = function() {
PortHandler.initialPorts = false; PortHandler.initialPorts = false;
}) })
.trigger('change'); .trigger('change');
});
}; };
options.initCordovaForceComputerUI = function () { options.initCordovaForceComputerUI = function () {
if (GUI.isCordova() && cordovaUI.canChangeUI) { if (GUI.isCordova() && cordovaUI.canChangeUI) {
ConfigStorage.get('cordovaForceComputerUI', function (result) { const result = ConfigStorage.get('cordovaForceComputerUI');
if (result.cordovaForceComputerUI) { if (result.cordovaForceComputerUI) {
$('div.cordovaForceComputerUI input').prop('checked', true); $('div.cordovaForceComputerUI input').prop('checked', true);
} }
@ -161,7 +165,6 @@ options.initCordovaForceComputerUI = function () {
cordovaUI.set(); cordovaUI.set();
} }
}); });
});
} else { } else {
$('div.cordovaForceComputerUI').hide(); $('div.cordovaForceComputerUI').hide();
} }

View file

@ -783,13 +783,12 @@ TABS.receiver.initialize = function (callback) {
GUI.interval_add('receiver_pull', get_rc_refresh_data, plotUpdateRate, true); GUI.interval_add('receiver_pull', get_rc_refresh_data, plotUpdateRate, true);
}); });
ConfigStorage.get('rx_refresh_rate', function (result) { const result = ConfigStorage.get('rx_refresh_rate');
if (result.rxRefreshRate) { if (result.rxRefreshRate) {
rxRefreshRate.val(result.rxRefreshRate).change(); rxRefreshRate.val(result.rxRefreshRate).change();
} else { } else {
rxRefreshRate.change(); // start with default value rxRefreshRate.change(); // start with default value
} }
});
// Setup model for preview // Setup model for preview
tab.initModelPreview(); tab.initModelPreview();

View file

@ -428,7 +428,7 @@ TABS.sensors.initialize = function (callback) {
} }
}); });
ConfigStorage.get('sensor_settings', function (result) { const result = ConfigStorage.get('sensor_settings');
// set refresh speeds according to configuration saved in storage // set refresh speeds according to configuration saved in storage
if (result.sensor_settings) { if (result.sensor_settings) {
$('.tab-sensors select[name="gyro_refresh_rate"]').val(result.sensor_settings.rates.gyro); $('.tab-sensors select[name="gyro_refresh_rate"]').val(result.sensor_settings.rates.gyro);
@ -451,7 +451,8 @@ TABS.sensors.initialize = function (callback) {
// start polling immediatly (as there is no configuration saved in the storage) // start polling immediatly (as there is no configuration saved in the storage)
$('.tab-sensors .rate select:first').change(); $('.tab-sensors .rate select:first').change();
} }
ConfigStorage.get('graphs_enabled', function (resultGraphs) {
const resultGraphs = ConfigStorage.get('graphs_enabled');
if (resultGraphs.graphs_enabled) { if (resultGraphs.graphs_enabled) {
const _checkboxes = $('.tab-sensors .info .checkboxes input'); const _checkboxes = $('.tab-sensors .info .checkboxes input');
for (let i = 0; i < resultGraphs.graphs_enabled.length; i++) { for (let i = 0; i < resultGraphs.graphs_enabled.length; i++) {
@ -460,8 +461,6 @@ TABS.sensors.initialize = function (callback) {
} else { } else {
$('.tab-sensors .info input:lt(4):not(:disabled)').prop('checked', true).change(); $('.tab-sensors .info input:lt(4):not(:disabled)').prop('checked', true).change();
} }
});
});
// status data pulled via separate timer with static speed // status data pulled via separate timer with static speed
GUI.interval_add('status_pull', function status_pull() { GUI.interval_add('status_pull', function status_pull() {