@northern.tech/store 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/actions.cjs +20 -16
  2. package/dist/actions.cjs.map +1 -1
  3. package/dist/actions.d.cts +7 -22
  4. package/dist/actions.d.ts +7 -22
  5. package/dist/actions.js +8 -8
  6. package/dist/appSlice/index.cjs.map +1 -1
  7. package/dist/appSlice/index.d.cts +1 -1
  8. package/dist/appSlice/index.d.ts +1 -1
  9. package/dist/appSlice/index.js +1 -1
  10. package/dist/appSlice/mocks.cjs.map +1 -1
  11. package/dist/appSlice/mocks.js +1 -1
  12. package/dist/appSlice/selectors.d.cts +34 -528
  13. package/dist/appSlice/selectors.d.ts +34 -528
  14. package/dist/appSlice/thunks.cjs +45 -41
  15. package/dist/appSlice/thunks.cjs.map +1 -1
  16. package/dist/appSlice/thunks.d.cts +5 -3
  17. package/dist/appSlice/thunks.d.ts +5 -3
  18. package/dist/appSlice/thunks.js +14 -14
  19. package/dist/{chunk-QOFVCPRW.js → chunk-5PUF4LA5.js} +1 -1
  20. package/dist/chunk-5PUF4LA5.js.map +1 -0
  21. package/dist/{chunk-TKIOEF3B.js → chunk-6KAV62BW.js} +6 -6
  22. package/dist/{chunk-OFGCC3GM.js → chunk-7MTM3BDT.js} +1 -1
  23. package/dist/chunk-7MTM3BDT.js.map +1 -0
  24. package/dist/{chunk-4HSH7RH3.js → chunk-AR4FTKSL.js} +8 -8
  25. package/dist/{chunk-ZRMB4U7Z.js → chunk-BZAXFAGT.js} +4 -4
  26. package/dist/{chunk-ZNAJKEP2.js → chunk-CQXDAXQF.js} +1 -1
  27. package/dist/chunk-CQXDAXQF.js.map +1 -0
  28. package/dist/{chunk-5ZCZTTYX.js → chunk-EOZ665GA.js} +2 -2
  29. package/dist/{chunk-C5NXNZ7F.js → chunk-ETZVJXPD.js} +23 -30
  30. package/dist/chunk-ETZVJXPD.js.map +1 -0
  31. package/dist/{chunk-WCBHYLUK.js → chunk-KJ4BPXMB.js} +1 -1
  32. package/dist/chunk-KJ4BPXMB.js.map +1 -0
  33. package/dist/{chunk-C2LGE3P6.js → chunk-OLKM53RL.js} +1 -1
  34. package/dist/chunk-OLKM53RL.js.map +1 -0
  35. package/dist/{chunk-HLX5L3IM.js → chunk-PVCHKW35.js} +1 -1
  36. package/dist/chunk-PVCHKW35.js.map +1 -0
  37. package/dist/{chunk-REZWSU22.js → chunk-VODRLEDP.js} +21 -17
  38. package/dist/chunk-VODRLEDP.js.map +1 -0
  39. package/dist/{chunk-MH5WPYQI.js → chunk-X7NEALMI.js} +16 -9
  40. package/dist/chunk-X7NEALMI.js.map +1 -0
  41. package/dist/{chunk-OGUVURJ5.js → chunk-YFAIYNQG.js} +9 -9
  42. package/dist/commonSelectors.cjs +15 -8
  43. package/dist/commonSelectors.cjs.map +1 -1
  44. package/dist/commonSelectors.d.cts +178 -3523
  45. package/dist/commonSelectors.d.ts +178 -3523
  46. package/dist/commonSelectors.js +2 -2
  47. package/dist/deploymentsSlice/index.cjs.map +1 -1
  48. package/dist/deploymentsSlice/index.d.cts +1 -1
  49. package/dist/deploymentsSlice/index.d.ts +1 -1
  50. package/dist/deploymentsSlice/index.js +1 -1
  51. package/dist/deploymentsSlice/mocks.cjs.map +1 -1
  52. package/dist/deploymentsSlice/mocks.js +1 -1
  53. package/dist/deploymentsSlice/selectors.d.cts +16 -138
  54. package/dist/deploymentsSlice/selectors.d.ts +16 -138
  55. package/dist/deploymentsSlice/thunks.cjs +45 -41
  56. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  57. package/dist/deploymentsSlice/thunks.d.cts +4 -2
  58. package/dist/deploymentsSlice/thunks.d.ts +4 -2
  59. package/dist/deploymentsSlice/thunks.js +14 -14
  60. package/dist/devicesSlice/index.cjs +20 -16
  61. package/dist/devicesSlice/index.cjs.map +1 -1
  62. package/dist/devicesSlice/index.d.cts +11 -20
  63. package/dist/devicesSlice/index.d.ts +11 -20
  64. package/dist/devicesSlice/index.js +1 -1
  65. package/dist/devicesSlice/mocks.cjs +24 -22
  66. package/dist/devicesSlice/mocks.cjs.map +1 -1
  67. package/dist/devicesSlice/mocks.d.cts +20 -12
  68. package/dist/devicesSlice/mocks.d.ts +20 -12
  69. package/dist/devicesSlice/mocks.js +5 -7
  70. package/dist/devicesSlice/mocks.js.map +1 -1
  71. package/dist/devicesSlice/selectors.cjs +15 -8
  72. package/dist/devicesSlice/selectors.cjs.map +1 -1
  73. package/dist/devicesSlice/selectors.d.cts +207 -1730
  74. package/dist/devicesSlice/selectors.d.ts +207 -1730
  75. package/dist/devicesSlice/selectors.js +1 -1
  76. package/dist/devicesSlice/thunks.cjs +45 -43
  77. package/dist/devicesSlice/thunks.cjs.map +1 -1
  78. package/dist/devicesSlice/thunks.d.cts +12 -46
  79. package/dist/devicesSlice/thunks.d.ts +12 -46
  80. package/dist/devicesSlice/thunks.js +14 -16
  81. package/dist/monitorSlice/index.cjs.map +1 -1
  82. package/dist/monitorSlice/index.d.cts +1 -1
  83. package/dist/monitorSlice/index.d.ts +1 -1
  84. package/dist/monitorSlice/index.js +1 -1
  85. package/dist/monitorSlice/mocks.cjs.map +1 -1
  86. package/dist/monitorSlice/mocks.js +1 -1
  87. package/dist/monitorSlice/thunks.cjs +35 -24
  88. package/dist/monitorSlice/thunks.cjs.map +1 -1
  89. package/dist/monitorSlice/thunks.d.cts +3 -2
  90. package/dist/monitorSlice/thunks.d.ts +3 -2
  91. package/dist/monitorSlice/thunks.js +12 -12
  92. package/dist/onboardingSlice/index.cjs.map +1 -1
  93. package/dist/onboardingSlice/index.d.cts +1 -1
  94. package/dist/onboardingSlice/index.d.ts +1 -1
  95. package/dist/onboardingSlice/index.js +1 -1
  96. package/dist/onboardingSlice/mocks.cjs.map +1 -1
  97. package/dist/onboardingSlice/mocks.js +1 -1
  98. package/dist/onboardingSlice/thunks.cjs +45 -41
  99. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  100. package/dist/onboardingSlice/thunks.d.cts +7 -15
  101. package/dist/onboardingSlice/thunks.d.ts +7 -15
  102. package/dist/onboardingSlice/thunks.js +14 -14
  103. package/dist/organizationSlice/index.cjs.map +1 -1
  104. package/dist/organizationSlice/index.d.cts +41 -31
  105. package/dist/organizationSlice/index.d.ts +41 -31
  106. package/dist/organizationSlice/index.js +1 -1
  107. package/dist/organizationSlice/mocks.cjs.map +1 -1
  108. package/dist/organizationSlice/mocks.js +1 -1
  109. package/dist/organizationSlice/selectors.d.cts +42 -659
  110. package/dist/organizationSlice/selectors.d.ts +42 -659
  111. package/dist/organizationSlice/thunks.cjs +45 -41
  112. package/dist/organizationSlice/thunks.cjs.map +1 -1
  113. package/dist/organizationSlice/thunks.d.cts +4 -1
  114. package/dist/organizationSlice/thunks.d.ts +4 -1
  115. package/dist/organizationSlice/thunks.js +14 -14
  116. package/dist/organizationSlice/types.cjs.map +1 -1
  117. package/dist/organizationSlice/types.d.cts +2 -12
  118. package/dist/organizationSlice/types.d.ts +2 -12
  119. package/dist/releasesSlice/mocks.d.cts +7 -1
  120. package/dist/releasesSlice/mocks.d.ts +7 -1
  121. package/dist/releasesSlice/selectors.d.cts +155 -930
  122. package/dist/releasesSlice/selectors.d.ts +155 -930
  123. package/dist/releasesSlice/thunks.cjs +35 -24
  124. package/dist/releasesSlice/thunks.cjs.map +1 -1
  125. package/dist/releasesSlice/thunks.d.cts +4 -2
  126. package/dist/releasesSlice/thunks.d.ts +4 -2
  127. package/dist/releasesSlice/thunks.js +12 -12
  128. package/dist/selectors.cjs +15 -8
  129. package/dist/selectors.cjs.map +1 -1
  130. package/dist/selectors.d.cts +6 -3
  131. package/dist/selectors.d.ts +6 -3
  132. package/dist/selectors.js +2 -2
  133. package/dist/store.cjs +20 -16
  134. package/dist/store.cjs.map +1 -1
  135. package/dist/store.d.cts +40 -658
  136. package/dist/store.d.ts +40 -658
  137. package/dist/store.js +9 -9
  138. package/dist/storehooks.cjs +45 -41
  139. package/dist/storehooks.cjs.map +1 -1
  140. package/dist/storehooks.js +14 -14
  141. package/dist/thunks.cjs +45 -43
  142. package/dist/thunks.cjs.map +1 -1
  143. package/dist/thunks.d.cts +7 -5
  144. package/dist/thunks.d.ts +7 -5
  145. package/dist/thunks.js +14 -16
  146. package/dist/useDeploymentDevice.cjs +45 -41
  147. package/dist/useDeploymentDevice.cjs.map +1 -1
  148. package/dist/useDeploymentDevice.js +14 -14
  149. package/dist/usersSlice/index.cjs.map +1 -1
  150. package/dist/usersSlice/index.d.cts +46 -46
  151. package/dist/usersSlice/index.d.ts +46 -46
  152. package/dist/usersSlice/index.js +1 -1
  153. package/dist/usersSlice/mocks.cjs.map +1 -1
  154. package/dist/usersSlice/mocks.js +1 -1
  155. package/dist/usersSlice/selectors.d.cts +75 -1436
  156. package/dist/usersSlice/selectors.d.ts +75 -1436
  157. package/dist/usersSlice/thunks.cjs +45 -41
  158. package/dist/usersSlice/thunks.cjs.map +1 -1
  159. package/dist/usersSlice/thunks.d.cts +3 -1
  160. package/dist/usersSlice/thunks.d.ts +3 -1
  161. package/dist/usersSlice/thunks.js +14 -14
  162. package/package.json +1 -1
  163. package/dist/chunk-C2LGE3P6.js.map +0 -1
  164. package/dist/chunk-C5NXNZ7F.js.map +0 -1
  165. package/dist/chunk-HLX5L3IM.js.map +0 -1
  166. package/dist/chunk-MH5WPYQI.js.map +0 -1
  167. package/dist/chunk-OFGCC3GM.js.map +0 -1
  168. package/dist/chunk-QOFVCPRW.js.map +0 -1
  169. package/dist/chunk-REZWSU22.js.map +0 -1
  170. package/dist/chunk-WCBHYLUK.js.map +0 -1
  171. package/dist/chunk-ZNAJKEP2.js.map +0 -1
  172. /package/dist/{chunk-TKIOEF3B.js.map → chunk-6KAV62BW.js.map} +0 -0
  173. /package/dist/{chunk-4HSH7RH3.js.map → chunk-AR4FTKSL.js.map} +0 -0
  174. /package/dist/{chunk-ZRMB4U7Z.js.map → chunk-BZAXFAGT.js.map} +0 -0
  175. /package/dist/{chunk-5ZCZTTYX.js.map → chunk-EOZ665GA.js.map} +0 -0
  176. /package/dist/{chunk-OGUVURJ5.js.map → chunk-YFAIYNQG.js.map} +0 -0
