reactuals
Version:
A useful package providing a collection of 50+ React hooks and utilities to simplify React development.
30 lines (29 loc) • 1.01 kB
JavaScript
import { useState, useEffect } from "react";
export function useBatteryStatus() {
const [batteryState, setBatteryState] = useState({
level: null,
charging: null,
});
useEffect(() => {
let isMounted = true;
const updateBattery = (battery) => {
if (isMounted) {
setBatteryState({
level: battery.level !== null ? battery.level : null,
charging: battery.charging !== null ? battery.charging : null,
});
}
};
if ("getBattery" in navigator) {
navigator.getBattery().then((battery) => {
updateBattery(battery);
battery.addEventListener("levelchange", () => updateBattery(battery));
battery.addEventListener("chargingchange", () => updateBattery(battery));
});
return () => {
isMounted = false;
};
}
}, []);
return batteryState;
}