UNPKG

electron-autotheme

Version:

Trigger a function at sunset/sunrise (e.g. for auto theme change)

104 lines 7.8 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AutoTheme = void 0; const SunCalc = __importStar(require("suncalc")); const cron = __importStar(require("cron")); const ipinfo_1 = __importDefault(require("ipinfo")); class AutoTheme { constructor(func, store) { this.newAutoTheme(func); if (store) this.store = store; } async getLocation() { if (this.store && this.store.get("electron-autotheme.location")) { const date = new Date(this.store.get("electron-autotheme.date")); if (date && date.getTime() + 1000 * 60 * 60 * 48 > new Date().getTime()) return this.store.get("electron-autotheme.location"); } try { const loc = (await (0, ipinfo_1.default)()).loc.split(","); this.location = { latitude: parseFloat(loc[0]), longitude: parseFloat(loc[1]) }; if (this.store) { this.store.set("electron-autotheme.location", this.location); this.store.set("electron-autotheme.date", new Date()); } return this.location; } catch (e) { console.error(e); return null; } } getSunriseSunset(latitude = this.location.latitude, longitude = this.location.longitude, date = new Date()) { const times = SunCalc.getTimes(date, latitude, longitude); return { sunrise: times.sunrise, sunset: times.sunset }; } async newAutoTheme(func) { var _a; const location = await this.getLocation(); if (!location) { console.error("Could not get location"); setTimeout(() => this.newAutoTheme(func), 1000 * 60); func(false); return; } const now = new Date(), { sunrise, sunset } = this.getSunriseSunset(); const useDark = now < sunrise || now >= sunset, cronDate = useDark ? this.getSunriseSunset(location.latitude, location.longitude, new Date(now.getTime() + 1000 * 60 * 60 * 24)).sunrise : sunset; (_a = this.currentCronJob) === null || _a === void 0 ? void 0 : _a.stop(); this.useDark = useDark; func(useDark); const cronJob = new cron.CronJob(cronDate, () => { const now = new Date(), useDark = now < sunrise || now >= sunset; func(useDark); this.useDark = useDark; this.newAutoTheme(func); }); cronJob.start(); this.currentCronJob = cronJob; } useDarkMode() { return this.useDark; } stop() { var _a; (_a = this.currentCronJob) === null || _a === void 0 ? void 0 : _a.stop(); } } exports.AutoTheme = AutoTheme; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsMkNBQTZCO0FBRTdCLG9EQUE0QjtBQVE1QixNQUFhLFNBQVM7SUFNbEIsWUFBWSxJQUFnQyxFQUFFLEtBQTBCO1FBQ3BFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEIsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFFO1lBQzdELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUNULElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQ3BELENBQUM7WUFHRixJQUNJLElBQUk7Z0JBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFFM0QsT0FBaUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztTQUN0RTtRQUVELElBQUk7WUFDQSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBQSxnQkFBTSxHQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTVDLElBQUksQ0FBQyxRQUFRLEdBQUc7Z0JBQ1osUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENB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