BangleApps/apps/tevtimer/alarm.js

67 lines
1.7 KiB
JavaScript

const tt = require('triangletimer');
function showAlarm(alarm) {
const settings = require("sched").getSettings();
const tri_timer = tt.TIMERS[alarm.data.idx];
const message = tt.format_triangle(tri_timer) + '\n' + alarm.msg;
Bangle.loadWidgets();
Bangle.drawWidgets();
// buzzCount should really be called buzzRepeat, so subtract 1
let buzzCount = tri_timer.buzz_count - 1;
tt.update_system_alarms();
E.showPrompt(message, {
title: 'Triangle timer',
buttons: { "Goto": true, "OK": false }
}).then(function (go) {
buzzCount = 0;
Bangle.emit("alarmDismiss", alarm);
if (go) {
console.log('alarm ' + alarm.data.idx);
tt.set_last_viewed_timer(tri_timer);
load('triangletimer.app.js');
} else {
load();
}
});
function buzz() {
if (settings.unlockAtBuzz) {
Bangle.setLocked(false);
}
const pattern = tri_timer.vibrate_pattern || settings.defaultTimerPattern;
console.log('buzz: ' + pattern);
console.log('buzzCount: ' + buzzCount);
require("buzz").pattern(pattern).then(() => {
if (buzzCount == null || buzzCount--) {
setTimeout(buzz, settings.buzzIntervalMillis);
} else if (alarm.as) { // auto-snooze
// buzzCount should really be called buzzRepeat, so subtract 1
buzzCount = tri_timer.buzz_count - 1;
setTimeout(buzz, settings.defaultSnoozeMillis);
}
});
}
if ((require("Storage").readJSON("setting.json", 1) || {}).quiet > 1)
return;
buzz();
}
let alarms = require("sched").getAlarms();
let active = require("sched").getActiveAlarms(alarms);
if (active.length) {
// if there's an alarm, show it
showAlarm(active[0]);
} else {
// otherwise just go back to default app
setTimeout(load, 100);
}