BangleApps/apps/drained/app.js

136 lines
4.1 KiB
JavaScript
Raw Normal View History

2023-04-07 20:28:23 +00:00
var app = "drained";
2023-04-07 16:52:54 +00:00
if (typeof drainedInterval !== "undefined")
drainedInterval = clearInterval(drainedInterval);
2023-03-10 23:20:28 +00:00
Bangle.setLCDBrightness(0);
2023-04-07 20:28:23 +00:00
var powerNoop = function () { return false; };
var forceOff = function (name) {
2023-04-07 21:32:26 +00:00
var _a;
if ((_a = Bangle._PWR) === null || _a === void 0 ? void 0 : _a[name])
Bangle._PWR[name] = [];
2023-04-11 17:16:01 +00:00
Bangle["set".concat(name, "Power")](0, app);
2023-04-07 20:28:23 +00:00
Bangle["set".concat(name, "Power")] = powerNoop;
};
forceOff("GPS");
forceOff("HRM");
2023-04-19 17:14:41 +00:00
try {
NRF.disconnect();
NRF.sleep();
}
catch (e) {
console.log("couldn't disable ble: ".concat(e));
}
2023-03-10 23:20:28 +00:00
Bangle.removeAllListeners();
2023-04-08 07:26:10 +00:00
clearWatch();
2023-04-07 20:28:23 +00:00
Bangle.setOptions({
2023-04-11 17:16:01 +00:00
wakeOnFaceUp: 0,
wakeOnTouch: 0,
wakeOnTwist: 0,
2023-04-07 20:28:23 +00:00
});
2023-03-10 23:20:28 +00:00
var nextDraw;
var draw = function () {
var x = g.getWidth() / 2;
var y = g.getHeight() / 2 - 48;
var date = new Date();
var timeStr = require("locale").time(date, 1);
var dateStr = require("locale").date(date, 0).toUpperCase() +
"\n" +
require("locale").dow(date, 0).toUpperCase();
2023-05-07 09:44:04 +00:00
var x2 = x + 6;
var y2 = y + 66;
var charging = Bangle.isCharging();
2023-03-10 23:20:28 +00:00
g.reset()
.clearRect(Bangle.appRect)
2023-04-07 21:32:38 +00:00
.setFont("Vector", 55)
2023-03-10 23:20:28 +00:00
.setFontAlign(0, 0)
.setColor(charging ? "#0f0" : g.theme.fg)
2023-03-10 23:20:28 +00:00
.drawString(timeStr, x, y)
.setFont("Vector", 24)
.drawString(dateStr, x2, y2);
if (charging)
g.drawString("charging: ".concat(E.getBattery(), "%"), x2, y2 + 48);
else
g.drawString("".concat(E.getBattery(), "%"), x2, y2 + 48);
2023-03-10 23:20:28 +00:00
if (nextDraw)
clearTimeout(nextDraw);
nextDraw = setTimeout(function () {
nextDraw = undefined;
draw();
}, 60000 - (date.getTime() % 60000));
};
2023-04-19 17:14:41 +00:00
var reload = function () {
2024-11-06 07:39:32 +00:00
var scroller;
var showMenu = function () {
var menu = {
"Restore to full power": drainedRestore,
};
if (NRF.getSecurityStatus().advertising)
menu["Disable BLE"] = function () { NRF.sleep(); showMenu(); };
else
menu["Enable BLE"] = function () { NRF.wake(); showMenu(); };
menu["Settings"] = function () { return load("setting.app.js"); };
menu["Recovery"] = function () { return Bangle.showRecoveryMenu(); };
menu["Exit menu"] = reload;
2024-11-06 07:39:32 +00:00
if (scroller) {
menu[""] = { selected: scroller.scroll };
}
if (nextDraw)
clearTimeout(nextDraw);
2024-11-06 07:39:32 +00:00
(scroller = E.showMenu(menu).scroller);
};
2023-04-19 17:14:41 +00:00
Bangle.setUI({
mode: "custom",
remove: function () {
if (nextDraw)
clearTimeout(nextDraw);
nextDraw = undefined;
},
btn: showMenu
2023-04-19 17:14:41 +00:00
});
Bangle.CLOCK = 1;
g.clear();
draw();
};
reload();
2023-04-13 17:30:49 +00:00
Bangle.emit("drained", E.getBattery());
var _a = require("Storage").readJSON("".concat(app, ".setting.json"), true) || {}, _b = _a.keepStartup, keepStartup = _b === void 0 ? true : _b, _c = _a.restore, restore = _c === void 0 ? 20 : _c, _d = _a.exceptions, exceptions = _d === void 0 ? ["widdst.0"] : _d, _e = _a.interval, interval = _e === void 0 ? 10 : _e;
2023-04-19 17:14:41 +00:00
function drainedRestore() {
2023-05-07 09:44:04 +00:00
if (!keepStartup) {
2023-04-19 17:14:41 +00:00
try {
eval(require('Storage').read('bootupdate.js'));
}
catch (e) {
console.log("error restoring bootupdate:" + e);
}
}
load();
}
2023-05-07 09:44:04 +00:00
var checkCharge = function () {
if (E.getBattery() < restore) {
draw();
2023-05-07 09:44:04 +00:00
return;
}
2023-05-07 09:44:04 +00:00
drainedRestore();
};
if (Bangle.isCharging())
checkCharge();
Bangle.on("charging", function (charging) {
if (drainedInterval)
drainedInterval = clearInterval(drainedInterval);
if (charging)
drainedInterval = setInterval(checkCharge, interval * 60 * 1000);
});
2023-05-07 09:44:04 +00:00
if (!keepStartup) {
var storage = require("Storage");
for (var _i = 0, exceptions_1 = exceptions; _i < exceptions_1.length; _i++) {
var boot = exceptions_1[_i];
try {
var js = storage.read("".concat(boot, ".boot.js"));
if (js)
eval(js);
}
catch (e) {
console.log("error loading boot exception \"".concat(boot, "\": ").concat(e));
}
}
}