Merge branch 'dev_environment' of gitlab.com:brandx/bxt-app into dev_environment

This commit is contained in:
Carter 2025-02-25 09:07:07 -06:00
commit e506906c93
12 changed files with 1509 additions and 698 deletions

View file

@ -1,3 +1,4 @@
import { AxiosResponse } from "axios";
import { useHTTP } from "hooks"; import { useHTTP } from "hooks";
import { pond } from "protobuf-ts/pond"; import { pond } from "protobuf-ts/pond";
import { createContext, PropsWithChildren, useContext } from "react"; import { createContext, PropsWithChildren, useContext } from "react";
@ -19,27 +20,58 @@ export default function BackpackProvider(props: PropsWithChildren<any>) {
const addBackpack = (backpack: pond.Backpack) => { const addBackpack = (backpack: pond.Backpack) => {
const url = pondURL("/backpacks"); 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 updateBackpack = (backpackID: number | Long, backpack: pond.Backpack) => {
const url = pondURL("/backpacks/" + backpackID); 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 removeBackpack = (backpackID: number | Long) => {
const url = pondURL("/backpacks/" + backpackID); 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 getBackpack = (backpackID: number | Long) => {
const url = pondURL("/backpacks/" + backpackID); 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 listBackpacks = () => {
const url = pondURL("/backpacks"); 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 ( return (

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -3,6 +3,7 @@ import { pond } from "protobuf-ts/pond";
import { createContext, PropsWithChildren, useContext } from "react"; import { createContext, PropsWithChildren, useContext } from "react";
import { pondURL } from "./pond"; import { pondURL } from "./pond";
import { useGlobalState } from "providers/StateContainer"; import { useGlobalState } from "providers/StateContainer";
import { AxiosResponse } from "axios";
export interface ITagAPIContext { export interface ITagAPIContext {
addTag: (tag: pond.TagSettings) => Promise<any>; addTag: (tag: pond.TagSettings) => Promise<any>;
@ -31,19 +32,43 @@ export default function TagProvider(props: PropsWithChildren<Props>) {
const [{ as }] = useGlobalState() const [{ as }] = useGlobalState()
const addTag = (tag: pond.TagSettings) => { 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) => { 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) => { 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) => { 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 = () => { // const listTags = () => {
@ -76,7 +101,14 @@ export default function TagProvider(props: PropsWithChildren<Props>) {
(keys ? "&keys=" + keys.toString() : "") + (keys ? "&keys=" + keys.toString() : "") +
(types ? "&types=" + types.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 ( return (

View file

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