import React, { useEffect, useState } from "react"; import { useQuery, useSubscription, useMutation } from "@apollo/react-hooks"; import gql from "graphql-tag"; import { deviceInfoFragment, propertyVectorFragment } from "./graphql/fragment"; import Device from "./components/indi/device"; import { Box, Tabs, Tab, Button, Header, Heading } from "grommet"; import { isConnectedQuery } from "./graphql/query"; const GETDEVICES = gql` query devices { devices { id ...DeviceInfo properties { id name ...PropertyVector } } } ${deviceInfoFragment} ${propertyVectorFragment} `; const CONNECT = gql` mutation connect { connect } `; const DISCONNECT = gql` mutation disconnect { disconnect } `; const useIndiState = () => { const { data } = useQuery(isConnectedQuery); const [connected, setConnected] = useState(false); useEffect(() => { data && setConnected(data.connected); }, [data]); return connected; }; const Devices = () => { const connected = useIndiState(); const { data } = useQuery(GETDEVICES); const [connect] = useMutation(CONNECT); const [disconnect] = useMutation(DISCONNECT); if (!data || !data.devices) { return