44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
import { statusItem } from "glimpseui";
|
|
import refresh from "./handlers/refresh.mjs";
|
|
import { base } from "./helpers/html.mjs";
|
|
import { log } from "./helpers/logger.mjs";
|
|
import { differenceInDays } from "date-fns";
|
|
import open from "open";
|
|
|
|
let lastDate = new Date();
|
|
let interval;
|
|
|
|
// Open a hidden screen
|
|
const app = statusItem(base, {
|
|
title: "✝️",
|
|
width: 800,
|
|
height: 400,
|
|
});
|
|
|
|
app.on("message", (message) => {
|
|
log("Received message:", message);
|
|
switch (message.action) {
|
|
case "ready":
|
|
interval = setInterval(() => {
|
|
log("Checking for new reading...");
|
|
const now = new Date();
|
|
if (Math.abs(differenceInDays(now, lastDate)) >= 1) {
|
|
refresh(app);
|
|
lastDate = now;
|
|
log("Updated reading for date:", lastDate);
|
|
}
|
|
|
|
log("Next check in 1 minute");
|
|
}, 60 * 1000); // Check every minute
|
|
refresh(app);
|
|
break;
|
|
case "openUrl":
|
|
if (message.url) {
|
|
log("Opening URL:", message.url);
|
|
open(message.url);
|
|
}
|
|
break;
|
|
}
|
|
});
|
|
app.on("closed", () => clearInterval(interval) && process.exit(0));
|