|
|
import {setGlobal, useGlobal} from "reactn"; import {useEffect} from "react"; import {fetchDelete, fetchGet, fetchPatch, fetchPost} from "../Helpers/fetcher"; import useLights from "./lights";
setGlobal({ bridges: null, });
function useBridges() { const [bridges, setBridges] = useGlobal("bridges"); const {reloadLights} = useLights();
function reloadBridges() { setBridges(null);
fetchGet("/bridge/").then(({error, data}) => { if (error !== null) { console.error(error); return; }
setBridges(data); }); }
useEffect(() => { if (bridges === null) { reloadBridges(); } }, []);
function bridge(id) { if (bridges === null) { return null; }
return bridges.find(b => b.id === id); }
function forgetBridge(id) { fetchDelete(`/bridge/${id}`).then(({data, error}) => { if (error !== null) { console.error(error); }
reloadBridges(); }); }
function forgetLight(bridgeId, lightId) { fetchDelete(`/bridge/${bridgeId}/light/${lightId}`).then(({data, error}) => { if (error !== null) { console.error(error); }
reloadBridges(); }); }
function addBridge(name, driver, addr, callback = null) { fetchPost("/bridge/", {name, driver, addr}).then(({error}) => { if (error !== null) { console.error(error); }
if (callback !== null) { callback(error === null); }
reloadBridges(); }); }
function editBridge(id, name) { fetchPatch(`/bridge/${id}`, {name}).then(({error}) => { if (error !== null) { console.error(error); }
reloadBridges(); }); }
function discoverLights(id) { fetchPost(`/bridge/${id}/discover`).then(({error}) => { if (error !== null) { console.error(error); }
reloadLights(); reloadBridges(); }); }
return {bridges, bridge, forgetBridge, addBridge, editBridge, forgetLight, discoverLights}; }
export default useBridges;
|