Skip to content

Commit e1c3024

Browse files
committed
Cache settings in local storage
1 parent b1f5f32 commit e1c3024

File tree

3 files changed

+53
-6
lines changed

3 files changed

+53
-6
lines changed

js/fc.js

-3
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ var FC = {
7878
MIXER_CONFIG: null,
7979
BATTERY_CONFIG: null,
8080
OUTPUT_MAPPING: null,
81-
SETTINGS: null,
8281
BRAKING_CONFIG: null,
8382
SAFEHOMES: null,
8483
BOARD_ALIGNMENT: null,
@@ -570,8 +569,6 @@ var FC = {
570569

571570
this.OUTPUT_MAPPING = new OutputMappingCollection();
572571

573-
this.SETTINGS = {};
574-
575572
this.SAFEHOMES = new SafehomeCollection();
576573

577574
this.RATE_DYNAMICS = {

js/msp/MSPHelper.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const { FwApproach } = require('./../fwApproach');
2020
const Waypoint = require('./../waypoint');
2121
const mspDeduplicationQueue = require('./mspDeduplicationQueue');
2222
const mspStatistics = require('./mspStatistics');
23+
const settingsCache = require('./../settingsCache');
2324

2425
var mspHelper = (function () {
2526
var self = {};
@@ -3060,9 +3061,12 @@ var mspHelper = (function () {
30603061
};
30613062

30623063
self._getSetting = function (name) {
3063-
if (FC.SETTINGS[name]) {
3064-
return Promise.resolve(FC.SETTINGS[name]);
3064+
3065+
const storedSetting = settingsCache.get(name);
3066+
if (typeof storedSetting !== 'undefined') {
3067+
return Promise.resolve(storedSetting);
30653068
}
3069+
30663070
var data = [];
30673071
self._encodeSettingReference(name, null, data);
30683072
return MSP.promise(MSPCodes.MSP2_COMMON_SETTING_INFO, data).then(function (result) {
@@ -3109,7 +3113,7 @@ var mspHelper = (function () {
31093113
}
31103114
setting.table = { values: values };
31113115
}
3112-
FC.SETTINGS[name] = setting;
3116+
settingsCache.set(name, setting);
31133117
return setting;
31143118
});
31153119
}

js/settingsCache.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
'use strict';
2+
3+
const Store = require('electron-store');
4+
const store = new Store();
5+
const FC = require('./fc');
6+
7+
var settingsCache = (function() {
8+
9+
let publicScope = {};
10+
let privateScope = {};
11+
12+
const SETTINGS_KEY = 'settings';
13+
14+
privateScope.getSetingKey = function(settingName) {
15+
return FC.CONFIG.target + '_' + FC.CONFIG.flightControllerVersion + '_' + settingName;
16+
}
17+
18+
publicScope.flush = function() {
19+
store.delete(SETTINGS_KEY);
20+
};
21+
22+
publicScope.get = function(settingName) {
23+
let settings = store.get(SETTINGS_KEY, null);
24+
25+
if (settings === null) {
26+
return undefined;
27+
}
28+
let setting = settings[privateScope.getSetingKey(settingName)];
29+
return setting;
30+
};
31+
32+
publicScope.set = function(settingName, value) {
33+
let settings = store.get(SETTINGS_KEY, null);
34+
35+
if (settings === null) {
36+
settings = {};
37+
}
38+
39+
settings[privateScope.getSetingKey(settingName)] = value;
40+
store.set(SETTINGS_KEY, settings);
41+
};
42+
43+
return publicScope;
44+
}());
45+
46+
module.exports = settingsCache;

0 commit comments

Comments
 (0)