@@ -1201,12 +1201,10 @@ var initialState4 = {
1201
1201
  // }
1202
1202
  },
1203
1203
  byStatus: {
1204
- [import_constants5.DEVICE_STATES.accepted]: { deviceIds: [], total: 0 },
1205
- active: { deviceIds: [], total: 0 },
1206
- inactive: { deviceIds: [], total: 0 },
1207
- [import_constants5.DEVICE_STATES.pending]: { deviceIds: [], total: 0 },
1208
- [import_constants5.DEVICE_STATES.preauth]: { deviceIds: [], total: 0 },
1209
- [import_constants5.DEVICE_STATES.rejected]: { deviceIds: [], total: 0 }
1204
+ [import_constants5.DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1205
+ [import_constants5.DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1206
+ [import_constants5.DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1207
+ [import_constants5.DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }
1210
1208
  },
1211
1209
  deviceList: {
1212
1210
  deviceIds: [],
@@ -1336,21 +1334,19 @@ var devicesSlice = (0, import_toolkit4.createSlice)({
1336
1334
  }
1337
1335
  state.filters = action.payload.filter((filter) => filter.key && filter.operator && filter.scope && typeof filter.value !== "undefined");
1338
1336
  },
1339
- setInactiveDevices: (state, action) => {
1340
- const { activeDeviceTotal, inactiveDeviceTotal } = action.payload;
1341
- state.byStatus.active.total = activeDeviceTotal;
1342
- state.byStatus.inactive.total = inactiveDeviceTotal;
1343
- },
1344
1337
  setDeviceReports: (state, action) => {
1345
1338
  state.reports = action.payload;
1346
1339
  },
1347
1340
  setDevicesByStatus: (state, action) => {
1348
- const { forceUpdate, status, total, deviceIds } = action.payload;
1349
- state.byStatus[status] = total || forceUpdate ? { deviceIds, total } : state.byStatus[status];
1341
+ const { status, total, deviceIds } = action.payload;
1342
+ if (total) {
1343
+ state.byStatus[status].deviceIds = deviceIds;
1344
+ state.byStatus[status].counts.total = total;
1345
+ }
1350
1346
  },
1351
1347
  setDevicesCountByStatus: (state, action) => {
1352
- const { count, status } = action.payload;
1353
- state.byStatus[status].total = count;
1348
+ const { countsPerTier, status } = action.payload;
1349
+ state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => accu += tieredCount, 0) };
1354
1350
  },
1355
1351
  setDeviceLimits: (state, action) => {
1356
1352
  state.limits = action.payload;
@@ -1367,7 +1363,15 @@ var devicesSlice = (0, import_toolkit4.createSlice)({
1367
1363
  const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter((authset) => authset.id !== authId).length > 0 : false;
1368
1364
  if (!hasMultipleAuthSets && Object.values(import_constants5.DEVICE_STATES).includes(device.status)) {
1369
1365
  const deviceIds = state.byStatus[device.status].deviceIds.filter((id) => id !== deviceId);
1370
- state.byStatus[device.status] = { deviceIds, total: Math.max(0, state.byStatus[device.status].total - 1) };
1366
+ const deviceTier = device.attributes.tier || "standard";
1367
+ state.byStatus[device.status] = {
1368
+ deviceIds,
1369
+ counts: {
1370
+ ...state.byStatus[device.status].counts,
1371
+ [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),
1372
+ total: Math.max(0, state.byStatus[device.status].counts.total - 1)
1373
+ }
1374
+ };
1371
1375
  }
1372
1376
  }
1373
1377
  }
@@ -1915,15 +1919,22 @@ var getDeviceIdentityAttributes = (0, import_toolkit11.createSelector)(
1915
1919
  );
1916
1920
  var getDeviceCountsByStatus = (0, import_toolkit11.createSelector)(
1917
1921
  [getDevicesByStatus],
1918
- (byStatus) => Object.values(import_constants5.DEVICE_STATES).reduce((accu, state) => {
1919
- accu[state] = byStatus[state].total || 0;
1920
- return accu;
1921
- }, {})
1922
+ (byStatus) => Object.values(import_constants5.DEVICE_STATES).reduce(
1923
+ (accu, deviceState) => {
1924
+ const { counts } = byStatus[deviceState];
1925
+ const { total, ...tieredCounts } = counts;
1926
+ const count = Object.values(tieredCounts).reduce((accu2, countPerTier) => accu2 + countPerTier, 0);
1927
+ accu[deviceState] = count;
1928
+ accu.total = accu.total + count;
1929
+ return accu;
1930
+ },
1931
+ { total: 0 }
1932
+ )
1922
1933
  );
1923
1934
  var getDeviceById = (0, import_toolkit11.createSelector)([getDevicesById, (_, deviceId) => deviceId], (devicesById, deviceId = "") => devicesById[deviceId] ?? {});
1924
1935
  var getSelectedGroupInfo = (0, import_toolkit11.createSelector)(
1925
- [getAcceptedDevices, getGroupsById, getSelectedGroup],
1926
- ({ total: acceptedDeviceTotal }, groupsById, selectedGroup) => {
1936
+ [getDeviceCountsByStatus, getGroupsById, getSelectedGroup],
1937
+ ({ accepted: acceptedDeviceTotal }, groupsById, selectedGroup) => {
1927
1938
  let groupCount = acceptedDeviceTotal;
1928
1939
  let groupFilters = [];
1929
1940
  if (selectedGroup && groupsById[selectedGroup]) {
@@ -1939,8 +1950,8 @@ var getCombinedLimit = (0, import_toolkit11.createSelector)(
1939
1950
  // limit might be -1 for unlimited devices
1940
1951
  );
1941
1952
  var getLimitMaxed = (0, import_toolkit11.createSelector)(
1942
- [getAcceptedDevices, getCombinedLimit],
1943
- ({ total: acceptedDevices = 0 }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices
1953
+ [getDeviceCountsByStatus, getCombinedLimit],
1954
+ ({ accepted: acceptedDevices }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices
1944
1955
  );
1945
1956
  var getGroupsByIdWithoutUngrouped = (0, import_toolkit11.createSelector)([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);
1946
1957
  var getGroupData = (0, import_toolkit11.createSelector)([getGroupsByIdWithoutUngrouped], (groups) => {
@@ -3369,21 +3380,13 @@ var getDeviceInfo = createAppAsyncThunk(`${sliceName4}/getDeviceInfo`, (deviceId
3369
3380
  }
3370
3381
  return Promise.all(tasks);
3371
3382
  });
3372
- var getDeviceCount = createAppAsyncThunk(
3373
- `${sliceName4}/getDeviceCount`,
3374
- (status, { dispatch, getState }) => general_api_default.post(getSearchEndpoint(getState()), {
3375
- page: 1,
3376
- per_page: 1,
3377
- filters: mapFiltersToTerms([{ key: "status", value: status, operator: import_constants5.DEVICE_FILTERING_OPTIONS.$eq.key, scope: "identity" }]),
3378
- attributes: defaultAttributes
3379
- }).then((response) => {
3380
- const count = Number(response.headers[import_constants5.headerNames.total]);
3381
- return dispatch(actions4.setDevicesCountByStatus({ count, status }));
3382
- })
3383
- );
3384
3383
  var getAllDeviceCounts = createAppAsyncThunk(
3385
3384
  `${sliceName4}/getAllDeviceCounts`,
3386
- (_, { dispatch }) => Promise.all([import_constants5.DEVICE_STATES.accepted, import_constants5.DEVICE_STATES.pending].map((status) => dispatch(getDeviceCount(status))))
3385
+ (_, { dispatch }) => general_api_default.get(`${import_constants5.inventoryApiUrlV2}/statistics`).then(({ data }) => {
3386
+ const { devices_by_status } = data;
3387
+ Object.entries(devices_by_status).map(([status, countsPerTier]) => dispatch(actions4.setDevicesCountByStatus({ countsPerTier, status })));
3388
+ return;
3389
+ })
3387
3390
  );
3388
3391
  var getDeviceLimits2 = createAppAsyncThunk(
3389
3392
  `${sliceName4}/getDeviceLimit`,
@@ -3455,7 +3458,7 @@ var getDevicesByStatus2 = createAppAsyncThunk(
3455
3458
  const state2 = getState();
3456
3459
  const deviceAccu = reduceReceivedDevices(response.data, [], state2, status);
3457
3460
  let total = !applicableFilters.length ? Number(response.headers[import_constants5.headerNames.total]) : 0;
3458
- if (status && state2.devices.byStatus[status].total === deviceAccu.ids.length) {
3461
+ if (status && state2.devices.byStatus[status].counts.total === deviceAccu.ids.length) {
3459
3462
  total = deviceAccu.ids.length;
3460
3463
  }
3461
3464
  const tasks = [dispatch(actions4.receivedDevices(deviceAccu.devicesById))];
@@ -3562,8 +3565,8 @@ var updateReportData = createAppAsyncThunk(`${sliceName4}/updateReportData`, (re
3562
3565
  const { group = "" } = report;
3563
3566
  const devicesById = getDevicesById(getState());
3564
3567
  const groups = getGroupsById(getState());
3565
- const acceptedDevices = getAcceptedDevices(getState());
3566
- const totalDeviceCount = groups[group] ? groups[group].total : acceptedDevices.total;
3568
+ const { accepted: acceptedDevicesCount } = getDeviceCountsByStatus(getState());
3569
+ const totalDeviceCount = groups[group] ? groups[group].total : acceptedDevicesCount;
3567
3570
  const reportsData = getDeviceReports(getState());
3568
3571
  const newReports = [...reportsData];
3569
3572
  newReports[reportIndex] = initializeDistributionData(report, groups, devicesById, totalDeviceCount);
@@ -3581,6 +3584,7 @@ var getReportDataWithoutBackendSupport = createAppAsyncThunk(
3581
3584
  const effectiveAttribute = software ? software : attribute;
3582
3585
  const devicesById = getDevicesById(getState());
3583
3586
  const acceptedDevices = getAcceptedDevices(getState());
3587
+ const { accepted: acceptedDevicesCount } = getDeviceCountsByStatus(getState());
3584
3588
  const groups = getGroupsById(getState());
3585
3589
  const { deviceIds = [], filters = [], total = 0 } = groups[group] || {};
3586
3590
  let groupDevicesRequest = Promise.resolve({
@@ -3588,7 +3592,7 @@ var getReportDataWithoutBackendSupport = createAppAsyncThunk(
3588
3592
  });
3589
3593
  if (group && (!(deviceIds.length && total) || deviceIds.length !== total || !deviceIds.every((id) => !!devicesById[id]))) {
3590
3594
  groupDevicesRequest = filters.length ? dispatch(getAllDynamicGroupDevices({ group, attribute: effectiveAttribute })).unwrap() : dispatch(getAllGroupDevices({ group, attribute: effectiveAttribute })).unwrap();
3591
- } else if (!group && (acceptedDevices.deviceIds.length !== acceptedDevices.total || !acceptedDevices.deviceIds.every((id) => !!devicesById[id]))) {
3595
+ } else if (!group && (acceptedDevices.deviceIds.length !== acceptedDevicesCount || !acceptedDevices.deviceIds.every((id) => !!devicesById[id]))) {
3592
3596
  groupDevicesRequest = dispatch(getAllDevicesByStatus({ status: import_constants5.DEVICE_STATES.accepted, attribute: effectiveAttribute })).unwrap();
3593
3597
  }
3594
3598
  return groupDevicesRequest.then(() => dispatch(updateReportData(reportIndex)));