diff --git a/package-lock.json b/package-lock.json index c456c98..01e0754 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ucentral-client", - "version": "2.8.0(39)", + "version": "2.8.0(40)", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ucentral-client", - "version": "2.8.0(39)", + "version": "2.8.0(40)", "license": "ISC", "dependencies": { "@chakra-ui/icons": "^2.0.11", diff --git a/package.json b/package.json index 5e6fd46..8d0dba1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ucentral-client", - "version": "2.8.0(39)", + "version": "2.8.0(40)", "description": "", "private": true, "main": "index.tsx", diff --git a/src/hooks/Network/Commands.ts b/src/hooks/Network/Commands.ts index fd1c803..93abc1b 100644 --- a/src/hooks/Network/Commands.ts +++ b/src/hooks/Network/Commands.ts @@ -57,12 +57,31 @@ export const useGetCommandHistory = ({ onError, }); -const getCommandsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () => +const getCommandsBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) => axiosGw - .get(`commands?serialNumber=${serialNumber}&startDate=${start}&endDate=${end}`) + .get(`commands?serialNumber=${serialNumber}&startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`) .then((response) => response.data) as Promise<{ commands: DeviceCommandHistory[]; }>; + +const getCommandsByBatches = (serialNumber?: string, start?: number, end?: number) => async () => { + let offset = 0; + const limit = 100; + let commands: DeviceCommandHistory[] = []; + let latestResponse: { + commands: DeviceCommandHistory[]; + }; + do { + // eslint-disable-next-line no-await-in-loop + latestResponse = await getCommandsBatch(serialNumber, start, end, limit, offset); + commands = commands.concat(latestResponse.commands); + offset += limit; + } while (latestResponse.commands.length === limit); + return { + commands, + }; +}; + export const useGetCommandHistoryWithTimestamps = ({ serialNumber, start, @@ -74,7 +93,7 @@ export const useGetCommandHistoryWithTimestamps = ({ end?: number; onError?: (e: AxiosError) => void; }) => - useQuery(['commands', serialNumber, { start, end }], getCommandsWithTimestamps(serialNumber, start, end), { + useQuery(['commands', serialNumber, { start, end }], getCommandsByBatches(serialNumber, start, end), { enabled: serialNumber !== undefined && serialNumber !== '' && start !== undefined && end !== undefined, staleTime: 1000 * 60, onError, diff --git a/src/hooks/Network/DeviceLogs.ts b/src/hooks/Network/DeviceLogs.ts index ab4ad8f..8f78a85 100644 --- a/src/hooks/Network/DeviceLogs.ts +++ b/src/hooks/Network/DeviceLogs.ts @@ -45,13 +45,33 @@ export const useDeleteLogs = () => { }); }; -const getDeviceLogsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () => +const getLogsBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) => axiosGw - .get(`device/${serialNumber}/logs?startDate=${start}&endDate=${end}`) + .get(`device/${serialNumber}/logs?startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`) .then((response) => response.data) as Promise<{ values: DeviceLog[]; serialNumber: string; }>; + +const getDeviceLogsWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () => { + let offset = 0; + const limit = 100; + let logs: DeviceLog[] = []; + let latestResponse: { + values: DeviceLog[]; + serialNumber: string; + }; + do { + // eslint-disable-next-line no-await-in-loop + latestResponse = await getLogsBatch(serialNumber, start, end, limit, offset); + logs = logs.concat(latestResponse.values); + offset += limit; + } while (latestResponse.values.length === limit); + return { + values: logs, + }; +}; + export const useGetDeviceLogsWithTimestamps = ({ serialNumber, start, diff --git a/src/hooks/Network/HealthChecks.ts b/src/hooks/Network/HealthChecks.ts index d7f6658..dbaefd4 100644 --- a/src/hooks/Network/HealthChecks.ts +++ b/src/hooks/Network/HealthChecks.ts @@ -33,13 +33,34 @@ export const useGetHealthChecks = ({ onError, }); -const getHealthChecksWithTimestamps = (serialNumber?: string, start?: number, end?: number) => async () => +const getHealthChecksBatch = (serialNumber?: string, start?: number, end?: number, limit?: number, offset?: number) => axiosGw - .get(`device/${serialNumber}/healthchecks?startDate=${start}&endDate=${end}`) + .get(`device/${serialNumber}/healthchecks?startDate=${start}&endDate=${end}&limit=${limit}&offset=${offset}`) .then((response) => response.data) as Promise<{ values: HealthCheck[]; serialNumber: string; }>; + +const getHealthChecksByBatches = (serialNumber?: string, start?: number, end?: number) => async () => { + let offset = 0; + const limit = 100; + let checks: HealthCheck[] = []; + let latestResponse: { + values: HealthCheck[]; + serialNumber: string; + }; + do { + // eslint-disable-next-line no-await-in-loop + latestResponse = await getHealthChecksBatch(serialNumber, start, end, limit, offset); + checks = checks.concat(latestResponse.values); + offset += limit; + } while (latestResponse.values.length === limit); + return { + values: checks, + serialNumber: latestResponse.serialNumber, + }; +}; + export const useGetHealthChecksWithTimestamps = ({ serialNumber, start, @@ -51,7 +72,7 @@ export const useGetHealthChecksWithTimestamps = ({ end?: number; onError?: (e: AxiosError) => void; }) => - useQuery(['healthchecks', serialNumber, { start, end }], getHealthChecksWithTimestamps(serialNumber, start, end), { + useQuery(['healthchecks', serialNumber, { start, end }], getHealthChecksByBatches(serialNumber, start, end), { enabled: serialNumber !== undefined && serialNumber !== '' && start !== undefined && end !== undefined, staleTime: 1000 * 60, onError,