Skip to content

Commit 1b1f1d7

Browse files
committed
settings 0.54: If setting.json is corrupt, ensure it gets re-written
1 parent e03c8c8 commit 1b1f1d7

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

apps/setting/ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,4 @@
5858
0.51: Add setting for configuring a launcher
5959
0.52: Add option for left-handed users
6060
0.53: Ensure that when clock is set, clockHasWidgets is set correctly too
61+
0.54: If setting.json is corrupt, ensure it gets re-written

apps/setting/metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "setting",
33
"name": "Settings",
4-
"version": "0.53",
4+
"version": "0.54",
55
"description": "A menu for setting up Bangle.js",
66
"icon": "settings.png",
77
"tags": "tool,system",

apps/setting/settings.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ function resetSettings() {
6060
}
6161

6262
settings = storage.readJSON('setting.json', 1);
63-
if (!settings) resetSettings();
63+
if (("object" != typeof settings) ||
64+
("object" != typeof settings.options))
65+
resetSettings();
6466

6567
const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
6668

@@ -237,9 +239,9 @@ function showThemeMenu() {
237239
}
238240
};
239241

240-
require("Storage").list(/^.*\.theme$/).forEach(
242+
storage.list(/^.*\.theme$/).forEach(
241243
n => {
242-
let newTheme = require("Storage").readJSON(n);
244+
let newTheme = storage.readJSON(n);
243245
themesMenu[newTheme.name ? newTheme.name : n] = () => {
244246
upd({
245247
fg:cl(newTheme.fg), bg:cl(newTheme.bg),
@@ -567,11 +569,11 @@ function showUtilMenu() {
567569
},
568570
/*LANG*/'Compact Storage': () => {
569571
E.showMessage(/*LANG*/"Compacting...\nTakes approx\n1 minute",{title:/*LANG*/"Storage"});
570-
require("Storage").compact();
572+
storage.compact();
571573
showUtilMenu();
572574
},
573575
/*LANG*/'Rewrite Settings': () => {
574-
require("Storage").write(".boot0","eval(require('Storage').read('bootupdate.js'));");
576+
storage.write(".boot0","eval(require('Storage').read('bootupdate.js'));");
575577
load("setting.app.js");
576578
},
577579
/*LANG*/'Flatten Battery': () => {
@@ -592,9 +594,9 @@ function showUtilMenu() {
592594
menu[/*LANG*/'Calibrate Battery'] = () => {
593595
E.showPrompt(/*LANG*/"Is the battery fully charged?",{title:/*LANG*/"Calibrate"}).then(ok => {
594596
if (ok) {
595-
var s=require("Storage").readJSON("setting.json");
597+
var s=storage.readJSON("setting.json");
596598
s.batFullVoltage = (analogRead(D3)+analogRead(D3)+analogRead(D3)+analogRead(D3))/4;
597-
require("Storage").writeJSON("setting.json",s);
599+
storage.writeJSON("setting.json",s);
598600
E.showAlert(/*LANG*/"Calibrated!").then(() => load("setting.app.js"));
599601
} else {
600602
E.showAlert(/*LANG*/"Please charge Bangle.js for 3 hours and try again").then(() => load("settings.app.js"));
@@ -659,7 +661,7 @@ function makeConnectable() {
659661
});
660662
}
661663
function showClockMenu() {
662-
var clockApps = require("Storage").list(/\.info$/)
664+
var clockApps = storage.list(/\.info$/)
663665
.map(app => {var a=storage.readJSON(app, 1);return (a&&a.type == "clock")?a:undefined})
664666
.filter(app => app) // filter out any undefined apps
665667
.sort((a, b) => a.sortorder - b.sortorder);
@@ -676,7 +678,7 @@ function showClockMenu() {
676678
}
677679
clockMenu[label] = () => {
678680
settings.clock = app.src;
679-
settings.clockHasWidgets = require("Storage").read(app.src).includes("Bangle.loadWidgets");
681+
settings.clockHasWidgets = storage.read(app.src).includes("Bangle.loadWidgets");
680682
updateSettings();
681683
showMainMenu();
682684
};
@@ -687,7 +689,7 @@ function showClockMenu() {
687689
return E.showMenu(clockMenu);
688690
}
689691
function showLauncherMenu() {
690-
var launcherApps = require("Storage").list(/\.info$/)
692+
var launcherApps = storage.list(/\.info$/)
691693
.map(app => {var a=storage.readJSON(app, 1);return (a&&a.type == "launch")?a:undefined})
692694
.filter(app => app) // filter out any undefined apps
693695
.sort((a, b) => a.sortorder - b.sortorder);
@@ -865,9 +867,9 @@ function showTouchscreenCalibration() {
865867
Bangle.setOptions({
866868
touchX1: calib.x1, touchY1: calib.y1, touchX2: calib.x2, touchY2: calib.y2
867869
});
868-
var s = require("Storage").readJSON("setting.json",1)||{};
870+
var s = storage.readJSON("setting.json",1)||{};
869871
s.touch = calib;
870-
require("Storage").writeJSON("setting.json",s);
872+
storage.writeJSON("setting.json",s);
871873
g.setFont("6x8:2").setFontAlign(0,0).drawString("Calibrated!", g.getWidth()/2, g.getHeight()/2);
872874
// now load the main menu again
873875
setTimeout(showLCDMenu, 500);

0 commit comments

Comments
 (0)