updated existing api calls

This commit is contained in:
csawatzky 2025-02-24 15:40:24 -06:00
parent ade15fdfdc
commit c74a7490d9
12 changed files with 1509 additions and 698 deletions

View file

@ -1,3 +1,4 @@
import { AxiosResponse } from "axios";
import { useHTTP } from "hooks";
import { pond } from "protobuf-ts/pond";
import { createContext, PropsWithChildren, useContext } from "react";
@ -19,27 +20,58 @@ export default function BackpackProvider(props: PropsWithChildren<any>) {
const addBackpack = (backpack: pond.Backpack) => {
const url = pondURL("/backpacks");
return post(url, backpack);
return new Promise<AxiosResponse>((resolve, reject) => {
post(url, backpack).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
const updateBackpack = (backpackID: number | Long, backpack: pond.Backpack) => {
const url = pondURL("/backpacks/" + backpackID);
return put(url, backpack);
return new Promise<AxiosResponse>((resolve, reject) => {
put(url, backpack).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
const removeBackpack = (backpackID: number | Long) => {
const url = pondURL("/backpacks/" + backpackID);
return del(url);
return new Promise<AxiosResponse>((resolve, reject) => {
return del(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
const getBackpack = (backpackID: number | Long) => {
const url = pondURL("/backpacks/" + backpackID);
return get(url);
return new Promise<AxiosResponse>((resolve, reject) => {
return get(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
const listBackpacks = () => {
const url = pondURL("/backpacks");
return get(url);
return new Promise<AxiosResponse>((resolve, reject) => {
return get(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
return (

View file

@ -1,7 +1,7 @@
import { useHTTP, usePermissionAPI } from "hooks";
import { createContext, PropsWithChildren, useContext } from "react";
import { pond } from "protobuf-ts/pond";
import { or } from "utils/types";
import { has, or } from "utils/types";
import { User, binScope } from "models";
import { pondURL } from "./pond";
import { AxiosResponse } from "axios";
@ -35,7 +35,7 @@ export interface IBinAPIContext {
component: string,
preferences: pond.BinComponentPreferences
) => Promise<AxiosResponse<pond.UpdateBinComponentPreferencesResponse>>;
getBinPageData: (binKey: string, userKey: string, showErrors?: boolean) => Promise<AxiosResponse>;
getBinPageData: (binKey: string, userKey: string, showErrors?: boolean) => Promise<AxiosResponse<pond.GetBinPageDataResponse>>;
listBins: (
limit: number,
offset: number,
@ -131,38 +131,80 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState();
const addBin = (bin: pond.BinSettings) => {
if (as) return post<pond.AddBinResponse>(pondURL("/bins?as=" + as), bin);
return post<pond.AddBinResponse>(pondURL("/bins"), bin);
const url = "/bins" + (as ? "?as=" + as : "")
return new Promise<AxiosResponse<pond.AddBinResponse>>((resolve, reject)=>{
post<pond.AddBinResponse>(pondURL(url), bin).then(resp => {
resp.data = pond.AddBinResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateBin = (key: string, bin: pond.BinSettings) => {
if (as) return put<pond.UpdateBinResponse>(pondURL("/bins/" + key + "?as=" + as), bin);
return put<pond.UpdateBinResponse>(pondURL("/bins/" + key), bin);
const url = "/bins/" + key + (as ? "?as=" + as : "")
return new Promise<AxiosResponse<pond.UpdateBinResponse>>((resolve, reject)=>{
put<pond.UpdateBinResponse>(pondURL(url), bin).then(resp => {
resp.data = pond.UpdateBinResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const bulkBinUpdate = (bins: pond.BinSettings[]) => {
if (as)
return put<pond.BulkBinUpdateResponse>(pondURL("/bulkBins/update?as=" + as), { bins: bins });
return put<pond.BulkBinUpdateResponse>(pondURL("/bulkBins/update"), { bins: bins });
let url = "/bulkBins/update"
if (as) url = url + "?as=" + as
return new Promise<AxiosResponse<pond.BulkBinUpdateResponse>>((resolve, reject)=>{
put<pond.BulkBinUpdateResponse>(pondURL(url), { bins: bins }).then(resp => {
resp.data = pond.BulkBinUpdateResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateBinStatus = (key: string, binStatus: pond.BinStatus) => {
if (as)
return put<pond.UpdateBinStatusResponse>(
pondURL("/bins/" + key + "/status?as=" + as),
binStatus
);
return put<pond.UpdateBinStatusResponse>(pondURL("/bins/" + key + "/status"), binStatus);
let url = "/bins/" + key + "/status"
if (as) url = url + "?as=" + as
return new Promise<AxiosResponse<pond.UpdateBinStatusResponse>>((resolve, reject)=>{
put<pond.UpdateBinStatusResponse>(pondURL(url), binStatus).then(resp=>{
resp.data = pond.UpdateBinStatusResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err=>{
return reject(err)
})
})
};
const removeBin = (key: string) => {
if (as) return del<pond.RemoveBinResponse>(pondURL("/bins/" + key + "?as=" + as));
return del<pond.RemoveBinResponse>(pondURL("/bins/" + key));
let url = "/bins/" + key
if (as) url = url + "?as=" + as
return new Promise<AxiosResponse<pond.RemoveBinResponse>>((resolve, reject) => {
del<pond.RemoveBinResponse>(pondURL(url)).then(resp => {
resp.data = pond.RemoveBinResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getBin = (key: string) => {
if (as) return get<pond.Bin>(pondURL("/bins/" + key + "?as=" + as));
return get<pond.Bin>(pondURL("/bins/" + key));
const url = "/bins/" + key + (as ? "?as=" + as : "")
return new Promise<AxiosResponse<pond.Bin>>((resolve, reject)=>{
get<pond.Bin>(pondURL(url))
.then(resp => {
resp.data = pond.Bin.fromObject(resp.data)
resolve(resp)
})
.catch(err => {
reject(err)
})
})
};
const addComponent = (
@ -181,19 +223,40 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
} else if (preferences) {
url = url + "?binPref=" + preferences.type + "&fillNode=" + preferences.node;
}
return post<pond.AddBinComponentResponse>(pondURL(url));
return new Promise<AxiosResponse<pond.AddBinComponentResponse>>((resolve, reject)=>{
post<pond.AddBinComponentResponse>(pondURL(url)).then(resp => {
resp.data = pond.AddBinComponentResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeComponent = (bin: string, component: string) => {
let url = "/bins/" + bin + "/removeComponent/" + component;
if (as) url = url + "?as=" + as;
return post<pond.RemoveBinComponentResponse>(pondURL(url));
return new Promise<AxiosResponse<pond.RemoveBinComponentResponse>>((resolve, reject)=>{
post<pond.RemoveBinComponentResponse>(pondURL(url)).then(resp => {
resp.data = pond.RemoveBinComponentResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeAllComponents = (bin: string) => {
let url = "/bins/" + bin + "/removeAllComponents";
if (as) url = url + "?as=" + as;
return post<pond.RemoveAllBinComponentsResponse>(pondURL(url));
return new Promise<AxiosResponse<pond.RemoveAllBinComponentsResponse>>((resolve, reject)=>{
post<pond.RemoveAllBinComponentsResponse>(pondURL(url)).then(resp => {
resp.data = pond.RemoveAllBinComponentsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateComponentPreferences = (
@ -207,21 +270,33 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
preferences: Object;
}
let body: request = { preferences: pond.BinComponentPreferences.toObject(preferences) };
return put<pond.UpdateBinComponentPreferencesResponse>(pondURL(url), body);
return new Promise<AxiosResponse<pond.UpdateBinComponentPreferencesResponse>>((resolve,reject)=>{
put<pond.UpdateBinComponentPreferencesResponse>(pondURL(url), body).then(resp => {
resp.data = pond.UpdateBinComponentPreferencesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getBinPageData = (binKey: string, userKey: string, showErrors = true) => {
return get(
pondURL(
"/bins/" +
const url = "/bins/" +
binKey +
"/users/" +
userKey +
"?as=" +
as +
(showErrors ? "&showErrors=true" : "&showErrors=false")
)
);
(showErrors ? "?showErrors=true" : "?showErrors=false") +
(as ? "&as=" + as : "")
return new Promise<AxiosResponse<pond.GetBinPageDataResponse>>((resolve, reject)=>{
get<pond.GetBinPageDataResponse>(pondURL(url))
.then(resp => {
resp.data = pond.GetBinPageDataResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBins = (
@ -236,7 +311,8 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return get<pond.ListBinsResponse>(
return new Promise<AxiosResponse<pond.ListBinsResponse>>((resolve, reject)=>{
get<pond.ListBinsResponse>(
pondURL(
"/bins" +
"?limit=" +
@ -252,7 +328,13 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.join(",") : "") +
(types ? "&types=" + types.join(",") : "")
)
);
).then(resp => {
resp.data = pond.ListBinsResponse.fromObject(resp.data);
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBinsAndData = (
@ -266,9 +348,7 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return get<pond.ListBinsAndDataResponse>(
pondURL(
"/binsAndData" +
const url = "/binsAndData" +
"?limit=" +
limit +
"&offset=" +
@ -280,8 +360,15 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
(search ? "&search=" + search : "") +
(keys ? "&keys=" + keys.join(",") : "") +
(types ? "&types=" + types.join(",") : "")
)
);
return new Promise<AxiosResponse<pond.ListBinsAndDataResponse>>((resolve, reject)=>{
get<pond.ListBinsAndDataResponse>(pondURL(url)).then(resp => {
resp.data = pond.ListBinsAndDataResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBinStatus = (
@ -293,9 +380,7 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
order?: "asc" | "desc",
asRoot?: boolean
) => {
return get<pond.ListBinStatusResponse>(
pondURL(
"/bins/" +
const url = "/bins/" +
key +
"/status" +
dateRange(startDate, endDate) +
@ -305,12 +390,29 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
offset +
("&order=" + or(order, "asc")) +
(asRoot ? "&asRoot=" + asRoot.toString() : "")
)
);
return new Promise<AxiosResponse<pond.ListBinStatusResponse>>((resolve, reject)=>{
get<pond.ListBinStatusResponse>(
pondURL(url)
).then(resp => {
resp.data = pond.ListBinStatusResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBinComponents = (key: string) => {
return get<pond.ListBinComponentsResponse>(pondURL("/bins/" + key + "/components"));
return new Promise<AxiosResponse<pond.ListBinComponentsResponse>>((resolve, reject)=>{
get<pond.ListBinComponentsResponse>(pondURL("/bins/" + key + "/components"))
.then(resp => {
resp.data = pond.ListBinComponentsResponse.fromObject(resp.data)
return resolve(resp)
})
.catch(err => {
return reject(err)
})
})
};
const listBinComponentsMeasurements = (
@ -319,31 +421,54 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
end: string,
showErrors = false
) => {
return get<pond.ListBinComponentsMeasurementsResponse>(
pondURL(
"/bins/" +
let url = "/bins/" +
key +
"/components/measurements?start=" +
start +
"&end=" +
end +
"&as=" +
as +
(as ? "&as=" + as : "") +
(showErrors ? "&showErrors=true" : "&showErrors=false")
return new Promise<AxiosResponse<pond.ListBinComponentsMeasurementsResponse>>((resolve, reject) => {
get<pond.ListBinComponentsMeasurementsResponse>(pondURL(url))
.then(resp => {
resp.data = pond.ListBinComponentsMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
})
.catch(err => {
return reject(err)
})
}
)
);
};
const listHistory = (id: string, limit: number, offset: number) => {
return get<pond.ListBinHistoryResponse>(
pondURL("/bins/" + id + "/history?limit=" + limit + "&offset=" + offset)
);
let url = "/bins/" + id + "/history?limit=" + limit + "&offset=" + offset
return new Promise<AxiosResponse<pond.ListBinHistoryResponse>>((resolve, reject)=>{
get<pond.ListBinHistoryResponse>(
pondURL(url)
).then(resp => {
resp.data = pond.ListBinHistoryResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listHistoryBetween = (id: string, limit: number, start: string, end: string) => {
return get<pond.ListBinHistoryResponse>(
pondURL("/bins/" + id + "/historyBetween?limit=" + limit + "&start=" + start + "&end=" + end)
);
let url = "/bins/" + id + "/historyBetween?limit=" + limit + "&start=" + start + "&end=" + end
return new Promise<AxiosResponse<pond.ListBinHistoryResponse>>((resolve, reject)=>{
get<pond.ListBinHistoryResponse>(
pondURL(url)
).then(resp => {
resp.data = pond.ListBinHistoryResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateBinPermissions = (key: string, users: User[]) => {
@ -351,16 +476,21 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
};
const getBinMetrics = (search?: string) => {
let url = "/metrics/bins" + (search ? "?search=" + search : "")
if (as) {
if (search)
return get<pond.GetBinMetricsResponse>(
pondURL("/metrics/bins/?search=" + search + "&as=" + as)
);
return get<pond.GetBinMetricsResponse>(pondURL("/metrics/bins/?as=" + as));
if (search){
url = "/metrics/bins/?search=" + search + "&as=" + as
}
return get<pond.GetBinMetricsResponse>(
pondURL("/metrics/bins" + (search ? "?search=" + search : ""))
);
url = "/metrics/bins/?as=" + as;
}
return new Promise<AxiosResponse<pond.GetBinMetricsResponse>>((resolve, reject)=>{
get<pond.GetBinMetricsResponse>(pondURL(url)).then(resp => {
resp.data = pond.GetBinMetricsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBinLiters = (
@ -373,10 +503,7 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
pressure: string,
fan?: string
) => {
if (as) {
return get<pond.ListBinLiterResponse>(
pondURL(
"/bins/" +
const url = "/bins/" +
key +
"/liters?start=" +
start +
@ -391,44 +518,43 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
"&pressure=" +
pressure +
(fan ? "&fan=" + fan : "") +
"&as=" +
as
)
);
}
return get<pond.ListBinLiterResponse>(
pondURL(
"/bins/" +
key +
"/liters?start=" +
start +
"&end=" +
end +
"&moisture=" +
moisture +
"&plenum=" +
plenum +
"&cable=" +
cable +
"&pressure=" +
pressure +
(fan ? "&fan=" + fan : "")
)
);
(as ? "&as=" + as : "")
return new Promise<AxiosResponse<pond.ListBinLiterResponse>>((resolve, reject)=>{
get<pond.ListBinLiterResponse>(pondURL(url))
.then(resp => {
resp.data = pond.ListBinLiterResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listBinPrefs = (key: string) => {
return get<pond.ListBinComponentPreferencesResponse>(
pondURL("/bins/" + key + "/componentPreferences?as=" + as)
);
const url = "/bins/" + key + "/componentPreferences?as=" + as
return new Promise<AxiosResponse<pond.ListBinComponentPreferencesResponse>>((resolve, reject)=>{
get<pond.ListBinComponentPreferencesResponse>(pondURL(url))
.then(resp => {
resp.data = pond.ListBinComponentPreferencesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateTopNodes = (key: string, newTopNodes: pond.NewTopNode[]) => {
let body: pond.TopNodeList = pond.TopNodeList.create({ newTopNodes: newTopNodes });
return post<pond.UpdateTopNodesResponse>(
pondURL("/bins/" + key + "/updateTopNodes" + (as ? "?as=" + as : "")),
body
);
let url = "/bins/" + key + "/updateTopNodes" + (as ? "?as=" + as : "")
return new Promise<AxiosResponse<pond.UpdateTopNodesResponse>>((resolve,response) => {
post<pond.UpdateTopNodesResponse>(pondURL(url),body).then(resp => {
resp.data = pond.UpdateTopNodesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return response(err)
})
})
};
const listBinMeasurements = (
@ -460,7 +586,15 @@ export default function BinProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types : "") +
(showErrors ? "&showErrors=true" : "&showErrors=false")
);
return get<pond.ListObjectMeasurementsResponse>(url);
return new Promise<AxiosResponse<pond.ListObjectMeasurementsResponse>>((resolve, reject) => {
get<pond.ListObjectMeasurementsResponse>(url)
.then(resp => {
resp.data = pond.ListObjectMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -18,7 +18,7 @@ export interface IComponentAPIContext {
url: string,
componentKey: string
) => Promise<any>;
add: (device: number, settings: pond.ComponentSettings) => Promise<any>;
add: (device: number, settings: pond.ComponentSettings) => Promise<AxiosResponse<pond.AddComponentResponse>>;
addMultiComponents: (
device: number,
components: pond.MultiComponentSettings
@ -28,9 +28,9 @@ export interface IComponentAPIContext {
settings: pond.ComponentSettings,
keys?: string[],
types?: string[]
) => Promise<any>;
remove: (device: number, component: string, keys?: string[], types?: string[]) => Promise<any>;
get: (device: number, component: string, keys?: string[], types?: string[]) => Promise<any>;
) => Promise<AxiosResponse<pond.UpdateComponentResponse>>;
remove: (device: number, component: string, keys?: string[], types?: string[]) => Promise<AxiosResponse<pond.RemoveComponentResponse>>;
get: (device: number, component: string, keys?: string[], types?: string[]) => Promise<AxiosResponse<pond.Component>>;
list: (
device: number | string,
demo?: boolean,
@ -70,7 +70,7 @@ export interface IComponentAPIContext {
keys?: string[],
types?: string[]
) => //exportMeasurements?: boolean
Promise<any>;
Promise<AxiosResponse<pond.ListMeasurementsResponse>>;
sampleMeasurements: (
device: number | string,
component: string,
@ -80,7 +80,7 @@ export interface IComponentAPIContext {
demo?: boolean,
keys?: string[],
types?: string[]
) => Promise<any>;
) => Promise<AxiosResponse<pond.SampleMeasurementsResponse>>;
sampleUnitMeasurements: (
device: number | string,
component: string,
@ -148,19 +148,29 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
};
const addComponent = (device: number, settings: pond.ComponentSettings) => {
if (as) return post(pondURL(`/devices/${device}/components?as=${as}`), settings);
const url = pondURL("/devices/" + device + "/components?");
return post(url, settings);
let url = "/devices/" + device + "/components"
if (as) url = url + `?as=${as}`
return new Promise<AxiosResponse<pond.AddComponentResponse>>((resolve, reject) => {
post<pond.AddComponentResponse>(pondURL(url), settings).then(resp => {
resp.data = pond.AddComponentResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const addMultiComponents = (device: number, components: pond.MultiComponentSettings) => {
if (as)
return post<pond.AddMultiComponentsResponse>(
pondURL(`/devices/${device}/multiComponents?as=${as}`),
components
);
const url = pondURL("/devices/" + device + "/multiComponents?");
return post<pond.AddMultiComponentsResponse>(url, components);
let url = "/devices/" + device + "/multiComponents"
if (as) url = url + `?as=${as}`
return new Promise<AxiosResponse<pond.AddMultiComponentsResponse>>((resolve, reject)=>{
post<pond.AddMultiComponentsResponse>(pondURL(url), components).then(resp => {
resp.data = pond.AddMultiComponentsResponse.fromObject(resp.data)
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const updateComponent = (
@ -183,7 +193,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
("&types=" + t) +
(as ? "&as=" + as : "")
);
return put(url, settings);
return new Promise<AxiosResponse<pond.UpdateComponentResponse>>((resolve, reject)=>{
put<pond.UpdateComponentResponse>(url, settings).then(resp => {
resp.data = pond.UpdateComponentResponse.fromObject(resp.data)
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const removeComponent = (
@ -205,7 +222,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
("&types=" + t) +
(as ? "&as=" + as : "")
);
return del(url);
return new Promise<AxiosResponse<pond.RemoveComponentResponse>>((resolve, reject) => {
del<pond.RemoveComponentResponse>(url).then(resp => {
resp.data = pond.RemoveComponentResponse.fromObject(resp)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getComponent = (device: number, component: string, keys?: string[], types?: string[]) => {
@ -222,7 +246,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
("&types=" + t) +
(as ? "&as=" + as : "")
);
return get(url);
return new Promise<AxiosResponse<pond.Component>>((resolve, reject) => {
get<pond.Component>(url).then(resp => {
resp.data = pond.Component.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listComponents = (
@ -250,13 +281,26 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(comprehensive ? "&comprehensive=" + comprehensive.toString() : ""),
demo
);
return get<pond.ListComponentsResponse>(url);
return new Promise<AxiosResponse<pond.ListComponentsResponse>>((resolve, reject) => {
get<pond.ListComponentsResponse>(url).then(resp => {
resp.data = pond.ListComponentsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listComponentsForObject = (keys: string[], types: string[]) => {
return get<pond.ListComponentsResponse>(
pondURL("/components/forObject?keys=" + keys + "&types=" + types + (as ? "&as=" + as : ""))
);
let url = pondURL("/components/forObject?keys=" + keys + "&types=" + types + (as ? "&as=" + as : ""))
return new Promise<AxiosResponse<pond.ListComponentsResponse>>((resolve, reject) => {
get<pond.ListComponentsResponse>(url).then(resp => {
resp.data = pond.ListComponentsResponse.fromObject(resp.data)
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const listComponentCardData = (
@ -284,7 +328,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types : "&types=" + ["device"]),
demo
);
return get<pond.ListComponentCardDataResponse>(url);
return new Promise<AxiosResponse<pond.ListComponentCardDataResponse>>((resolve,reject)=>{
get<pond.ListComponentCardDataResponse>(url).then(resp => {
resp.data = pond.ListComponentCardDataResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listHistory = (
@ -295,8 +346,7 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return get<pond.ListComponentHistoryResponse>(
pondURL(
let url = pondURL(
"/devices/" +
deviceId +
"/components/" +
@ -308,7 +358,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys : "&keys=" + [deviceId.toString()]) +
(types ? "&types=" + types : "&types=" + ["device"])
)
);
return new Promise<AxiosResponse<pond.ListComponentHistoryResponse>>((resolve,reject) => {
get<pond.ListComponentHistoryResponse>(url).then(resp => {
resp.data = pond.ListComponentHistoryResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listMeasurements = (
@ -346,7 +403,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types : "&types=" + ["device"]),
demo
);
return get(url);
return new Promise<AxiosResponse<pond.ListMeasurementsResponse>>((resolve,reject) => {
return get<pond.ListMeasurementsResponse>(url).then(resp => {
resp.data = pond.ListMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const sampleMeasurements = (
@ -373,7 +437,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types : "&types=" + ["device"]),
demo
);
return get(url);
return new Promise<AxiosResponse<pond.SampleMeasurementsResponse>>((resolve, reject) => {
get<pond.SampleMeasurementsResponse>(url).then(resp => {
resp.data = pond.SampleMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const sampleUnitMeasurements = (
@ -402,7 +473,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(showErrors ? "&showErrors=true" : "&showErrors=false"),
demo
);
return get<pond.SampleUnitMeasurementsResponse>(url);
return new Promise<AxiosResponse<pond.SampleUnitMeasurementsResponse>>((resolve, reject) => {
get<pond.SampleUnitMeasurementsResponse>(url).then(resp => {
resp.data = pond.SampleUnitMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateComponentPreferences = (
@ -421,7 +499,13 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(keys ? "?keys=" + keys : "?keys=" + [id.toString()]) +
(types ? "&types=" + types : "&types=" + ["device"])
);
return put(url, preferences);
return new Promise<AxiosResponse>((resolve, reject) => {
put(url, preferences).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listUnitMeasurements = (
@ -456,7 +540,14 @@ export default function ComponentProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types : "&types=" + ["device"]) +
(showErrors ? "&showErrors=true" : "&showErrors=false")
);
return get<pond.ListUnitMeasurementsResponse>(url);
return new Promise<AxiosResponse<pond.ListUnitMeasurementsResponse>>((resolve,reject) => {
get<pond.ListUnitMeasurementsResponse>(url).then(resp => {
resp.data = pond.ListUnitMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -8,18 +8,19 @@ import { AxiosResponse } from "axios";
import { useGlobalState } from "providers";
import moment from "moment";
import { or } from "utils/types";
import { reject, result } from "lodash";
export interface IDeviceAPIContext {
add: (name: string, description: string, backpack: pond.BackpackSettings) => Promise<any>;
update: (id: number, settings: pond.DeviceSettings) => Promise<any>;
remove: (id: number) => Promise<any>;
get: (id: number | string, demo?: boolean, keys?: string[], types?: string[]) => Promise<any>;
add: (name: string, description: string, backpack: pond.BackpackSettings) => Promise<AxiosResponse<pond.AddDeviceResponse>>;
update: (id: number, settings: pond.DeviceSettings) => Promise<AxiosResponse<pond.UpdateDeviceResponse>>;
remove: (id: number) => Promise<AxiosResponse<pond.RemoveDeviceResponse>>;
get: (id: number | string, demo?: boolean, keys?: string[], types?: string[]) => Promise<AxiosResponse<pond.Device>>
getPageData: (
id: number | string,
keys?: string[],
types?: string[]
) => Promise<AxiosResponse<pond.GetDevicePageDataResponse>>;
getMulti: (ids: number[] | string[]) => Promise<any>;
getMulti: (ids: number[] | string[]) => Promise<AxiosResponse<pond.GetMultiDeviceResponse>>;
getGeoJson: (id: number | string, demo?: boolean) => Promise<any>;
getMultiGeoJson: (ids: number[] | string[]) => Promise<any>;
list: (
@ -66,7 +67,7 @@ export interface IDeviceAPIContext {
preferences: pond.DeviceComponentPreferences,
keys?: string[],
types?: string[]
) => Promise<any>;
) => Promise<AxiosResponse<pond.UpdateDeviceComponentPreferencesResponse>>;
listDeviceComponentPreferences: (
id: number | string,
keys?: string[],
@ -77,7 +78,7 @@ export interface IDeviceAPIContext {
status: pond.DeviceStatus,
keys?: string[],
types?: string[]
) => Promise<any>;
) => Promise<AxiosResponse<pond.UpdateDeviceStatusResponse>>;
sync: (id: number) => Promise<any>;
clearPending: (id: number) => Promise<any>;
pause: (id: number) => Promise<any>;
@ -149,8 +150,16 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
const [{ as, team }] = useGlobalState();
const add = (name: string, description: string, backpack: pond.BackpackSettings) => {
if (as) return post(pondURL("/devices?as=" + as), { name, description, backpack });
return post(pondURL("/devices"), { name, description, backpack });
let url = pondURL("/devices")
if (as) url = pondURL("/devices?as=" + as)
return new Promise<AxiosResponse<pond.AddDeviceResponse>>((resolve, reject) => {
post<pond.AddDeviceResponse>(url, { name, description, backpack }).then(resp => {
resp.data = pond.AddDeviceResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getDevice = (
@ -159,42 +168,43 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
if (as && !(types && types.length > 0 && types[0] === "team"))
return get(
pondURL(
let url = pondURL(
"/devices/" +
id +
"?as=" +
as +
(as ? "?as=" + as : "") +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : ""),
demo
)
);
const url = pondURL(
"/devices/" +
id +
(keys ? "?keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : ""),
demo
);
return get(url);
return new Promise<AxiosResponse<pond.Device>>((resolve, response) => {
get<pond.Device>(url).then(resp => {
resp.data = pond.Device.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const statistics = (
keys?: string[],
types?: string[]
) => {
let url = pondURL("/deviceStatistics");
if (types && types.length > 0 && types[0] === "team")
return get(
pondURL(
url = pondURL(
"/deviceStatistics/" +
(keys ? "?keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
const url = pondURL("/deviceStatistics");
return get<pond.GetDeviceStatisticsResponse>(url);
return new Promise<AxiosResponse<pond.GetDeviceStatisticsResponse>>((resolve, reject) => {
get<pond.GetDeviceStatisticsResponse>(url).then(resp => {
resp.data = pond.GetDeviceStatisticsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getDevicePageData = (
@ -202,8 +212,13 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
): Promise<AxiosResponse<pond.GetDevicePageDataResponse>> => {
if (as && !(types && types.length > 0 && types[0] === "team"))
return get(
let url = pondURL(
"/devicePageData/" +
id +
(keys ? "?keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
);
if (as && !(types && types.length > 0 && types[0] === "team")) {
pondURL(
"/devicePageData/" +
id +
@ -212,20 +227,27 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
const url = pondURL(
"/devicePageData/" +
id +
(keys ? "?keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
);
return get<pond.GetDevicePageDataResponse>(url);
}
return new Promise<AxiosResponse<pond.GetDevicePageDataResponse>>((resolve, reject) => {
get<pond.GetDevicePageDataResponse>(url).then(resp => {
resp.data = pond.GetDevicePageDataResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getDeviceGeoJSON = (id: number | string, demo: boolean = false) => {
if (as) return get(pondURL("/devices/" + id + "/geojson?as=" + as, demo));
const url = pondURL("/devices/" + id + "/geojson", demo);
return get(url);
let url = pondURL("/devices/" + id + "/geojson", demo);
if (as) url = pondURL("/devices/" + id + "/geojson?as=" + as, demo)
return new Promise<AxiosResponse>((resolve, reject) => {
get(url).catch(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getMulti = (ids: number[] | string[]) => {
@ -237,8 +259,15 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
idString = idString + "," + id;
}
});
if (as) return get(pondURL("/multidevices?devices=" + idString + "&as=" + as));
return get(pondURL("/multidevices?devices=" + idString));
let url = pondURL("/multidevices?devices=" + idString + (as ? "&as=" + as : ""))
return new Promise<AxiosResponse<pond.GetMultiDeviceResponse>>((resolve, reject) => {
get<pond.GetMultiDeviceResponse>(url).then(resp => {
resp.data = pond.GetMultiDeviceResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getMultiDevicesGeoJSON = (ids: number[] | string[]) => {
@ -250,8 +279,14 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
idString = idString + "," + id;
}
});
if (as) return get(pondURL("/geojson/devices?devices=" + idString + "&as=" + as));
return get(pondURL("/geojson/devices?devices=" + idString));
let url = pondURL("/geojson/devices?devices=" + idString + (as ? "&as=" + as : ""))
return new Promise<AxiosResponse>((resolve, reject) => {
get(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const list = (
@ -288,7 +323,14 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
);
return get<pond.ListDevicesResponse>(url);
return new Promise<AxiosResponse<pond.ListDevicesResponse>>((resolve, reject)=>{
get<pond.ListDevicesResponse>(url).then(resp => {
resp.data = pond.ListDevicesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
});
})
};
const listForUser = (
@ -307,36 +349,67 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
);
return get<pond.ListDevicesResponse>(url);
return new Promise<AxiosResponse<pond.ListDevicesResponse>>((resolve, reject) => {
get<pond.ListDevicesResponse>(url).then(resp => {
resp.data = pond.ListDevicesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const remove = (id: number) => {
if (as) return del(pondURL("/devices/" + id + "?as=" + as));
const url = pondURL("/devices/" + id);
return del(url);
const url = pondURL("/devices/" + id + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.RemoveDeviceResponse>>((resolve, reject) => {
del<pond.RemoveDeviceResponse>(url).then(resp => {
resp.data = pond.RemoveDeviceResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const update = (id: number, settings: pond.DeviceSettings) => {
if (as) return put(pondURL(`/devices/${id}/update?as=${as}`), settings);
const url = pondURL("/devices/" + id + "/update");
return put(url, settings);
const url = pondURL("/devices/" + id + "/update" + (as ? "?as=" + as : ""));
return new Promise<AxiosResponse<pond.UpdateDeviceResponse>>((resolve, reject) => {
put<pond.UpdateDeviceResponse>(url, settings).then(resp => {
resp.data = pond.UpdateDeviceResponse.fromObject(resp)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const claim = (id: number | Long, body: any) => {
return put(pondURL("/devices/" + id), body);
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/devices/" + id), body).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listHistory = (id: number, limit: number, offset: number) => {
return get(pondURL("/devices/" + id + "/history?limit=" + limit + "&offset=" + offset));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + id + "/history?limit=" + limit + "&offset=" + offset)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listCompleteHistory = (
id: number,
limit: number,
offset: number,
filters?: pond.ObjectType[]
) => {
return get<pond.ListCompleteHistoryResponse>(
pondURL(
let url = pondURL(
"/devices/" +
id +
"/completehistory?limit=" +
@ -345,7 +418,14 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
offset +
(filters ? "&sources=" + filters.toString() : "")
)
);
return new Promise<AxiosResponse<pond.ListCompleteHistoryResponse>>((resolve, reject) => {
get<pond.ListCompleteHistoryResponse>(url).then(resp => {
resp.data = pond.ListCompleteHistoryResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateDevicePermissions = (id: number | string, users: User[]) => {
@ -358,8 +438,7 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return put(
pondURL(
let url = pondURL(
"/devices/" +
id +
"/preferences" +
@ -367,9 +446,14 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
or(as, "") +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
),
preferences
);
)
return new Promise<AxiosResponse>((resolve, reject) => {
put(url,preferences).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateComponentPreferences = (
@ -379,8 +463,7 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return put(
pondURL(
let url = pondURL(
"/devices/" +
id +
"/components/" +
@ -390,9 +473,15 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
as +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
),
preferences
);
)
return new Promise<AxiosResponse<pond.UpdateDeviceComponentPreferencesResponse>>((resolve, reject) => {
put<pond.UpdateDeviceComponentPreferencesResponse>(url, preferences).then(resp => {
resp.data = pond.UpdateDeviceComponentPreferencesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listDeviceComponentPreferences = (
@ -400,8 +489,7 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return get<pond.ListDeviceComponentPreferencesResponse>(
pondURL(
let url = pondURL(
"/devices/" +
id +
"/componentPreferences?as=" +
@ -409,7 +497,14 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
return new Promise<AxiosResponse<pond.ListDeviceComponentPreferencesResponse>>((resolve, reject) => {
get<pond.ListDeviceComponentPreferencesResponse>(url).then(resp => {
resp.data = pond.ListDeviceComponentPreferencesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateStatus = (
@ -418,8 +513,7 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return put(
pondURL(
let url = pondURL(
"/devices/" +
id +
"/updateStatus" +
@ -427,43 +521,85 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
as +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
),
status
);
)
return new Promise<AxiosResponse<pond.UpdateDeviceStatusResponse>>((resolve, reject) => {
put<pond.UpdateDeviceStatusResponse>(url, status).then(resp => {
resp.data = pond.UpdateDeviceStatusResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const sync = (id: number) => {
return post(pondURL("/devices/" + id + "/sync"), {});
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/sync"), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const clearPending = (id: number) => {
return post(pondURL("/devices/" + id + "/clearPending"), {});
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/clearPending"), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const pause = (id: number) => {
return post(pondURL("/devices/" + id + "/pause"), {});
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/pause"), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const bulkPause = (ids: number[], setPaused: boolean) => {
return post<pond.BulkPauseDeviceResponse>(
pondURL(
let url = pondURL(
"/bulkPauseDevices?ids=" +
ids.toString() +
(setPaused ? "&pause=" + setPaused.toString() : "")
),
{}
);
)
return new Promise<AxiosResponse<pond.BulkPauseDeviceResponse>>((resolve, reject) => {
post<pond.BulkPauseDeviceResponse>(url,{}).then(resp => {
resp.data = pond.BulkPauseDeviceResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const bulkChangeDataCaps = (ids: number[], newCap: number) => {
return post<pond.BulkChangeDataCapsResponse>(
return new Promise<AxiosResponse<pond.BulkChangeDataCapsResponse>>((resolve, reject) => {
post<pond.BulkChangeDataCapsResponse>(
pondURL("/bulkChangeDataCap?ids=" + ids.toString() + "&dataCap=" + newCap),
{}
);
).then(resp => {
resp.data = pond.BulkChangeDataCapsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const resume = (id: number) => {
return post(pondURL("/devices/" + id + "/resume"), {});
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/resume"), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getUpgradeStatus = (id: number, keys?: string[], types?: string[]) => {
@ -472,15 +608,33 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
a = as ? a + "&keys=" + keys + "&types=" + types : "?keys=" + keys + "&types=" + types;
}
let url = pondURL("/devices/" + id + "/firmware" + a);
return get(url);
return new Promise<AxiosResponse>((resolve, reject) => {
get(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const loadBackpack = (id: number, backpack: number) => {
return put(pondURL("/devices/" + id + "/load/" + backpack), {});
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/devices/" + id + "/load/" + backpack), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const setTags = (id: number, tags: string[]) => {
return put(pondURL("/devices/" + id + "/tags"), { tags });
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/devices/" + id + "/tags"), { tags }).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const setWifi = (
@ -494,31 +648,73 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
if (keys && keys.length > 0 && types && types.length > 0) {
a = as ? a + "&keys=" + keys + "&types=" + types : "?keys=" + keys + "&types=" + types;
}
return put(pondURL("/devices/" + id + "/wifi" + a), { gateway, password });
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/devices/" + id + "/wifi" + a), { gateway, password }).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const tag = (id: number, tag: string) => {
return put(pondURL("/devices/" + id + "/tags/" + tag), {});
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/devices/" + id + "/tags/" + tag), {}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const untag = (id: number, tag: string) => {
return del(pondURL("/devices/" + id + "/tags/" + tag));
return new Promise<AxiosResponse>((resolve, reject) => {
del(pondURL("/devices/" + id + "/tags/" + tag)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getDatacap = (id: number) => {
return get(pondURL("/devices/" + id + "/datacap/"));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + id + "/datacap/")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const isOverLimit = (id: number) => {
return get(pondURL("/devices/" + id + "/overlimit/"));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + id + "/overlimit/")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const isPaused = (id: number) => {
return get(pondURL("/devices/" + id + "/paused/"));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + id + "/paused/")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const setDatacap = (id: number, newCap: number) => {
return post(pondURL("/devices/" + id + "/datacap?limit=" + newCap));
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/datacap?limit=" + newCap)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getDataUsage = (id: number, start?: any) => {
@ -527,7 +723,13 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
} else {
start = "";
}
return get(pondURL("/devices/" + id + "/usage/" + start));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + id + "/usage/" + start)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
// const listJSONMeasurements = (
@ -591,26 +793,57 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
// };
const listSimpleJSON = (device: number) => {
return get(pondURL("/devices/" + device + "/measurements/exportSimple"));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/devices/" + device + "/measurements/exportSimple")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const resetQuackCount = (id: number) => {
return post(pondURL("/devices/" + id + "/resetCounts"));
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/resetCounts")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const resetQuackCountTx = (id: number) => {
return post(pondURL("/devices/" + id + "/resetCountTx"));
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/resetCountTx")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const resetQuackCountTx1000 = (id: number) => {
return post(pondURL("/devices/" + id + "/partialResetCountTx"));
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/devices/" + id + "/partialResetCountTx")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const linearMutation = (id: number, mutation: pond.LinearMutation) => {
return post<pond.DeviceLinearMutationResponse>(
return new Promise<AxiosResponse<pond.DeviceLinearMutationResponse>>((resolve, reject) => {
post<pond.DeviceLinearMutationResponse>(
pondURL("/devices/" + id + "/linearMutation"),
mutation
);
).then(resp => {
resp.data = pond.DeviceLinearMutationResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const buyData = (
@ -625,7 +858,13 @@ export default function DeviceProvider(props: PropsWithChildren<Props>) {
if (source) url = url + "&source=" + source;
if (keys) url = url + "&keys=" + keys;
if (types) url = url + "&types=" + types;
return put(pondURL(url));
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL(url)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -72,10 +72,15 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState();
const addGate = (name: string, settings: pond.GateSettings) => {
if (as) {
return post<pond.AddGateResponse>(pondURL("/gates?name=" + name + "&as=" + as), settings);
}
return post<pond.AddGateResponse>(pondURL("/gates?name=" + name + "&as=" + as), settings);
let url = pondURL("/gates?name=" + name + (as ? "&as=" + as : ""))
return new Promise<AxiosResponse<pond.AddGateResponse>>((resolve, reject) => {
post<pond.AddGateResponse>(url, settings).then(resp => {
resp.data = pond.AddGateResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listGates = (
@ -93,8 +98,7 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
let asText = "";
if (as) asText = "&as=" + as;
if (specificUser) asText = "&as=" + specificUser;
return get<pond.ListGatesResponse>(
pondURL(
let url = pondURL(
"/gates?limit=" +
limit +
"&offset=" +
@ -108,38 +112,62 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
(types ? "&types=" + types.toString() : "") +
asText
)
);
return new Promise<AxiosResponse<pond.ListGatesResponse>>((resolve, reject) => {
get<pond.ListGatesResponse>(url).then(resp => {
resp.data = pond.ListGatesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateGate = (key: string, name: string, settings: pond.GateSettings) => {
if (as) {
return put<pond.UpdateGateResponse>(
pondURL("/gates/" + key + "?as=" + as + "&name=" + name),
settings
);
}
return put<pond.UpdateGateResponse>(pondURL("/gates/" + key + "?name=" + name), settings);
let url = pondURL("/gates/" + key + "?name=" + name + (as ? "&as=" + as : ""))
return new Promise<AxiosResponse<pond.UpdateGateResponse>>((resolve, reject) => {
put<pond.UpdateGateResponse>(url, settings).then(resp => {
resp.data = pond.UpdateGateResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeGate = (key: string) => {
if (as) {
return del<pond.RemoveGateResponse>(pondURL("/gates/" + key + "?as=" + as));
}
return del<pond.RemoveGateResponse>(pondURL("/gates/" + key + "?as=" + as));
let url = pondURL("/gates/" + key + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.RemoveGateResponse>>((resolve, reject) => {
del<pond.RemoveGateResponse>(url).then(resp => {
resp.data = pond.RemoveGateResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getGate = (key: string) => {
if (as) {
return get<pond.GetGateResponse>(pondURL("/gates/" + key + "?as=" + as));
}
return get<pond.GetGateResponse>(pondURL("/gates/" + key));
let url = pondURL("/gates/" + key + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.GetGateResponse>>((resolve, reject) => {
get<pond.GetGateResponse>(url).then(resp => {
resp.data = pond.GetGateResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getGatePageData = (key: string) => {
if (as) {
return get<pond.GetGatePageDataResponse>(pondURL("/gatePage/" + key + "?as=" + as));
}
return get<pond.GetGatePageDataResponse>(pondURL("/gatePage/" + key));
let url = pondURL("/gatePage/" + key + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.GetGatePageDataResponse>>((resolve, reject) => {
get<pond.GetGatePageDataResponse>(url).then(resp => {
resp.data = pond.GetGatePageDataResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateLink = (
@ -149,21 +177,21 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
objectType: string,
permissions: string[]
) => {
if (as)
return post(pondURL(`/gates/` + parentID + `/link?as=${as}`), {
let url = pondURL(`/gates/` + parentID + "/link" + (as ? `?as=${as}` : ""))
return new Promise<AxiosResponse>((resolve, reject) => {
post(url, {
Key: objectID,
Type: objectType,
Parent: parentID,
ParentType: parentType,
Permissions: permissions
});
return post(pondURL(`/gates/` + parentID + `/link`), {
Key: objectID,
Type: objectType,
Parent: parentID,
ParentType: parentType,
Permissions: permissions
});
}).then(resp => {
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const updatePrefs = (
@ -174,9 +202,7 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
if (as) {
return put<pond.UpdateGatePreferencesResponse>(
pondURL(
let url = pondURL(
`/gatePrefs/` +
gateKey +
"?childType=" +
@ -185,27 +211,18 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
childKey +
"&gatePreference=" +
gatePref +
`&as=` +
as +
(as ? `&as=` + as : "") +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
}
return put<pond.UpdateGatePreferencesResponse>(
pondURL(
`/gatePrefs/` +
gateKey +
"?childType=" +
childType +
"&childKey=" +
childKey +
"&gatePreference=" +
gatePref +
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
return new Promise<AxiosResponse<pond.UpdateGatePreferencesResponse>>((resolve, reject) => {
put<pond.UpdateGatePreferencesResponse>(url).then(resp => {
resp.data = pond.UpdateGatePreferencesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listGateAirflow = (
@ -218,8 +235,7 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
keys?: string[],
types?: string[]
) => {
return get<pond.ListGateAirflowResponse>(
pondURL(
let url = pondURL(
"/gates/" +
gate +
"/airflow?device=" +
@ -236,13 +252,26 @@ export default function GateProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
)
);
return new Promise<AxiosResponse<pond.ListGateAirflowResponse>>((resolve, reject) => {
get<pond.ListGateAirflowResponse>(url).then(resp => {
resp.data = pond.ListGateAirflowResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listGateMeasurements = (key: string, start: string, end: string) => {
return get<pond.ListGateMeasurementsResponse>(
pondURL("/gates/" + key + "/measurements?start=" + start + "&end=" + end + "&as=" + as)
);
let url = pondURL("/gates/" + key + "/measurements?start=" + start + "&end=" + end + "&as=" + as)
return new Promise<AxiosResponse<pond.ListGateMeasurementsResponse>>((resolve, reject) => {
get<pond.ListGateMeasurementsResponse>(url).then(resp => {
resp.data = pond.ListGateMeasurementsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -30,7 +30,7 @@ export interface IGroupAPIContext {
asRoot?: boolean,
keys?: string[],
types?: string[],
) => Promise<any>;
) => Promise<AxiosResponse<pond.ListGroupsResponse>>;
listGroupDevices: (
id: number,
limit: number,
@ -53,35 +53,75 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState();
const addGroup = (group: pond.GroupSettings) => {
if (as) return post(pondURL("/groups?as=" + as), group);
return post(pondURL("/groups"), group);
let url = pondURL("/groups")
if (as) url = pondURL("/groups?as=" + as)
return new Promise<AxiosResponse>((resolve, reject) => {
post(url, group).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const addDevice = (group: number, device: number) => {
let url = "/groups/" + group + "/devices/" + device + "/add";
if (as) return post(pondURL(url + as), group);
return post(pondURL(url), group);
if (as) url = pondURL(url + as)
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL(url), group).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeDevice = (group: number, device: number) => {
let url = "/groups/" + group + "/devices/" + device + "/remove";
if (as) return post(pondURL(url + as), group);
return post(pondURL(url), group);
if (as) url = pondURL(url + as)
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL(url), group).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateGroup = (id: number, group: pond.GroupSettings) => {
if (as) return put(pondURL("/groups/" + id + "?as=" + as), group);
return put(pondURL("/groups/" + id), group);
let url = pondURL("/groups/" + id)
if (as) url = pondURL("/groups/" + id + "?as=" + as)
return new Promise<AxiosResponse>((resolve, reject) => {
put(url, group).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeGroup = (id: number) => {
if (as) return del(pondURL("/groups/" + id + "?as=" + as));
return del(pondURL("/groups/" + id));
let url = pondURL("/groups/" + id)
if (as) url = pondURL("/groups/" + id + "?as=" + as)
return new Promise<AxiosResponse>((resolve, reject) => {
del(url).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getGroup = (id: number) => {
let url = pondURL("/groups/" + id)
if (as) return get(pondURL("/groups/" + id + "?as=" + as));
return get(pondURL("/groups/" + id));
return new Promise<AxiosResponse>((resolve, reject) => {
get(url).then(resp => {
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const getGroupAndPermissions = (
@ -102,7 +142,14 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
(keys ? "?keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
}
return get<pond.GetGroupAndPermissionsResponse>(pondURL(url));
return new Promise<AxiosResponse<pond.GetGroupAndPermissionsResponse>>((resolve, reject) => {
get<pond.GetGroupAndPermissionsResponse>(pondURL(url)).then(resp => {
resp.data = pond.GetGroupAndPermissionsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getGroupPermissions = (
@ -148,12 +195,11 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
types = types? types : getContextTypes();
types.forEach((type, index) => {
if (type === "group") {
types.splice(index, 1)
keys.splice(index, 1)
types && types.splice(index, 1)
keys && keys.splice(index, 1)
}
})
return get(
pondURL(
let url = pondURL(
"/groups" +
"?limit=" +
limit +
@ -167,7 +213,14 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
(keys.length > 0 ? "&keys=" + keys : "") +
(types.length > 0 ? "&types=" + types : "")
)
);
return new Promise<AxiosResponse<pond.ListGroupsResponse>>((resolve, reject) => {
get<pond.ListGroupsResponse>(url).then(resp => {
resp.data = pond.ListGroupsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listGroupDevices = (
@ -178,8 +231,7 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
search?: string,
comprehensive: boolean = false
) => {
return get<pond.GetMultiDeviceResponse>(
pondURL(
let url = pondURL(
"/groups/" +
id +
"/devices?limit=" +
@ -192,7 +244,14 @@ export default function GroupProvider(props: PropsWithChildren<Props>) {
(comprehensive ? "&comprehensive=" + comprehensive.toString() : "") +
(as ? "&as=" + as.toString() : "")
)
);
return new Promise<AxiosResponse<pond.GetMultiDeviceResponse>>((resolve, reject) => {
get<pond.GetMultiDeviceResponse>(url).then(resp => {
resp.data = pond.GetMultiDeviceResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateGroupPermissions = (id: number, users: User[]) => {

View file

@ -10,19 +10,19 @@ import { has } from "utils/types";
import { pondURL } from "./pond";
export interface IInteractionsAPIContext {
addInteraction: (device: number, settings: pond.IInteractionSettings) => Promise<any>;
addMultiInteractions: (device: number, settings: pond.MultiInteractionSettings) => Promise<any>;
addInteraction: (device: number, settings: pond.IInteractionSettings) => Promise<AxiosResponse<pond.AddInteractionResponse>>;
addMultiInteractions: (device: number, settings: pond.MultiInteractionSettings) => Promise<AxiosResponse<pond.AddMultiInteractionsResponse>>;
addInteractionToComponents: (
fullComponentLocations: string[],
settings: pond.IInteractionSettings
) => Promise<AxiosResponse<pond.AddInteractionToComponentsResponse>>;
updateInteraction: (device: number, settings: pond.IInteractionSettings) => Promise<any>;
updateInteraction: (device: number, settings: pond.IInteractionSettings) => Promise<AxiosResponse<pond.UpdateInteractionResponse>>;
updateInteractionPondSettings: (
device: number,
interaction: string,
settings: pond.IInteractionPondSettings
) => Promise<any>;
removeInteraction: (device: number, interaction: string) => Promise<any>;
) => Promise<AxiosResponse<pond.UpdateInteractionPondSettingsResponse>>;
removeInteraction: (device: number, interaction: string) => Promise<AxiosResponse<pond.RemoveInteractionResponse>>;
listInteractionsByDevice: (device: number | string, demo?: boolean) => Promise<Interaction[]>;
listInteractionsByComponent: (
device: number,
@ -59,10 +59,17 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState();
const addInteraction = (device: number, settings: pond.IInteractionSettings) => {
return post(
return new Promise<AxiosResponse<pond.AddInteractionResponse>>((resolve, reject) => {
post<pond.AddInteractionResponse>(
pondURL("/devices/" + device + "/interactions" + (as ? "?as=" + as : "")),
sanitizeInteraction(settings)
);
).then(resp => {
resp.data = pond.AddInteractionResponse.fromObject(resp)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
/**
@ -75,27 +82,36 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
fullComponentLocations: string[],
settings: pond.IInteractionSettings
) => {
return post<pond.AddInteractionToComponentsResponse>(
pondURL(
let url = pondURL(
"/interactions/forComponents/" +
"?componentIds=" +
fullComponentLocations.toString() +
(as ? "&as=" + as : "")
),
sanitizeInteraction(settings)
);
)
return new Promise<AxiosResponse<pond.AddInteractionToComponentsResponse>>((resolve, reject) => {
post<pond.AddInteractionToComponentsResponse>(url,sanitizeInteraction(settings)).then(resp => {
resp.data = pond.AddInteractionToComponentsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const addMultiInteractions = (device: number, settings: pond.MultiInteractionSettings) => {
return post(
pondURL("/devices/" + device + "/interactions/multi" + (as ? "?as=" + as : "")),
settings
);
let url = pondURL("/devices/" + device + "/interactions/multi" + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.AddMultiInteractionsResponse>>((resolve, reject) => {
post<pond.AddMultiInteractionsResponse>(url,settings).then(resp => {
resp.data = pond.AddMultiInteractionsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateInteraction = (device: number, settings: pond.IInteractionSettings) => {
return put(
pondURL(
let url = pondURL(
"/devices/" +
device +
"/interactions?keys=" +
@ -103,9 +119,15 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
"&types=" +
["device"] +
(as ? "&as=" + as : "")
),
sanitizeInteraction(settings)
);
)
return new Promise<AxiosResponse<pond.UpdateInteractionResponse>>((resolve, reject) => {
put<pond.UpdateInteractionResponse>(url,sanitizeInteraction(settings)).then(resp => {
resp.data = pond.UpdateInteractionResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateInteractionPondSettings = (
@ -113,8 +135,7 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
interaction: string,
settings: pond.IInteractionPondSettings
) => {
return put(
pondURL(
let url = pondURL(
"/devices/" +
device +
"/interactions/" +
@ -124,15 +145,28 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
"&types=" +
["device"] +
(as ? "&as=" + as : "")
),
sanitizeInteraction(settings)
);
)
return new Promise<AxiosResponse<pond.UpdateInteractionPondSettingsResponse>>((resolve, reject) => {
put<pond.UpdateInteractionPondSettingsResponse>(url, sanitizeInteraction(settings)).then(resp => {
resp.data = pond.UpdateInteractionPondSettingsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeInteraction = (device: number, interaction: string) => {
return del(
pondURL("/devices/" + device + "/interactions/" + interaction + (as ? "?as=" + as : ""))
);
let url = pondURL("/devices/" + device + "/interactions/" + interaction + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.RemoveInteractionResponse>>((resolve, reject) => {
del<pond.RemoveInteractionResponse>(url).then(resp => {
resp.data = pond.RemoveInteractionResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listInteractionsByDevice = (
@ -223,10 +257,15 @@ export default function InteractionProvider(props: PropsWithChildren<Props>) {
const setAlertInteractions = (
alerts: pond.AlertData[]
): Promise<AxiosResponse<pond.SetAlertInteractionsResponse>> => {
return post<pond.SetAlertInteractionsResponse>(
pondURL("/interactions/setAlerts" + (as ? "?as=" + as : "")),
{ data: alerts }
);
let url = pondURL("/interactions/setAlerts" + (as ? "?as=" + as : ""))
return new Promise<AxiosResponse<pond.SetAlertInteractionsResponse>>((resolve, reject) => {
post<pond.SetAlertInteractionsResponse>(url, { data: alerts }).then(resp => {
resp.data = pond.SetAlertInteractionsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -6,7 +6,7 @@ import { pondURL } from "./pond";
export interface INoteAPIContext {
addNote: (note: pond.NoteSettings, attachments?: string[]) => Promise<any>;
getNote: (noteID: string) => Promise<any>;
getNote: (noteID: string) => Promise<AxiosResponse<pond.Note>>;
updateNote: (note: pond.NoteSettings) => Promise<any>;
listNotes: (
limit: number,
@ -38,22 +38,45 @@ export default function NoteProvider(props: PropsWithChildren<Props>) {
const { get, del, post, put } = useHTTP();
const addNote = (note: pond.NoteSettings, attachments?: string[]) => {
return post(
pondURL("/notes" + (attachments ? "?attachments=" + attachments.toString() : "")),
note
);
let url = pondURL("/notes" + (attachments ? "?attachments=" + attachments.toString() : ""))
return new Promise<AxiosResponse>((resolve, reject) => {
post(url, note).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getNote = (noteID: string) => {
return get(pondURL("/notes/" + noteID));
return new Promise<AxiosResponse<pond.Note>>((resolve, reject) => {
get<pond.Note>(pondURL("/notes/" + noteID)).then(resp => {
resp.data = pond.Note.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateNote = (note: pond.NoteSettings) => {
return put(pondURL("/notes/"), note);
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/notes/"), note).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeNote = (key: string) => {
return del<pond.RemoveNoteResponse>(pondURL("/notes/" + key));
return new Promise<AxiosResponse>((resolve, reject) => {
del<pond.RemoveNoteResponse>(pondURL("/notes/" + key)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listNotes = (
@ -65,8 +88,7 @@ export default function NoteProvider(props: PropsWithChildren<Props>) {
asRoot?: boolean,
as?: string
) => {
return get<pond.ListNotesResponse>(
pondURL(
let url = pondURL(
"/notes" +
"?limit=" +
limit +
@ -78,7 +100,14 @@ export default function NoteProvider(props: PropsWithChildren<Props>) {
(asRoot ? "&asRoot=" + asRoot.toString() : "") +
(as ? "&as=" + as : "")
)
);
return new Promise<AxiosResponse<pond.ListNotesResponse>>((resolve, reject) => {
get<pond.ListNotesResponse>(url).then(resp => {
resp.data = pond.ListNotesResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listChats = (
@ -90,8 +119,7 @@ export default function NoteProvider(props: PropsWithChildren<Props>) {
asRoot?: boolean,
as?: string
) => {
return get<pond.ListChatsResponse>(
pondURL(
let url = pondURL(
"/chats" +
"?limit=" +
limit +
@ -103,7 +131,14 @@ export default function NoteProvider(props: PropsWithChildren<Props>) {
(asRoot ? "&asRoot=" + asRoot.toString() : "") +
(as ? "&as=" + as : "")
)
);
return new Promise<AxiosResponse<pond.ListChatsResponse>>((resolve, reject) => {
get<pond.ListChatsResponse>(url).then(resp => {
resp.data = pond.ListChatsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -47,8 +47,7 @@ export default function NotificationProvider(props: PropsWithChildren<Props>) {
as?: string,
asRoot?: boolean
) => {
return get<pond.ListNotificationsResponse>(
pondURL(
let url = pondURL(
"/notifications" +
"?limit=" +
limit +
@ -60,7 +59,14 @@ export default function NotificationProvider(props: PropsWithChildren<Props>) {
(asRoot ? "&asRoot=" + asRoot.toString() : "") +
(search ? "&search=" + search : "")
)
);
return new Promise<AxiosResponse<pond.ListNotificationsResponse>>((resolve, reject) => {
get<pond.ListNotificationsResponse>(url).then(resp => {
resp.data = pond.ListNotificationsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listObjectNotifications = (
@ -73,8 +79,7 @@ export default function NotificationProvider(props: PropsWithChildren<Props>) {
search?: string,
as?: string
) => {
return get<pond.ListObjectNotificationsResponse>(
pondURL(
let url = pondURL(
"/object/notifications" +
"?objectKey=" +
key +
@ -89,14 +94,26 @@ export default function NotificationProvider(props: PropsWithChildren<Props>) {
(search ? "&search=" + search : "") +
(as ? "&as=" + as : "")
)
);
return new Promise<AxiosResponse<pond.ListObjectNotificationsResponse>>((resolve, reject) => {
get<pond.ListObjectNotificationsResponse>(url).then(resp => {
resp.data = pond.ListObjectNotificationsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const hideNotification = (keys: string[]) => {
return put<pond.HideNotificationResponse>(
pondURL("/notifications/hide"),
pond.NotificationKeys.create({ keys: keys })
);
let url = pondURL("/notifications/hide")
return new Promise<AxiosResponse<pond.HideNotificationResponse>>((resolve, reject) => {
put<pond.HideNotificationResponse>(url,pond.NotificationKeys.create({ keys: keys })).then(resp => {
resp.data = pond.HideNotificationResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -45,11 +45,23 @@ export default function PermissionProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState();
const getPermissions = (user: string, scope: Scope) => {
return get(pondURL("/users/" + user + "/permissions" + objectQueryParams(scope)));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/users/" + user + "/permissions" + objectQueryParams(scope))).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removePermissions = (user: string, scope: Scope) => {
return del(pondURL("/users/" + user + "/permissions" + objectQueryParams(scope)));
return new Promise<AxiosResponse>((resolve, reject) => {
del(pondURL("/users/" + user + "/permissions" + objectQueryParams(scope))).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updatePermissions = (scope: Scope, users: User[] | Team[]) => {
@ -67,7 +79,13 @@ export default function PermissionProvider(props: PropsWithChildren<Props>) {
permissions: user.permissions.map(permission => permissionToString(permission))
});
});
return put(pondURL("/" + scope.kind + "s/" + scope.key + "/permissions"), body);
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/" + scope.kind + "s/" + scope.key + "/permissions"), body).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const shareObject = (
@ -78,10 +96,16 @@ export default function PermissionProvider(props: PropsWithChildren<Props>) {
) => {
let sql = "/" + scope.kind + "s/" + scope.key + "/share";
if (as && useImitation) sql = sql + "?as=" + as;
return post(pondURL(sql), {
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL(sql), {
email: email,
permissions: permissions.map(permission => permissionToString(permission))
});
}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateRelativePermissions = (
@ -91,44 +115,80 @@ export default function PermissionProvider(props: PropsWithChildren<Props>) {
) => {
let sql = "/updateRelativePermissions";
if (as) sql = sql + "?as=" + as;
return put(pondURL(sql), {
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL(sql), {
parent: parentScope.key,
parentType: parentScope.kind,
child: childScope.key,
childType: childScope.kind,
permissions: permissions.map(permission => permissionToString(permission))
});
}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const shareObjectByKey = (scope: Scope, key: string, permissions: pond.Permission[]) => {
if (as)
return post(pondURL(`/${scope.kind}s/${scope.key}/shareByKey?as=${as}`), {
let url = pondURL("/" + scope.kind + "s/" + scope.key + "/shareByKey")
if (as) url = pondURL(`/${scope.kind}s/${scope.key}/shareByKey?as=${as}`)
return new Promise<AxiosResponse>((resolve, reject) => {
post(url, {
key: key,
permissions: permissions.map(permission => permissionToString(permission))
});
return post(pondURL("/" + scope.kind + "s/" + scope.key + "/shareByKey"), {
key: key,
permissions: permissions.map(permission => permissionToString(permission))
});
}).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const addShareableLink = (scope: Scope, expiration: string) => {
let shareBody: pond.ShareableLinkSettings = pond.ShareableLinkSettings.create({
expiration: expiration
});
return post(pondURL("/" + scope.kind + "s/" + scope.key + "/links"), shareBody);
return new Promise<AxiosResponse>((resolve, reject) => {
return post(pondURL("/" + scope.kind + "s/" + scope.key + "/links"), shareBody).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeShareableLink = (scope: Scope, code: string) => {
return del(pondURL("/" + scope.kind + "s/" + scope.key + "/links/" + code));
return new Promise<AxiosResponse>((resolve, reject) => {
del(pondURL("/" + scope.kind + "s/" + scope.key + "/links/" + code)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listShareableLinks = (scope: Scope) => {
return get(pondURL("/" + scope.kind + "s/" + scope.key + "/links"));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/" + scope.kind + "s/" + scope.key + "/links")).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getShareableLink = (scope: Scope, code: string) => {
return get(pondURL("/" + scope.kind + "s/" + scope.key + "/links/" + code));
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL("/" + scope.kind + "s/" + scope.key + "/links/" + code)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -3,6 +3,7 @@ import { pond } from "protobuf-ts/pond";
import { createContext, PropsWithChildren, useContext } from "react";
import { pondURL } from "./pond";
import { useGlobalState } from "providers/StateContainer";
import { AxiosResponse } from "axios";
export interface ITagAPIContext {
addTag: (tag: pond.TagSettings) => Promise<any>;
@ -31,19 +32,43 @@ export default function TagProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState()
const addTag = (tag: pond.TagSettings) => {
return post(pondURL("/tags"), tag);
return new Promise<AxiosResponse>((resolve, reject) => {
post(pondURL("/tags"), tag).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateTag = (tagID: string, tag: pond.TagSettings) => {
return put(pondURL("/tags/" + tagID), tag);
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/tags/" + tagID), tag).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const removeTag = (tagID: string) => {
return del(pondURL("/tags/" + tagID));
return new Promise<AxiosResponse>((resolve, reject) => {
del(pondURL("/tags/" + tagID)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const getTag = (tagID: string) => {
return get(pondURL("/tags/" + tagID));
return new Promise<AxiosResponse>((resolve, reject)=>{
get(pondURL("/tags/" + tagID)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
// const listTags = () => {
@ -76,7 +101,14 @@ export default function TagProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.toString() : "")
);
return get<pond.ListDevicesResponse>(url);
return new Promise<AxiosResponse<pond.ListTagsResponse>>((resolve, reject) => {
get<pond.ListTagsResponse>(url).then(resp => {
resp.data = pond.ListTagsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (

View file

@ -44,7 +44,14 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
//const [{ team }] = useGlobalState();
const addTeam = (team: pond.TeamSettings) => {
return post<pond.AddTeamResponse>(pondURL("/team"), team);
return new Promise<AxiosResponse<pond.AddTeamResponse>>((resolve, reject) => {
post<pond.AddTeamResponse>(pondURL("/team"), team).then(resp => {
resp.data = pond.AddTeamResponse.fromObject(resp.data)
resolve(resp)
}).catch(err => {
reject(err)
})
})
};
const getTeam = (id: string, scope?: Scope): Promise<Team> => {
@ -60,14 +67,28 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
};
const removeTeam = (key: string) => {
return del<pond.RemoveTeamResponse>(pondURL("/teams/" + key));
return new Promise<AxiosResponse<pond.RemoveTeamResponse>>((resolve, reject) => {
del<pond.RemoveTeamResponse>(pondURL("/teams/" + key)).then(resp => {
resp.data = pond.RemoveTeamResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updateTeam = (key: string, team: pond.TeamSettings, asRoot?: boolean) => {
return put<pond.UpdateBinYardResponse>(
return new Promise<AxiosResponse<pond.UpdateTeamResponse>>((resolve, reject) => {
put<pond.UpdateTeamResponse>(
pondURL("/teams/" + key + (asRoot ? "?asRoot=" + asRoot.toString() : "")),
team
);
).then(resp => {
resp.data = pond.UpdateTeamResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const updatePreferences = (
@ -76,7 +97,13 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
// keys?: string[],
// types?: string[]
) => {
return put(pondURL("/teams/" + key + "/preferences"), preferences);
return new Promise<AxiosResponse>((resolve, reject) => {
put(pondURL("/teams/" + key + "/preferences"), preferences).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listTeams = (
@ -89,8 +116,7 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
as?: string
) => {
//let asText = team ? "&as=" + team.key() : "";
return get<pond.ListTeamsResponse>(
pondURL(
let url = pondURL(
"/teams" +
"?limit=" +
limit +
@ -102,19 +128,37 @@ export default function TeamProvider(props: PropsWithChildren<Props>) {
(asRoot ? "&asRoot=" + asRoot.toString() : "") +
(as ? "&as=" + as : "")
)
);
return new Promise<AxiosResponse<pond.ListTeamsResponse>>((resolve, reject)=>{
get<pond.ListTeamsResponse>(url).then(resp => {
resp.data = pond.ListTeamsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listAllTeams = () => {
//let asText = team ? "&as=" + team.key() : "";
return get<pond.ListTeamsResponse>(pondURL("/allTeams"));
return new Promise<AxiosResponse<pond.ListTeamsResponse>>((resolve, reject) => {
get<pond.ListTeamsResponse>(pondURL("/allTeams")).then(resp => {
resp.data = pond.ListTeamsResponse.fromObject(resp.data)
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
const listObjectTeams = (scope: Scope, as?: string) => {
if (as) {
return get(pondURL(`/${scope.kind}s/${scope.key}/teams?as=${as}`));
}
return get(pondURL("/" + scope.kind + "s/" + scope.key + "/teams"));
let url = "/" + scope.kind + "s/" + scope.key + "/teams"
if (as) url = `/${scope.kind}s/${scope.key}/teams?as=${as}`
return new Promise<AxiosResponse>((resolve, reject) => {
get(pondURL(url)).then(resp => {
return resolve(resp)
}).catch(err => {
return reject(err)
})
})
};
return (