| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { omit } from "lodash";
- import { useEffect, useState } from "react";
- export default function WLED(Component) {
- return function WithWLED(props) {
- const { connection } = props;
- const [wled, setWled] = useState(null);
- const [presets, setPresets] = useState(null);
- const [current, setCurrent] = useState(null);
- const init = async () => {
- try {
- await wled.init();
- setCurrent(wled?.state || {});
- setPresets(omit(wled?.presets, [0]) || []);
- } catch (err) {
- console.log("Init error", err.message || err);
- }
- };
- useEffect(() => {
- if (wled) {
- wled.reinit = async (force = false) => {
- try {
- if (force) await wled.init();
- //await wled.refreshConfig();
- await wled.refreshState();
- await wled.refreshPresets();
- setCurrent(wled?.state || {});
- setPresets(omit(wled?.presets, [0]) || []);
- } catch (err) {
- // do nothing
- console.log("reinit error", err.message || err);
- }
- };
- init();
- }
- }, [wled]);
- useEffect(() => {
- if (connection) setWled(connection);
- }, [connection]);
- return (
- <Component wled={wled} presets={presets} current={current} {...props} />
- );
- };
- }
|