/** Copyright Stewart Allen -- All Rights Reserved */ import { api } from './api.js'; let alerts = []; function show(message, time) { if (message === undefined || message === null) { return update(true); } let rec = [message, Date.now(), time, true]; if (api.feature.alert_event) { api.event.emit('alert', rec); } else { alerts.push(rec); setTimeout( update, time+0.02); update(); } return rec; } function hide(rec, recs) { if (Array.isArray(recs)) { for (let r of recs) { hide(r); } return; } if (api.feature.alert_event) { api.event.emit('alert.cancel', rec); return; } if (Array.isArray(rec)) { rec[3] = false; update(); } } function update(clear) { if (clear) { alerts = []; } const now = Date.now(); const { ui } = api; // filter out by age and active flag alerts = alerts.filter(alert => { return alert[3] && (now - alert[1]) < ((alert[2] || 5) * 1000); }); // limit to 5 showing while (alerts.length > 5) { alerts.shift(); } // return if called before UI configured if (!ui.alert) { return; } if (alerts.length > 0) { ui.alert.text.innerHTML = alerts.map(v => ['

',v[0],'

'].join('')).join(''); ui.alert.dialog.style.display = 'flex'; } else { ui.alert.dialog.style.display = 'none'; } } export { hide, show, update }; export default { hide, show, update };