BangleApps/apps/activityreminder/lib.js

57 lines
2.0 KiB
JavaScript
Raw Normal View History

const storage = require("Storage");
exports.loadSettings = function () {
2022-04-18 13:05:41 +00:00
return Object.assign({
enabled: true,
startHour: 9,
endHour: 20,
maxInnactivityMin: 30,
dismissDelayMin: 15,
pauseDelayMin: 120,
2022-04-18 13:05:41 +00:00
minSteps: 50
}, storage.readJSON("activityreminder.s.json", true) || {});
};
exports.writeSettings = function (settings) {
storage.writeJSON("activityreminder.s.json", settings);
2022-04-18 15:02:20 +00:00
};
2022-04-18 13:05:41 +00:00
exports.saveData = function (data) {
storage.writeJSON("activityreminder.data.json", data);
2022-04-18 15:02:20 +00:00
};
2022-04-18 14:41:57 +00:00
exports.loadData = function () {
let health = Bangle.getHealthStatus("day");
const data = Object.assign({
2022-05-12 08:30:11 +00:00
firstLoad: true,
stepsDate: new Date(),
stepsOnDate: health.steps,
2022-05-12 08:30:11 +00:00
okDate: new Date(1970),
dismissDate: new Date(1970),
pauseDate: new Date(1970),
},
2022-05-12 08:30:11 +00:00
storage.readJSON("activityreminder.data.json") || {});
if(typeof(data.stepsDate) == "string")
data.stepsDate = new Date(data.stepsDate);
if(typeof(data.okDate) == "string")
data.okDate = new Date(data.okDate);
if(typeof(data.dismissDate) == "string")
data.dismissDate = new Date(data.dismissDate);
if(typeof(data.pauseDate) == "string")
2022-05-12 08:30:11 +00:00
data.pauseDate = new Date(data.pauseDate);
return data;
2022-04-18 15:02:20 +00:00
};
2022-04-18 13:05:41 +00:00
exports.mustAlert = function(activityreminder_data, activityreminder_settings) {
let now = new Date();
if ((now - activityreminder_data.stepsDate) / 60000 > activityreminder_settings.maxInnactivityMin) { // inactivity detected
if ((now - activityreminder_data.okDate) / 60000 > 3 && // last alert anwsered with ok was more than 3 min ago
(now - activityreminder_data.dismissDate) / 60000 > activityreminder_settings.dismissDelayMin && // last alert was more than dismissDelayMin ago
(now - activityreminder_data.pauseDate) / 60000 > activityreminder_settings.pauseDelayMin) { // last alert was more than pauseDelayMin ago
return true;
}
}
return false;
}