diff --git a/package-lock.json b/package-lock.json index 2b0371b..9561e14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,6 @@ "react-dom": "^18.3.1", "react-emoji-render": "^2.0.1", "react-error-boundary": "^5.0.0", - "react-full-screen": "^1.1.1", "react-horizontal-scrolling-menu": "^7.1.1", "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.9.3", @@ -8968,12 +8967,6 @@ "node": ">=10" } }, - "node_modules/fscreen": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fscreen/-/fscreen-1.2.0.tgz", - "integrity": "sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg==", - "license": "MIT" - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -11986,21 +11979,6 @@ "is-lite": "^0.8.2" } }, - "node_modules/react-full-screen": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/react-full-screen/-/react-full-screen-1.1.1.tgz", - "integrity": "sha512-xoEgkoTiN0dw9cjYYGViiMCBYbkS97BYb4bHPhQVWXj1UnOs8PZ1rPzpX+2HMhuvQV1jA5AF9GaRbO3fA5aZtg==", - "license": "MIT", - "dependencies": { - "fscreen": "^1.0.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": ">= 16.8.0" - } - }, "node_modules/react-horizontal-scrolling-menu": { "version": "7.1.8", "resolved": "https://registry.npmjs.org/react-horizontal-scrolling-menu/-/react-horizontal-scrolling-menu-7.1.8.tgz", diff --git a/package.json b/package.json index 9cb57a3..f7107af 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,6 @@ "react-dom": "^18.3.1", "react-emoji-render": "^2.0.1", "react-error-boundary": "^5.0.0", - "react-full-screen": "^1.1.1", "react-horizontal-scrolling-menu": "^7.1.1", "react-infinite-scroller": "^1.2.6", "react-joyride": "^2.9.3", diff --git a/src/bin/BinVisualizerV2.tsx b/src/bin/BinVisualizerV2.tsx index 53c3d83..4eb7cc1 100644 --- a/src/bin/BinVisualizerV2.tsx +++ b/src/bin/BinVisualizerV2.tsx @@ -36,7 +36,6 @@ import { pond } from "protobuf-ts/pond"; import { quack } from "protobuf-ts/quack"; import { useGlobalState, useSnackbar } from "providers"; import React, { useCallback, useEffect, useState } from "react"; -import { FullScreen, useFullScreenHandle } from "react-full-screen"; import moment, { Moment } from "moment"; import ResponsiveDialog from "common/ResponsiveDialog"; import { getThemeType } from "theme"; @@ -72,6 +71,7 @@ import ButtonGroup from "common/ButtonGroup"; import ModeChangeDialog from "./conditioning/modeChangeDialog"; import CustomGrainSelector from "grain/CustomGrainSelector"; import BinControllerDisplay from "./BinControllerDisplay"; +import { useFullScreen } from "hooks/FullScreenHandle"; const useStyles = makeStyles((theme: Theme) => { return ({ @@ -217,7 +217,7 @@ export default function BinVisualizer(props: Props) { const isMobile = useMobile(); const classes = useStyles(); const theme = useTheme(); - const fullScreenHandler = useFullScreenHandle(); + const {fullScreenHandler, FullScreenWrapper} = useFullScreen() const viewport = useViewport(); const { openSnack } = useSnackbar(); const [fillPercentage, setFillPercentage] = useState(0); @@ -1344,7 +1344,7 @@ export default function BinVisualizer(props: Props) { return ( - + - + ); }; diff --git a/src/component/ComponentCard.tsx b/src/component/ComponentCard.tsx index 6d430d5..8355abe 100644 --- a/src/component/ComponentCard.tsx +++ b/src/component/ComponentCard.tsx @@ -190,7 +190,18 @@ export default function ComponentCard(props: Props) { cableID = "Cable: " + (component.settings.addressType - 8); } return port + " " + cableID; - } else { + } else if (component.settings.addressType === quack.AddressType.ADDRESS_TYPE_I2C) { + let description = "" + let type = getFriendlyAddressTypeName(component.settings.addressType); + description = type + if(component.settings.expansionLine){ + description = description + ": Exp Line " + component.settings.expansionLine + } + if(component.settings.muxLine){ + description = description + " ,Mux Line " + component.settings.muxLine + } + return description + }else{ return getFriendlyAddressTypeName(component.settings.addressType); } }; diff --git a/src/device/autoDetect/DeviceScannedComponents.tsx b/src/device/autoDetect/DeviceScannedComponents.tsx index dda2bf4..95c3759 100644 --- a/src/device/autoDetect/DeviceScannedComponents.tsx +++ b/src/device/autoDetect/DeviceScannedComponents.tsx @@ -12,6 +12,7 @@ import ResponsiveDialog from "common/ResponsiveDialog"; import { useComponentAPI, useDeviceAPI, useSnackbar } from "hooks"; import { ConfigurablePin } from "pbHelpers/AddressTypes"; import ScannedOneWirePort from "./OneWire/ScannedOneWirePort"; +import I2CExpander from "./I2CExpander"; interface Props { scannedComponents: pond.ComponentAddressMap @@ -27,6 +28,7 @@ interface CompStep { } let i2cBlacklistAddresses: number[] = [0x70] +let i2cExpanderAddresses: number[] = [0x71] export default function DeviceScannedComponents(props: Props){ const {scannedComponents, device, availablePositions, availableOffsets, refreshCallback} = props @@ -35,6 +37,7 @@ export default function DeviceScannedComponents(props: Props){ const [scannedI2C, setScannedI2C] = useState() //the unmodified scan of addresses const [scannedOneWire, setScannedOneWire] = useState([]) const [validI2CCompAddresses, setValidI2CComponentAddresses] = useState([]) //the filtered array of address data + const [expanderAddresses, setExpanderAddresses] = useState([]) const [components, setComponents] = useState([]) const [steps, setSteps] = useState([]); const { error, success } = useSnackbar(); @@ -69,18 +72,23 @@ export default function DeviceScannedComponents(props: Props){ useEffect(()=>{ let valid: quack.AddressData[] = [] + let expanders: quack.AddressData[] = [] //filter the address data let addr = scannedI2C?.settings?.foundAddresses console.log(addr) if(addr){ addr.forEach(addrData => { if(!i2cBlacklistAddresses.includes(addrData.address)){ - if(!(addrData.address === 0x71 && addrData.expansionLine === undefined)){ - valid.push(addrData) - } + if(i2cExpanderAddresses.includes(addrData.address) && addrData.expansionLine === 0){ + expanders.push(addrData) + }else{ + valid.push(addrData) + } } }) } + console.log(valid) + setExpanderAddresses(expanders) setValidI2CComponentAddresses(valid) },[scannedI2C]) @@ -257,33 +265,49 @@ export default function DeviceScannedComponents(props: Props){ {scannedI2C !== undefined && - - I2C Sensors + + I2C Scan - {validI2CCompAddresses.length > 0 ? validI2CCompAddresses.map((addr, index) => { - return ( - ()}/> - ) - }) : - - - No Sensors Found - + {expanderAddresses.length > 0 && + + Detected Expanders + {expanderAddresses.map((expAddr, index) => { + return ( + + ) + })} + + } + + {validI2CCompAddresses.length > 0 ? + + Detected Sensors + {validI2CCompAddresses.map((addr, index) => { + return ( + ()}/> + ) + })} + + : + + + No Sensors Found + + + } } - - } {scannedOneWire.length > 0 && - Pin Port Sensors + Pin Port Scan {scannedOneWire.map((scan,i) => { diff --git a/src/device/autoDetect/I2CExpander.tsx b/src/device/autoDetect/I2CExpander.tsx new file mode 100644 index 0000000..f2a8183 --- /dev/null +++ b/src/device/autoDetect/I2CExpander.tsx @@ -0,0 +1,27 @@ +import { Box, Typography } from "@mui/material" +import { quack } from "protobuf-ts/quack" + +interface Props { + address: quack.AddressData +} + + + +export default function I2CExpander(props: Props) { + const {address} = props + + const expanderType = () => { + switch(address.address){ + case 0x71: + return "Grain Cable Expander" + default: + return "Unknown Expander" + } + } + + return ( + + {expanderType()} {address.muxLine ? "Mux Line: " + address.muxLine : ""} + + ) +} \ No newline at end of file diff --git a/src/device/autoDetect/ScannedI2C.tsx b/src/device/autoDetect/ScannedI2C.tsx index 4719f66..3f1b461 100644 --- a/src/device/autoDetect/ScannedI2C.tsx +++ b/src/device/autoDetect/ScannedI2C.tsx @@ -108,6 +108,7 @@ export default function ScannedI2C(props: Props){ {sensorNum && Sensor {sensorNum}} {addressData.expansionLine !== 0 && "Expansion Line: " + addressData.expansionLine} + {/* may also want to specify the mux line, not sure if the sensors will have a mux line though */} {types.length > 0 ? diff --git a/src/hooks/FullScreenHandle.tsx b/src/hooks/FullScreenHandle.tsx new file mode 100644 index 0000000..9e4323b --- /dev/null +++ b/src/hooks/FullScreenHandle.tsx @@ -0,0 +1,121 @@ +import { useCallback, useEffect, useRef, useState } from "react"; + +/** + * Drop-in replacement for react-full-screen's useFullScreenHandle + FullScreen component. + * + * Motivation: react-full-screen 1.1.1 doesn't debounce fullscreenchange events, so on + * Windows systems with DPI scaling > 100%, the resize triggered during fullscreen entry + * fires a fullscreenchange event that the library misinterprets as an exit, immediately + * popping back out of fullscreen. + * + * This hook bypasses the library entirely and calls the native Fullscreen API directly, + * ignoring fullscreenchange events fired within DEBOUNCE_MS of entry to absorb the + * DPI-scaling resize blip. + * + * Usage — replace in BinVisualizerV2.tsx: + * + * // Remove: + * import { FullScreen, useFullScreenHandle } from "react-full-screen"; + * const fullScreenHandler = useFullScreenHandle(); + * ... + * + * // Add: + * import { useFullScreen } from "hooks/useFullScreen"; + * const { fullScreenHandler, FullScreenWrapper } = useFullScreen(); + * ... + * + * // Everything else (fullScreenHandler.active, .enter(), .exit()) stays the same. + */ + +const DEBOUNCE_MS = 500; + +export interface FullScreenHandle { + active: boolean; + enter: () => void; + exit: () => void; +} + +export function useFullScreen(): { + fullScreenHandler: FullScreenHandle; + FullScreenWrapper: React.FC<{ children: React.ReactNode }>; +} { + const [active, setActive] = useState(false); + const containerRef = useRef(null); + // Timestamp of the last enter() call — used to debounce spurious exit events + const enterTimeRef = useRef(0); + + const enter = useCallback(() => { + const el = containerRef.current; + if (!el) return; + enterTimeRef.current = Date.now(); + if (el.requestFullscreen) { + el.requestFullscreen().catch(() => { + // Some browsers (e.g. iOS Safari) reject the promise — silently ignore + }); + } else if ((el as any).webkitRequestFullscreen) { + (el as any).webkitRequestFullscreen(); + } else if ((el as any).mozRequestFullScreen) { + (el as any).mozRequestFullScreen(); + } else if ((el as any).msRequestFullscreen) { + (el as any).msRequestFullscreen(); + } + }, []); + + const exit = useCallback(() => { + if (document.exitFullscreen) { + document.exitFullscreen().catch(() => {}); + } else if ((document as any).webkitExitFullscreen) { + (document as any).webkitExitFullscreen(); + } else if ((document as any).mozCancelFullScreen) { + (document as any).mozCancelFullScreen(); + } else if ((document as any).msExitFullscreen) { + (document as any).msExitFullscreen(); + } + }, []); + + useEffect(() => { + const handleChange = () => { + const fullscreenEl = + document.fullscreenElement || + (document as any).webkitFullscreenElement || + (document as any).mozFullScreenElement || + (document as any).msFullscreenElement; + + const isNowFullscreen = fullscreenEl === containerRef.current; + + // If we just called enter() and this event fires within DEBOUNCE_MS, + // and it looks like an exit, ignore it — it's the DPI-scaling resize blip + if (!isNowFullscreen && Date.now() - enterTimeRef.current < DEBOUNCE_MS) { + return; + } + + setActive(isNowFullscreen); + }; + + document.addEventListener("fullscreenchange", handleChange); + document.addEventListener("webkitfullscreenchange", handleChange); + document.addEventListener("mozfullscreenchange", handleChange); + document.addEventListener("MSFullscreenChange", handleChange); + + return () => { + document.removeEventListener("fullscreenchange", handleChange); + document.removeEventListener("webkitfullscreenchange", handleChange); + document.removeEventListener("mozfullscreenchange", handleChange); + document.removeEventListener("MSFullscreenChange", handleChange); + }; + }, []); + + const FullScreenWrapper: React.FC<{ children: React.ReactNode }> = useCallback( + ({ children }) => ( +
+ {children} +
+ ), + [] + ); + + return { + fullScreenHandler: { active, enter, exit }, + FullScreenWrapper, + }; +} \ No newline at end of file diff --git a/src/pages/Bins.tsx b/src/pages/Bins.tsx index 7529f3f..7adde4e 100644 --- a/src/pages/Bins.tsx +++ b/src/pages/Bins.tsx @@ -58,9 +58,9 @@ import { // useBinYardAPI, useGlobalState, useInteractionsAPI, - useSnackbar, - useTeamAPI + useSnackbar } from "providers"; +import { useTeamAPI } from "providers/pond/teamAPI"; import React, { SetStateAction, useCallback, useEffect, useState } from "react"; // import { getThemeType } from "theme"; import { stringToMaterialColour } from "utils"; diff --git a/src/pages/Device.tsx b/src/pages/Device.tsx index 55fd8b9..6c9535d 100644 --- a/src/pages/Device.tsx +++ b/src/pages/Device.tsx @@ -7,7 +7,8 @@ import { useDeviceStatusStreams } from "hooks/useDeviceStatusStreams"; import { useCallback, useEffect, useMemo, useState } from "react"; import { useLocation, useParams } from "react-router-dom"; import PageContainer from "./PageContainer"; -import { useHTTP, useMobile } from "hooks"; +import { useMobile } from "hooks"; +import { useHTTP } from "providers/http"; import LoadingScreen from "app/LoadingScreen"; import SmartBreadcrumb from "common/SmartBreadcrumb"; import DeviceActions from "device/DeviceActions"; @@ -623,4 +624,4 @@ export default function DevicePage() { {componentCards()} ); -} \ No newline at end of file +} diff --git a/src/pages/DeviceComponent.tsx b/src/pages/DeviceComponent.tsx index ad92c3a..a245e51 100644 --- a/src/pages/DeviceComponent.tsx +++ b/src/pages/DeviceComponent.tsx @@ -38,7 +38,8 @@ import { } from "pbHelpers/DeviceAvailability"; import { getDefaultInteraction } from "pbHelpers/Interaction"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState, useTeamAPI } from "providers"; +import { useGlobalState } from "providers"; +import { useTeamAPI } from "providers/pond/teamAPI"; import { useCallback, useEffect, useRef, useState } from "react"; import { useParams } from "react-router-dom"; // import { useRouteMatch } from "react-router"; diff --git a/src/pages/Devices.tsx b/src/pages/Devices.tsx index ea31e7f..54ff584 100644 --- a/src/pages/Devices.tsx +++ b/src/pages/Devices.tsx @@ -5,8 +5,9 @@ import { makeStyles } from "@mui/styles"; import ResponsiveTable, { Column } from "common/ResponsiveTable"; import ProvisionDevice from "device/ProvisionDevice"; import { pond } from "protobuf-ts/pond"; -import { useDeviceAPI, useGlobalState, useGroupAPI, useTeamAPI } from "providers"; -import { useHTTP } from "hooks"; +import { useDeviceAPI, useGlobalState, useGroupAPI } from "providers"; +import { useHTTP } from "providers/http"; +import { useTeamAPI } from "providers/pond/teamAPI"; import { useDeviceStatusStreams } from "hooks/useDeviceStatusStreams"; import { useCallback, useEffect, useMemo, useState } from "react"; import PageContainer from "./PageContainer"; @@ -1204,4 +1205,4 @@ export default function Devices() { /> ) -} \ No newline at end of file +} diff --git a/src/pages/Team.tsx b/src/pages/Team.tsx index f17d965..b38d506 100644 --- a/src/pages/Team.tsx +++ b/src/pages/Team.tsx @@ -12,7 +12,8 @@ import { appendToUrl } from "navigation/Router"; import PageContainer from "pages/PageContainer"; import { getContextKeys, getContextTypes } from "pbHelpers/Context"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState, useSnackbar, useTeamAPI, useUserAPI } from "providers"; +import { useGlobalState, useSnackbar, useUserAPI } from "providers"; +import { useTeamAPI } from "providers/pond/teamAPI"; import { useEffect, useState } from "react"; import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { getSignatureAccentColour, IsAdaptiveAgriculture, IsStreamline } from "services/whiteLabel"; diff --git a/src/providers/pond/ObjectHeaterAPI.tsx b/src/providers/pond/ObjectHeaterAPI.tsx index e4f9d2f..64e174b 100644 --- a/src/providers/pond/ObjectHeaterAPI.tsx +++ b/src/providers/pond/ObjectHeaterAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import React, { createContext, PropsWithChildren, useContext } from "react"; import { or } from "utils"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/backpackAPI.tsx b/src/providers/pond/backpackAPI.tsx index 0c05589..c533637 100644 --- a/src/providers/pond/backpackAPI.tsx +++ b/src/providers/pond/backpackAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/binAPI.tsx b/src/providers/pond/binAPI.tsx index e0d46f9..7c6f267 100644 --- a/src/providers/pond/binAPI.tsx +++ b/src/providers/pond/binAPI.tsx @@ -1,4 +1,5 @@ -import { useHTTP, usePermissionAPI } from "hooks"; +import { useHTTP } from "../http"; +import { usePermissionAPI } from "./permissionAPI"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { has, or } from "utils/types"; @@ -6,7 +7,7 @@ import { User, binScope } from "models"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; import { dateRange } from "providers/http"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { quack } from "protobuf-ts/quack"; export interface IBinAPIContext { diff --git a/src/providers/pond/binYardAPI.tsx b/src/providers/pond/binYardAPI.tsx index b8d270e..f3a64a4 100644 --- a/src/providers/pond/binYardAPI.tsx +++ b/src/providers/pond/binYardAPI.tsx @@ -1,10 +1,10 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { or } from "utils/types"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IBinYardAPIContext { addBinYard: (bin: pond.BinYardSettings, otherTeam?: string) => Promise>; diff --git a/src/providers/pond/cnhiProxyAPI.tsx b/src/providers/pond/cnhiProxyAPI.tsx index 3642783..8b70746 100644 --- a/src/providers/pond/cnhiProxyAPI.tsx +++ b/src/providers/pond/cnhiProxyAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; //import { or } from "utils"; diff --git a/src/providers/pond/componentAPI.tsx b/src/providers/pond/componentAPI.tsx index d073b83..3e2207e 100644 --- a/src/providers/pond/componentAPI.tsx +++ b/src/providers/pond/componentAPI.tsx @@ -1,4 +1,4 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; // import { useWebsocket } from "websocket"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; @@ -7,7 +7,7 @@ import { getComponentIDString } from "pbHelpers/Component"; import { Component } from "models"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { quack } from "protobuf-ts/quack"; export interface IComponentAPIContext { diff --git a/src/providers/pond/contractAPI.tsx b/src/providers/pond/contractAPI.tsx index 3569b52..60d17fe 100644 --- a/src/providers/pond/contractAPI.tsx +++ b/src/providers/pond/contractAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IContractInterface { addContract: ( diff --git a/src/providers/pond/datadogProxyAPI.tsx b/src/providers/pond/datadogProxyAPI.tsx index ec957a4..8afe849 100644 --- a/src/providers/pond/datadogProxyAPI.tsx +++ b/src/providers/pond/datadogProxyAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/deviceAPI.tsx b/src/providers/pond/deviceAPI.tsx index 241781b..a7c0352 100644 --- a/src/providers/pond/deviceAPI.tsx +++ b/src/providers/pond/deviceAPI.tsx @@ -1,10 +1,11 @@ -import { useHTTP, usePermissionAPI } from "hooks"; +import { useHTTP } from "../http"; +import { usePermissionAPI } from "./permissionAPI"; import { Component, deviceScope, User } from "models"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import moment from "moment"; import { or } from "utils/types"; import { dateRange } from "providers/http"; diff --git a/src/providers/pond/devicePresetAPI.tsx b/src/providers/pond/devicePresetAPI.tsx index e24d97c..13ed37c 100644 --- a/src/providers/pond/devicePresetAPI.tsx +++ b/src/providers/pond/devicePresetAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IDevicePresetInterface { //add diff --git a/src/providers/pond/fieldAPI.tsx b/src/providers/pond/fieldAPI.tsx index be980eb..4f8cc76 100644 --- a/src/providers/pond/fieldAPI.tsx +++ b/src/providers/pond/fieldAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import React, { createContext, PropsWithChildren, useContext } from "react"; import { or } from "utils"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/fieldMarkerAPI.tsx b/src/providers/pond/fieldMarkerAPI.tsx index f66f616..42b3b4e 100644 --- a/src/providers/pond/fieldMarkerAPI.tsx +++ b/src/providers/pond/fieldMarkerAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/fileControllerAPI.tsx b/src/providers/pond/fileControllerAPI.tsx index 0208584..8b85887 100644 --- a/src/providers/pond/fileControllerAPI.tsx +++ b/src/providers/pond/fileControllerAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { useGlobalState } from "providers/StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; diff --git a/src/providers/pond/firmwareAPI.tsx b/src/providers/pond/firmwareAPI.tsx index 43049c9..7bba5ce 100644 --- a/src/providers/pond/firmwareAPI.tsx +++ b/src/providers/pond/firmwareAPI.tsx @@ -1,4 +1,4 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { useGlobalState } from "providers/StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; diff --git a/src/providers/pond/gateAPI.tsx b/src/providers/pond/gateAPI.tsx index 5b07606..fa6de0f 100644 --- a/src/providers/pond/gateAPI.tsx +++ b/src/providers/pond/gateAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IGateInterface { addGate: ( diff --git a/src/providers/pond/grainAPI.tsx b/src/providers/pond/grainAPI.tsx index 0df0055..93e33c6 100644 --- a/src/providers/pond/grainAPI.tsx +++ b/src/providers/pond/grainAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { or } from "utils"; export interface IGrainInterface { diff --git a/src/providers/pond/grainBagAPI.tsx b/src/providers/pond/grainBagAPI.tsx index 7dbdfd7..71a052b 100644 --- a/src/providers/pond/grainBagAPI.tsx +++ b/src/providers/pond/grainBagAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import React, { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IGrainBagInterface { addGrainBag: ( diff --git a/src/providers/pond/groupAPI.tsx b/src/providers/pond/groupAPI.tsx index 45d140c..96c578e 100644 --- a/src/providers/pond/groupAPI.tsx +++ b/src/providers/pond/groupAPI.tsx @@ -1,11 +1,12 @@ -import { useHTTP, usePermissionAPI } from "hooks"; +import { useHTTP } from "../http"; +import { usePermissionAPI } from "./permissionAPI"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { or } from "utils/types"; import { User, groupScope } from "models"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { getContextKeys, getContextTypes } from "pbHelpers/Context"; export interface IGroupAPIContext { diff --git a/src/providers/pond/harvestPlanAPI.tsx b/src/providers/pond/harvestPlanAPI.tsx index 6c0fbb4..14aa571 100644 --- a/src/providers/pond/harvestPlanAPI.tsx +++ b/src/providers/pond/harvestPlanAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { useGlobalState } from "providers/StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; diff --git a/src/providers/pond/homeMarkerAPI.tsx b/src/providers/pond/homeMarkerAPI.tsx index 165cf73..82bb9b3 100644 --- a/src/providers/pond/homeMarkerAPI.tsx +++ b/src/providers/pond/homeMarkerAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/imagekitAPI.tsx b/src/providers/pond/imagekitAPI.tsx index d387241..a827b83 100644 --- a/src/providers/pond/imagekitAPI.tsx +++ b/src/providers/pond/imagekitAPI.tsx @@ -1,6 +1,6 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; diff --git a/src/providers/pond/interactionsAPI.tsx b/src/providers/pond/interactionsAPI.tsx index 5fa3705..2dab41f 100644 --- a/src/providers/pond/interactionsAPI.tsx +++ b/src/providers/pond/interactionsAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { Interaction } from "models"; import { componentIDToString } from "pbHelpers/Component"; import { pond } from "protobuf-ts/pond"; diff --git a/src/providers/pond/johnDeereProxyAPI.tsx b/src/providers/pond/johnDeereProxyAPI.tsx index 4042292..7382cb7 100644 --- a/src/providers/pond/johnDeereProxyAPI.tsx +++ b/src/providers/pond/johnDeereProxyAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; //import { or } from "utils"; diff --git a/src/providers/pond/keyManagerAPI.tsx b/src/providers/pond/keyManagerAPI.tsx index 68993b7..fb65725 100644 --- a/src/providers/pond/keyManagerAPI.tsx +++ b/src/providers/pond/keyManagerAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/libracartProxyAPI.tsx b/src/providers/pond/libracartProxyAPI.tsx index b56f65b..f470481 100644 --- a/src/providers/pond/libracartProxyAPI.tsx +++ b/src/providers/pond/libracartProxyAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import React, { createContext, PropsWithChildren, useContext } from "react"; //import { or } from "utils"; diff --git a/src/providers/pond/mineAPI.tsx b/src/providers/pond/mineAPI.tsx index ad55e52..fe6c2e9 100644 --- a/src/providers/pond/mineAPI.tsx +++ b/src/providers/pond/mineAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { permissionToString } from "pbHelpers/Permission"; import { pond } from "protobuf-ts/pond"; import { useGlobalState } from "providers/StateContainer"; diff --git a/src/providers/pond/mutationAPI.tsx b/src/providers/pond/mutationAPI.tsx index ffe4693..b8dd641 100644 --- a/src/providers/pond/mutationAPI.tsx +++ b/src/providers/pond/mutationAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface IMutationAPIContext { linearMutation: ( diff --git a/src/providers/pond/noteAPI.tsx b/src/providers/pond/noteAPI.tsx index a53bd52..8f385da 100644 --- a/src/providers/pond/noteAPI.tsx +++ b/src/providers/pond/noteAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -// import { useGlobalState } from "providers"; +// import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/notificationAPI.tsx b/src/providers/pond/notificationAPI.tsx index 7af3bfe..6827ce8 100644 --- a/src/providers/pond/notificationAPI.tsx +++ b/src/providers/pond/notificationAPI.tsx @@ -1,10 +1,10 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import React, { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { or } from "utils/types"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface INotificationAPIContext { listNotifications: ( diff --git a/src/providers/pond/permissionAPI.tsx b/src/providers/pond/permissionAPI.tsx index 68fa5c9..9ec405a 100644 --- a/src/providers/pond/permissionAPI.tsx +++ b/src/providers/pond/permissionAPI.tsx @@ -1,9 +1,9 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { Scope, Team, User } from "models"; import { permissionToString } from "pbHelpers/Permission"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { objectQueryParams, pondURL } from "./pond"; diff --git a/src/providers/pond/preferenceAPI.tsx b/src/providers/pond/preferenceAPI.tsx index 91ed9b7..e51776a 100644 --- a/src/providers/pond/preferenceAPI.tsx +++ b/src/providers/pond/preferenceAPI.tsx @@ -1,4 +1,4 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/siteAPI.tsx b/src/providers/pond/siteAPI.tsx index 95f0a45..596056e 100644 --- a/src/providers/pond/siteAPI.tsx +++ b/src/providers/pond/siteAPI.tsx @@ -1,5 +1,5 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { useGlobalState } from "providers/StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; diff --git a/src/providers/pond/tagAPI.tsx b/src/providers/pond/tagAPI.tsx index 071591b..7f09461 100644 --- a/src/providers/pond/tagAPI.tsx +++ b/src/providers/pond/tagAPI.tsx @@ -1,4 +1,4 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/taskAPI.tsx b/src/providers/pond/taskAPI.tsx index 087b3d0..912d87a 100644 --- a/src/providers/pond/taskAPI.tsx +++ b/src/providers/pond/taskAPI.tsx @@ -1,7 +1,7 @@ import { AxiosResponse } from "axios"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/teamAPI.tsx b/src/providers/pond/teamAPI.tsx index 911ee91..1c1a267 100644 --- a/src/providers/pond/teamAPI.tsx +++ b/src/providers/pond/teamAPI.tsx @@ -1,11 +1,11 @@ import { AxiosResponse } from "axios"; import { Scope, Team } from "models"; -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { or } from "utils/types"; import { pondURL } from "./pond"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface ITeamAPIContext { addTeam: (team: pond.TeamSettings) => Promise>; diff --git a/src/providers/pond/terminalAPI.tsx b/src/providers/pond/terminalAPI.tsx index 26297c3..46ecf30 100644 --- a/src/providers/pond/terminalAPI.tsx +++ b/src/providers/pond/terminalAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; export interface ITerminalAPIContext { addTerminal: ( diff --git a/src/providers/pond/transactionAPI.tsx b/src/providers/pond/transactionAPI.tsx index fc1db72..48904bf 100644 --- a/src/providers/pond/transactionAPI.tsx +++ b/src/providers/pond/transactionAPI.tsx @@ -1,9 +1,9 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import { createContext, PropsWithChildren, useContext } from "react"; import { pond } from "protobuf-ts/pond"; import { pondURL } from "./pond"; import { AxiosResponse } from "axios"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { or } from "utils"; export interface ITransactionAPIContext { diff --git a/src/providers/pond/usageAPI.tsx b/src/providers/pond/usageAPI.tsx index 92de655..4d9d516 100644 --- a/src/providers/pond/usageAPI.tsx +++ b/src/providers/pond/usageAPI.tsx @@ -1,6 +1,6 @@ -import { useHTTP } from "hooks"; +import { useHTTP } from "../http"; import moment from "moment"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; import { createContext, PropsWithChildren, useContext } from "react"; import { pondURL } from "./pond"; diff --git a/src/providers/pond/userAPI.tsx b/src/providers/pond/userAPI.tsx index 0d33b2e..dfd2529 100644 --- a/src/providers/pond/userAPI.tsx +++ b/src/providers/pond/userAPI.tsx @@ -1,10 +1,10 @@ -// import { useHTTP } from "hooks"; +// import { useHTTP } from "../http"; // import { Scope, User } from "models"; // import { pond } from "protobuf-ts/pond"; import { createContext, PropsWithChildren, useContext } from "react"; import { objectQueryParams, pondURL } from "./pond"; // import { or } from "utils"; -import { useGlobalState } from "providers"; +import { useGlobalState } from "../StateContainer"; // import { AxiosResponse } from "axios"; import { useHTTP } from "../http"; import { AxiosResponse } from "axios"; diff --git a/src/services/restAPI.js b/src/services/restAPI.js index ba073f4..8539729 100644 --- a/src/services/restAPI.js +++ b/src/services/restAPI.js @@ -1,4 +1,4 @@ -import * as axios from "axios"; +import axios from "axios"; export var defaultOptions = { headers: { diff --git a/src/teams/TeamList.tsx b/src/teams/TeamList.tsx index 7742033..f45262c 100644 --- a/src/teams/TeamList.tsx +++ b/src/teams/TeamList.tsx @@ -12,7 +12,8 @@ import { Grid2, } from "@mui/material"; import { pond } from "protobuf-ts/pond"; -import { useGlobalState, useSnackbar, useTeamAPI, useUserAPI } from "providers"; +import { useGlobalState, useSnackbar, useUserAPI } from "providers"; +import { useTeamAPI } from "providers/pond/teamAPI"; import { Team, teamScope } from "models"; import { useNavigate } from "react-router"; import { cloneDeep } from "lodash"; diff --git a/src/teams/TeamSettings.tsx b/src/teams/TeamSettings.tsx index 8e99e7e..87f47db 100644 --- a/src/teams/TeamSettings.tsx +++ b/src/teams/TeamSettings.tsx @@ -14,7 +14,8 @@ import { import ResponsiveDialog from "common/ResponsiveDialog"; import { Team } from "models"; import { pond } from "protobuf-ts/pond"; -import { useSnackbar, useTeamAPI } from "providers"; +import { useSnackbar } from "providers"; +import { useTeamAPI } from "providers/pond/teamAPI"; import React, { useEffect, useState } from "react"; import DeleteButton from "common/DeleteButton"; import { userRoleFromPermissions } from "pbHelpers/User";