Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 1d456dc

Browse files
authored
Battery/AC power, plus more (#34)
* feat: create powerMonitor api file * chore: register powerMonitor routes * feat: add event listeners * fix: get not post
1 parent 75c6f3c commit 1d456dc

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

src/server/api.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import contextMenuRoutes from "./api/contextMenu";
2020
import settingsRoutes from "./api/settings";
2121
import shellRoutes from "./api/shell";
2222
import progressBarRoutes from "./api/progressBar";
23+
import powerMonitorRoutes from "./api/powerMonitor";
2324
import { Server } from "net";
2425

2526
export interface APIProcess {
@@ -52,6 +53,7 @@ async function startAPIServer(randomSecret: string): Promise<APIProcess> {
5253
httpServer.use("/api/context", contextMenuRoutes);
5354
httpServer.use("/api/menu-bar", menuBarRoutes);
5455
httpServer.use("/api/progress-bar", progressBarRoutes);
56+
httpServer.use("/api/power-monitor", powerMonitorRoutes);
5557

5658
if (process.env.NODE_ENV === "development") {
5759
httpServer.use("/api/debug", debugRoutes);

src/server/api/powerMonitor.ts

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import express from 'express'
2+
import { powerMonitor } from 'electron'
3+
import { notifyLaravel } from '../utils';
4+
const router = express.Router();
5+
6+
router.get('/get-system-idle-state', (req, res) => {
7+
res.json({
8+
result: powerMonitor.getSystemIdleState(req.body.threshold),
9+
})
10+
});
11+
12+
router.get('/get-system-idle-time', (req, res) => {
13+
res.json({
14+
result: powerMonitor.getSystemIdleTime(),
15+
})
16+
});
17+
18+
router.get('/get-current-thermal-state', (req, res) => {
19+
res.json({
20+
result: powerMonitor.getCurrentThermalState(),
21+
})
22+
});
23+
24+
router.get('/is-on-battery-power', (req, res) => {
25+
res.json({
26+
result: powerMonitor.isOnBatteryPower(),
27+
})
28+
});
29+
30+
powerMonitor.addListener('on-ac', () => {
31+
notifyLaravel("events", {
32+
event: `\\Native\\Laravel\\Events\\PowerMonitor\\PowerStateChanged`,
33+
payload: {
34+
state: 'on-ac'
35+
}
36+
});
37+
})
38+
39+
powerMonitor.addListener('on-battery', () => {
40+
notifyLaravel("events", {
41+
event: `\\Native\\Laravel\\Events\\PowerMonitor\\PowerStateChanged`,
42+
payload: {
43+
state: 'on-battery'
44+
}
45+
});
46+
})
47+
48+
powerMonitor.addListener('thermal-state-change', (state: string) => {
49+
notifyLaravel("events", {
50+
event: `\\Native\\Laravel\\Events\\PowerMonitor\\ThermalStateChanged`,
51+
payload: {
52+
state
53+
}
54+
});
55+
})
56+
57+
powerMonitor.addListener('speed-limit-change', (limit: number) => {
58+
notifyLaravel("events", {
59+
event: `\\Native\\Laravel\\Events\\PowerMonitor\\SpeedLimitChanged`,
60+
payload: {
61+
limit
62+
}
63+
});
64+
})
65+
66+
export default router;

0 commit comments

Comments
 (0)