Skip to content

Commit b717b2b

Browse files
authored
Merge pull request #2073 from iNavFlight/dzikuvx-settings-persisten-cache
Cache settings in local storage
2 parents b1f5f32 + 6d25fbb commit b717b2b

File tree

6 files changed

+74
-6
lines changed

6 files changed

+74
-6
lines changed

js/configurator_main.js

+4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const update = require('./globalUpdates');
2424
const appUpdater = require('./appUpdater');
2525
const CliAutoComplete = require('./CliAutoComplete');
2626
const { SITLProcess } = require('./sitl');
27+
const settingsCache = require('./settingsCache');
2728

2829
process.on('uncaughtException', function (error) {
2930
if (process.env.NODE_ENV !== 'development') {
@@ -385,6 +386,9 @@ $(function() {
385386
$('#demoModeReset').on('click', function () {
386387
SITLProcess.deleteEepromFile('demo.bin');
387388
});
389+
$('#maintenanceFlushSettingsCache').on('click', function () {
390+
settingsCache.flush();
391+
});
388392
function close_and_cleanup(e) {
389393
if (e.type == 'click' && !$.contains($('div#options-window')[0], e.target) || e.type == 'keyup' && e.keyCode == 27) {
390394
$(document).unbind('click keyup', close_and_cleanup);

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

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
console.log('Settings cache flushed');
21+
};
22+
23+
publicScope.get = function(settingName) {
24+
let settings = store.get(SETTINGS_KEY, null);
25+
26+
if (settings === null) {
27+
return undefined;
28+
}
29+
let setting = settings[privateScope.getSetingKey(settingName)];
30+
return setting;
31+
};
32+
33+
publicScope.set = function(settingName, value) {
34+
let settings = store.get(SETTINGS_KEY, null);
35+
36+
if (settings === null) {
37+
settings = {};
38+
}
39+
40+
settings[privateScope.getSetingKey(settingName)] = value;
41+
store.set(SETTINGS_KEY, settings);
42+
};
43+
44+
return publicScope;
45+
}());
46+
47+
module.exports = settingsCache;

locale/en/messages.json

+6
Original file line numberDiff line numberDiff line change
@@ -5812,5 +5812,11 @@
58125812
},
58135813
"gsTelemetrySpeed": {
58145814
"message": "Speed"
5815+
},
5816+
"maintenance": {
5817+
"message": "Maintenance"
5818+
},
5819+
"maintenanceFlushSettingsCache": {
5820+
"message": "Flush settings cache"
58155821
}
58165822
}

tabs/options.html

+10
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,15 @@
8787
</div>
8888
</div>
8989
</div>
90+
<div class="options-section gui_box grey">
91+
<div class="gui_box_titlebar">
92+
<div class="spacer_box_title" data-i18n="maintenance"></div>
93+
</div>
94+
<div class="spacer_box settings">
95+
<div class="default_btn" style="float: none; width: 200px;">
96+
<a id="maintenanceFlushSettingsCache" href="#" i18n="maintenanceFlushSettingsCache"></a>
97+
</div>
98+
</div>
99+
</div>
90100
</div>
91101
</div>

0 commit comments

Comments
 (0)