added some more device actions including interactions stuff

This commit is contained in:
Carter 2025-04-02 15:17:55 -06:00
parent e4cc9b3554
commit 59d9bf2e6b
10 changed files with 381 additions and 34 deletions

View file

@ -24,7 +24,7 @@ export {
// useMeasurementsWebsocket,
// useMetricAPI,
usePermissionAPI,
// usePreferenceAPI,
usePreferenceAPI,
useSiteAPI, //TODO: update api with resolve, reject
useTagAPI,
useTeamAPI,

View file

@ -26,6 +26,7 @@ import HomeMarkerProvider, {useHomeMarkerAPI} from "./homeMarkerAPI";
import HarvestPlanProvider, {useHarvestPlanAPI} from "./harvestPlanAPI";
import TerminalProvider, {useTerminalAPI} from "./terminalAPI"
import SiteProvider, {useSiteAPI} from "./siteAPI";
import PreferenceProvider, {usePreferenceAPI} from "./preferenceAPI";
// import NoteProvider from "providers/noteAPI";
export const pondURL = (partial: string, demo: boolean = false): string => {
@ -68,7 +69,9 @@ export default function PondProvider(props: PropsWithChildren<any>) {
<HarvestPlanProvider>
<TerminalProvider>
<SiteProvider>
{children}
<PreferenceProvider>
{children}
</PreferenceProvider>
</SiteProvider>
</TerminalProvider>
</HarvestPlanProvider>
@ -123,5 +126,6 @@ export {
useHomeMarkerAPI,
useHarvestPlanAPI,
useTerminalAPI,
useSiteAPI
useSiteAPI,
usePreferenceAPI
};

View file

@ -0,0 +1,49 @@
import { useHTTP } from "hooks";
import { pond } from "protobuf-ts/pond";
import { createContext, PropsWithChildren, useContext } from "react";
import { pondURL } from "./pond";
export interface IPreferenceAPIContext {
getPreferences: (kind: string, keys: string[]) => Promise<pond.ModelPreferences[]>;
}
export const PreferenceAPIContext = createContext<IPreferenceAPIContext>(
{} as IPreferenceAPIContext
);
interface Props {}
export default function PreferenceProvider(props: PropsWithChildren<Props>) {
const { children } = props;
const { get } = useHTTP();
const getPreferences = (kind: string, keys: string[]): Promise<pond.ModelPreferences[]> => {
if (keys.length <= 0) {
return Promise.resolve([]);
}
return new Promise((resolve, reject) => {
get(pondURL("/preferences/?kind=" + kind + "&keys=" + keys.join(",")))
.then((res: any) => {
let prefs: pond.ModelPreferences[] = [];
if (res && res.data && res.data.preferences) {
res.data.preferences.forEach((raw: any) => {
prefs.push(pond.ModelPreferences.create(raw));
});
}
resolve(prefs);
})
.catch((err: any) => reject(err));
});
};
return (
<PreferenceAPIContext.Provider
value={{
getPreferences
}}>
{children}
</PreferenceAPIContext.Provider>
);
}
export const usePreferenceAPI = () => useContext(PreferenceAPIContext);