@northern.tech/store 0.11.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 (200) hide show
  1. package/dist/actions.cjs +22 -17
  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 +9 -9
  6. package/dist/api/general-api.js +1 -1
  7. package/dist/api/users-api.js +1 -1
  8. package/dist/appSlice/index.cjs.map +1 -1
  9. package/dist/appSlice/index.d.cts +1 -1
  10. package/dist/appSlice/index.d.ts +1 -1
  11. package/dist/appSlice/index.js +2 -2
  12. package/dist/appSlice/mocks.cjs.map +1 -1
  13. package/dist/appSlice/mocks.js +2 -2
  14. package/dist/appSlice/selectors.d.cts +34 -528
  15. package/dist/appSlice/selectors.d.ts +34 -528
  16. package/dist/appSlice/thunks.cjs +49 -42
  17. package/dist/appSlice/thunks.cjs.map +1 -1
  18. package/dist/appSlice/thunks.d.cts +5 -3
  19. package/dist/appSlice/thunks.d.ts +5 -3
  20. package/dist/appSlice/thunks.js +18 -18
  21. package/dist/auth.js +1 -1
  22. package/dist/{chunk-QOFVCPRW.js → chunk-5PUF4LA5.js} +1 -1
  23. package/dist/chunk-5PUF4LA5.js.map +1 -0
  24. package/dist/{chunk-X3NF4KNC.js → chunk-6KAV62BW.js} +6 -6
  25. package/dist/{chunk-OFGCC3GM.js → chunk-7MTM3BDT.js} +1 -1
  26. package/dist/chunk-7MTM3BDT.js.map +1 -0
  27. package/dist/{chunk-4FNSLYK5.js → chunk-AR4FTKSL.js} +14 -14
  28. package/dist/{chunk-6KNRR7A5.js → chunk-BZAXFAGT.js} +4 -4
  29. package/dist/{chunk-ZNAJKEP2.js → chunk-CQXDAXQF.js} +1 -1
  30. package/dist/chunk-CQXDAXQF.js.map +1 -0
  31. package/dist/{chunk-I3H5EFZK.js → chunk-EOZ665GA.js} +15 -15
  32. package/dist/{chunk-NVNO3I3K.js → chunk-ETZVJXPD.js} +36 -41
  33. package/dist/chunk-ETZVJXPD.js.map +1 -0
  34. package/dist/{chunk-RFF52JYU.js → chunk-KJ4BPXMB.js} +3 -2
  35. package/dist/chunk-KJ4BPXMB.js.map +1 -0
  36. package/dist/{chunk-C2LGE3P6.js → chunk-OLKM53RL.js} +1 -1
  37. package/dist/chunk-OLKM53RL.js.map +1 -0
  38. package/dist/{chunk-HLX5L3IM.js → chunk-PVCHKW35.js} +1 -1
  39. package/dist/chunk-PVCHKW35.js.map +1 -0
  40. package/dist/{chunk-REZWSU22.js → chunk-VODRLEDP.js} +21 -17
  41. package/dist/chunk-VODRLEDP.js.map +1 -0
  42. package/dist/{chunk-MH5WPYQI.js → chunk-X7NEALMI.js} +16 -9
  43. package/dist/chunk-X7NEALMI.js.map +1 -0
  44. package/dist/{chunk-CUU3N6KW.js → chunk-YFAIYNQG.js} +16 -16
  45. package/dist/commonConstants.js +1 -1
  46. package/dist/commonSelectors.cjs +15 -8
  47. package/dist/commonSelectors.cjs.map +1 -1
  48. package/dist/commonSelectors.d.cts +178 -3523
  49. package/dist/commonSelectors.d.ts +178 -3523
  50. package/dist/commonSelectors.js +6 -6
  51. package/dist/constants.js +1 -1
  52. package/dist/deploymentsSlice/constants.js +1 -1
  53. package/dist/deploymentsSlice/index.cjs.map +1 -1
  54. package/dist/deploymentsSlice/index.d.cts +1 -1
  55. package/dist/deploymentsSlice/index.d.ts +1 -1
  56. package/dist/deploymentsSlice/index.js +2 -2
  57. package/dist/deploymentsSlice/mocks.cjs.map +1 -1
  58. package/dist/deploymentsSlice/mocks.js +2 -2
  59. package/dist/deploymentsSlice/selectors.d.cts +16 -138
  60. package/dist/deploymentsSlice/selectors.d.ts +16 -138
  61. package/dist/deploymentsSlice/selectors.js +1 -1
  62. package/dist/deploymentsSlice/thunks.cjs +49 -42
  63. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  64. package/dist/deploymentsSlice/thunks.d.cts +4 -2
  65. package/dist/deploymentsSlice/thunks.d.ts +4 -2
  66. package/dist/deploymentsSlice/thunks.js +18 -18
  67. package/dist/devicesSlice/constants.js +1 -1
  68. package/dist/devicesSlice/index.cjs +20 -16
  69. package/dist/devicesSlice/index.cjs.map +1 -1
  70. package/dist/devicesSlice/index.d.cts +11 -20
  71. package/dist/devicesSlice/index.d.ts +11 -20
  72. package/dist/devicesSlice/index.js +2 -2
  73. package/dist/devicesSlice/mocks.cjs +24 -22
  74. package/dist/devicesSlice/mocks.cjs.map +1 -1
  75. package/dist/devicesSlice/mocks.d.cts +20 -12
  76. package/dist/devicesSlice/mocks.d.ts +20 -12
  77. package/dist/devicesSlice/mocks.js +6 -8
  78. package/dist/devicesSlice/mocks.js.map +1 -1
  79. package/dist/devicesSlice/selectors.cjs +15 -8
  80. package/dist/devicesSlice/selectors.cjs.map +1 -1
  81. package/dist/devicesSlice/selectors.d.cts +207 -1730
  82. package/dist/devicesSlice/selectors.d.ts +207 -1730
  83. package/dist/devicesSlice/selectors.js +2 -2
  84. package/dist/devicesSlice/thunks.cjs +49 -44
  85. package/dist/devicesSlice/thunks.cjs.map +1 -1
  86. package/dist/devicesSlice/thunks.d.cts +12 -46
  87. package/dist/devicesSlice/thunks.d.ts +12 -46
  88. package/dist/devicesSlice/thunks.js +18 -20
  89. package/dist/liststatehook.js +1 -1
  90. package/dist/locationutils.js +1 -1
  91. package/dist/monitorSlice/index.cjs.map +1 -1
  92. package/dist/monitorSlice/index.d.cts +1 -1
  93. package/dist/monitorSlice/index.d.ts +1 -1
  94. package/dist/monitorSlice/index.js +2 -2
  95. package/dist/monitorSlice/mocks.cjs.map +1 -1
  96. package/dist/monitorSlice/mocks.js +2 -2
  97. package/dist/monitorSlice/thunks.cjs +37 -25
  98. package/dist/monitorSlice/thunks.cjs.map +1 -1
  99. package/dist/monitorSlice/thunks.d.cts +3 -2
  100. package/dist/monitorSlice/thunks.d.ts +3 -2
  101. package/dist/monitorSlice/thunks.js +16 -16
  102. package/dist/onboardingSlice/index.cjs.map +1 -1
  103. package/dist/onboardingSlice/index.d.cts +1 -1
  104. package/dist/onboardingSlice/index.d.ts +1 -1
  105. package/dist/onboardingSlice/index.js +1 -1
  106. package/dist/onboardingSlice/mocks.cjs.map +1 -1
  107. package/dist/onboardingSlice/mocks.js +1 -1
  108. package/dist/onboardingSlice/thunks.cjs +49 -42
  109. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  110. package/dist/onboardingSlice/thunks.d.cts +7 -15
  111. package/dist/onboardingSlice/thunks.d.ts +7 -15
  112. package/dist/onboardingSlice/thunks.js +18 -18
  113. package/dist/organizationSlice/constants.js +1 -1
  114. package/dist/organizationSlice/index.cjs.map +1 -1
  115. package/dist/organizationSlice/index.d.cts +41 -31
  116. package/dist/organizationSlice/index.d.ts +41 -31
  117. package/dist/organizationSlice/index.js +2 -2
  118. package/dist/organizationSlice/mocks.cjs.map +1 -1
  119. package/dist/organizationSlice/mocks.js +2 -2
  120. package/dist/organizationSlice/selectors.d.cts +42 -659
  121. package/dist/organizationSlice/selectors.d.ts +42 -659
  122. package/dist/organizationSlice/selectors.js +1 -1
  123. package/dist/organizationSlice/thunks.cjs +51 -44
  124. package/dist/organizationSlice/thunks.cjs.map +1 -1
  125. package/dist/organizationSlice/thunks.d.cts +4 -1
  126. package/dist/organizationSlice/thunks.d.ts +4 -1
  127. package/dist/organizationSlice/thunks.js +18 -18
  128. package/dist/organizationSlice/types.cjs.map +1 -1
  129. package/dist/organizationSlice/types.d.cts +2 -12
  130. package/dist/organizationSlice/types.d.ts +2 -12
  131. package/dist/releasesSlice/index.js +1 -1
  132. package/dist/releasesSlice/mocks.d.cts +7 -1
  133. package/dist/releasesSlice/mocks.d.ts +7 -1
  134. package/dist/releasesSlice/mocks.js +1 -1
  135. package/dist/releasesSlice/selectors.d.cts +155 -930
  136. package/dist/releasesSlice/selectors.d.ts +155 -930
  137. package/dist/releasesSlice/selectors.js +1 -1
  138. package/dist/releasesSlice/thunks.cjs +37 -25
  139. package/dist/releasesSlice/thunks.cjs.map +1 -1
  140. package/dist/releasesSlice/thunks.d.cts +4 -2
  141. package/dist/releasesSlice/thunks.d.ts +4 -2
  142. package/dist/releasesSlice/thunks.js +16 -16
  143. package/dist/selectors.cjs +15 -8
  144. package/dist/selectors.cjs.map +1 -1
  145. package/dist/selectors.d.cts +6 -3
  146. package/dist/selectors.d.ts +6 -3
  147. package/dist/selectors.js +33 -33
  148. package/dist/sockethook.cjs +1 -1
  149. package/dist/sockethook.cjs.map +1 -1
  150. package/dist/sockethook.js +2 -2
  151. package/dist/sockethook.js.map +1 -1
  152. package/dist/store.cjs +22 -17
  153. package/dist/store.cjs.map +1 -1
  154. package/dist/store.d.cts +40 -658
  155. package/dist/store.d.ts +40 -658
  156. package/dist/store.js +10 -10
  157. package/dist/storehooks.cjs +52 -45
  158. package/dist/storehooks.cjs.map +1 -1
  159. package/dist/storehooks.js +19 -19
  160. package/dist/thunks.cjs +49 -44
  161. package/dist/thunks.cjs.map +1 -1
  162. package/dist/thunks.d.cts +7 -5
  163. package/dist/thunks.d.ts +7 -5
  164. package/dist/thunks.js +18 -20
  165. package/dist/useDeploymentDevice.cjs +49 -42
  166. package/dist/useDeploymentDevice.cjs.map +1 -1
  167. package/dist/useDeploymentDevice.js +19 -19
  168. package/dist/usersSlice/constants.js +1 -1
  169. package/dist/usersSlice/index.cjs +2 -1
  170. package/dist/usersSlice/index.cjs.map +1 -1
  171. package/dist/usersSlice/index.d.cts +47 -46
  172. package/dist/usersSlice/index.d.ts +47 -46
  173. package/dist/usersSlice/index.js +2 -2
  174. package/dist/usersSlice/mocks.cjs +2 -1
  175. package/dist/usersSlice/mocks.cjs.map +1 -1
  176. package/dist/usersSlice/mocks.js +2 -2
  177. package/dist/usersSlice/selectors.d.cts +75 -1436
  178. package/dist/usersSlice/selectors.d.ts +75 -1436
  179. package/dist/usersSlice/selectors.js +1 -1
  180. package/dist/usersSlice/thunks.cjs +49 -42
  181. package/dist/usersSlice/thunks.cjs.map +1 -1
  182. package/dist/usersSlice/thunks.d.cts +3 -1
  183. package/dist/usersSlice/thunks.d.ts +3 -1
  184. package/dist/usersSlice/thunks.js +18 -18
  185. package/dist/utils.js +1 -1
  186. package/package.json +4 -4
  187. package/dist/chunk-C2LGE3P6.js.map +0 -1
  188. package/dist/chunk-HLX5L3IM.js.map +0 -1
  189. package/dist/chunk-MH5WPYQI.js.map +0 -1
  190. package/dist/chunk-NVNO3I3K.js.map +0 -1
  191. package/dist/chunk-OFGCC3GM.js.map +0 -1
  192. package/dist/chunk-QOFVCPRW.js.map +0 -1
  193. package/dist/chunk-REZWSU22.js.map +0 -1
  194. package/dist/chunk-RFF52JYU.js.map +0 -1
  195. package/dist/chunk-ZNAJKEP2.js.map +0 -1
  196. /package/dist/{chunk-X3NF4KNC.js.map → chunk-6KAV62BW.js.map} +0 -0
  197. /package/dist/{chunk-4FNSLYK5.js.map → chunk-AR4FTKSL.js.map} +0 -0
  198. /package/dist/{chunk-6KNRR7A5.js.map → chunk-BZAXFAGT.js.map} +0 -0
  199. /package/dist/{chunk-I3H5EFZK.js.map → chunk-EOZ665GA.js.map} +0 -0
  200. /package/dist/{chunk-CUU3N6KW.js.map → chunk-YFAIYNQG.js.map} +0 -0
package/dist/store.js CHANGED
@@ -6,21 +6,21 @@ import {
6
6
  sessionReducer,
7
7
  store,
8
8
  useAppDispatch
9
- } from "./chunk-CUU3N6KW.js";
10
- import "./chunk-4FNSLYK5.js";
11
- import "./chunk-C2LGE3P6.js";
12
- import "./chunk-RFF52JYU.js";
9
+ } from "./chunk-YFAIYNQG.js";
10
+ import "./chunk-AR4FTKSL.js";
13
11
  import "./chunk-TRKA7XYU.js";
14
- import "./chunk-ZNAJKEP2.js";
15
- import "./chunk-QOFVCPRW.js";
16
- import "./chunk-HLX5L3IM.js";
17
- import "./chunk-OFGCC3GM.js";
18
- import "./chunk-REZWSU22.js";
12
+ import "./chunk-KJ4BPXMB.js";
13
+ import "./chunk-5PUF4LA5.js";
14
+ import "./chunk-PVCHKW35.js";
15
+ import "./chunk-CQXDAXQF.js";
16
+ import "./chunk-VODRLEDP.js";
17
+ import "./chunk-7MTM3BDT.js";
18
+ import "./chunk-OLKM53RL.js";
19
19
  import "./chunk-FDSMCFV5.js";
20
20
  import "./chunk-WWED74SG.js";
21
21
  import "./chunk-2DYA3X77.js";
22
- import "./chunk-ZKAH3APE.js";
23
22
  import "./chunk-FAJ3I2UQ.js";
23
+ import "./chunk-ZKAH3APE.js";
24
24
  import "./chunk-OWWCFJZ5.js";
25
25
  export {
26
26
  commonErrorFallback,
@@ -37,7 +37,7 @@ module.exports = __toCommonJS(storehooks_exports);
37
37
  var import_react2 = require("react");
38
38
  var import_react_redux2 = require("react-redux");
39
39
  var import_helpers15 = require("@northern.tech/utils/helpers");
40
- var import_dayjs2 = __toESM(require("dayjs"), 1);
40
+ var import_dayjs3 = __toESM(require("dayjs"), 1);
41
41
  var import_duration = __toESM(require("dayjs/plugin/duration.js"), 1);
42
42
  var import_universal_cookie6 = __toESM(require("universal-cookie"), 1);
43
43
 
@@ -1040,12 +1040,10 @@ var initialState3 = {
1040
1040
  // }
1041
1041
  },
1042
1042
  byStatus: {
1043
- [import_constants5.DEVICE_STATES.accepted]: { deviceIds: [], total: 0 },
1044
- active: { deviceIds: [], total: 0 },
1045
- inactive: { deviceIds: [], total: 0 },
1046
- [import_constants5.DEVICE_STATES.pending]: { deviceIds: [], total: 0 },
1047
- [import_constants5.DEVICE_STATES.preauth]: { deviceIds: [], total: 0 },
1048
- [import_constants5.DEVICE_STATES.rejected]: { deviceIds: [], total: 0 }
1043
+ [import_constants5.DEVICE_STATES.accepted]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1044
+ [import_constants5.DEVICE_STATES.pending]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1045
+ [import_constants5.DEVICE_STATES.preauth]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } },
1046
+ [import_constants5.DEVICE_STATES.rejected]: { deviceIds: [], counts: { standard: 0, micro: 0, system: 0, total: 0 } }
1049
1047
  },
1050
1048
  deviceList: {
1051
1049
  deviceIds: [],
@@ -1175,21 +1173,19 @@ var devicesSlice = (0, import_toolkit3.createSlice)({
1175
1173
  }
1176
1174
  state.filters = action.payload.filter((filter) => filter.key && filter.operator && filter.scope && typeof filter.value !== "undefined");
1177
1175
  },
1178
- setInactiveDevices: (state, action) => {
1179
- const { activeDeviceTotal, inactiveDeviceTotal } = action.payload;
1180
- state.byStatus.active.total = activeDeviceTotal;
1181
- state.byStatus.inactive.total = inactiveDeviceTotal;
1182
- },
1183
1176
  setDeviceReports: (state, action) => {
1184
1177
  state.reports = action.payload;
1185
1178
  },
1186
1179
  setDevicesByStatus: (state, action) => {
1187
- const { forceUpdate, status, total, deviceIds } = action.payload;
1188
- state.byStatus[status] = total || forceUpdate ? { deviceIds, total } : state.byStatus[status];
1180
+ const { status, total, deviceIds } = action.payload;
1181
+ if (total) {
1182
+ state.byStatus[status].deviceIds = deviceIds;
1183
+ state.byStatus[status].counts.total = total;
1184
+ }
1189
1185
  },
1190
1186
  setDevicesCountByStatus: (state, action) => {
1191
- const { count, status } = action.payload;
1192
- state.byStatus[status].total = count;
1187
+ const { countsPerTier, status } = action.payload;
1188
+ state.byStatus[status].counts = { ...countsPerTier, total: Object.values(countsPerTier).reduce((accu, tieredCount) => accu += tieredCount, 0) };
1193
1189
  },
1194
1190
  setDeviceLimits: (state, action) => {
1195
1191
  state.limits = action.payload;
@@ -1206,7 +1202,15 @@ var devicesSlice = (0, import_toolkit3.createSlice)({
1206
1202
  const hasMultipleAuthSets = authId && device.auth_sets ? device.auth_sets.filter((authset) => authset.id !== authId).length > 0 : false;
1207
1203
  if (!hasMultipleAuthSets && Object.values(import_constants5.DEVICE_STATES).includes(device.status)) {
1208
1204
  const deviceIds = state.byStatus[device.status].deviceIds.filter((id) => id !== deviceId);
1209
- state.byStatus[device.status] = { deviceIds, total: Math.max(0, state.byStatus[device.status].total - 1) };
1205
+ const deviceTier = device.attributes.tier || "standard";
1206
+ state.byStatus[device.status] = {
1207
+ deviceIds,
1208
+ counts: {
1209
+ ...state.byStatus[device.status].counts,
1210
+ [deviceTier]: Math.max(0, state.byStatus[device.status].counts[deviceTier] - 1),
1211
+ total: Math.max(0, state.byStatus[device.status].counts.total - 1)
1212
+ }
1213
+ };
1210
1214
  }
1211
1215
  }
1212
1216
  }
@@ -1582,7 +1586,8 @@ var initialState8 = {
1582
1586
  },
1583
1587
  userSettings: {
1584
1588
  columnSelection: [],
1585
- onboarding: {}
1589
+ onboarding: {},
1590
+ firstLoginTimestamp: null
1586
1591
  },
1587
1592
  userSettingsInitialized: false
1588
1593
  };
@@ -1832,15 +1837,22 @@ var getDeviceIdentityAttributes = (0, import_toolkit11.createSelector)(
1832
1837
  );
1833
1838
  var getDeviceCountsByStatus = (0, import_toolkit11.createSelector)(
1834
1839
  [getDevicesByStatus],
1835
- (byStatus) => Object.values(import_constants5.DEVICE_STATES).reduce((accu, state) => {
1836
- accu[state] = byStatus[state].total || 0;
1837
- return accu;
1838
- }, {})
1840
+ (byStatus) => Object.values(import_constants5.DEVICE_STATES).reduce(
1841
+ (accu, deviceState) => {
1842
+ const { counts } = byStatus[deviceState];
1843
+ const { total, ...tieredCounts } = counts;
1844
+ const count = Object.values(tieredCounts).reduce((accu2, countPerTier) => accu2 + countPerTier, 0);
1845
+ accu[deviceState] = count;
1846
+ accu.total = accu.total + count;
1847
+ return accu;
1848
+ },
1849
+ { total: 0 }
1850
+ )
1839
1851
  );
1840
1852
  var getDeviceById = (0, import_toolkit11.createSelector)([getDevicesById, (_, deviceId) => deviceId], (devicesById, deviceId = "") => devicesById[deviceId] ?? {});
1841
1853
  var getSelectedGroupInfo = (0, import_toolkit11.createSelector)(
1842
- [getAcceptedDevices, getGroupsById, getSelectedGroup],
1843
- ({ total: acceptedDeviceTotal }, groupsById, selectedGroup) => {
1854
+ [getDeviceCountsByStatus, getGroupsById, getSelectedGroup],
1855
+ ({ accepted: acceptedDeviceTotal }, groupsById, selectedGroup) => {
1844
1856
  let groupCount = acceptedDeviceTotal;
1845
1857
  let groupFilters = [];
1846
1858
  if (selectedGroup && groupsById[selectedGroup]) {
@@ -1856,8 +1868,8 @@ var getCombinedLimit = (0, import_toolkit11.createSelector)(
1856
1868
  // limit might be -1 for unlimited devices
1857
1869
  );
1858
1870
  var getLimitMaxed = (0, import_toolkit11.createSelector)(
1859
- [getAcceptedDevices, getCombinedLimit],
1860
- ({ total: acceptedDevices = 0 }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices
1871
+ [getDeviceCountsByStatus, getCombinedLimit],
1872
+ ({ accepted: acceptedDevices }, combinedLimit) => !!combinedLimit && combinedLimit <= acceptedDevices
1861
1873
  );
1862
1874
  var getGroupsByIdWithoutUngrouped = (0, import_toolkit11.createSelector)([getGroupsById], ({ [UNGROUPED_GROUP.id]: ungrouped, ...groups }) => groups);
1863
1875
  var getGroupData = (0, import_toolkit11.createSelector)([getGroupsByIdWithoutUngrouped], (groups) => {
@@ -3360,21 +3372,13 @@ var getDeviceInfo = createAppAsyncThunk(`${sliceName3}/getDeviceInfo`, (deviceId
3360
3372
  }
3361
3373
  return Promise.all(tasks);
3362
3374
  });
3363
- var getDeviceCount = createAppAsyncThunk(
3364
- `${sliceName3}/getDeviceCount`,
3365
- (status, { dispatch, getState }) => general_api_default.post(getSearchEndpoint(getState()), {
3366
- page: 1,
3367
- per_page: 1,
3368
- filters: mapFiltersToTerms([{ key: "status", value: status, operator: import_constants5.DEVICE_FILTERING_OPTIONS.$eq.key, scope: "identity" }]),
3369
- attributes: defaultAttributes
3370
- }).then((response) => {
3371
- const count = Number(response.headers[import_constants5.headerNames.total]);
3372
- return dispatch(actions3.setDevicesCountByStatus({ count, status }));
3373
- })
3374
- );
3375
3375
  var getAllDeviceCounts = createAppAsyncThunk(
3376
3376
  `${sliceName3}/getAllDeviceCounts`,
3377
- (_, { dispatch }) => Promise.all([import_constants5.DEVICE_STATES.accepted, import_constants5.DEVICE_STATES.pending].map((status) => dispatch(getDeviceCount(status))))
3377
+ (_, { dispatch }) => general_api_default.get(`${import_constants5.inventoryApiUrlV2}/statistics`).then(({ data }) => {
3378
+ const { devices_by_status } = data;
3379
+ Object.entries(devices_by_status).map(([status, countsPerTier]) => dispatch(actions3.setDevicesCountByStatus({ countsPerTier, status })));
3380
+ return;
3381
+ })
3378
3382
  );
3379
3383
  var getDeviceLimits2 = createAppAsyncThunk(
3380
3384
  `${sliceName3}/getDeviceLimit`,
@@ -3446,7 +3450,7 @@ var getDevicesByStatus2 = createAppAsyncThunk(
3446
3450
  const state2 = getState();
3447
3451
  const deviceAccu = reduceReceivedDevices(response.data, [], state2, status);
3448
3452
  let total = !applicableFilters.length ? Number(response.headers[import_constants5.headerNames.total]) : 0;
3449
- if (status && state2.devices.byStatus[status].total === deviceAccu.ids.length) {
3453
+ if (status && state2.devices.byStatus[status].counts.total === deviceAccu.ids.length) {
3450
3454
  total = deviceAccu.ids.length;
3451
3455
  }
3452
3456
  const tasks = [dispatch(actions3.receivedDevices(deviceAccu.devicesById))];
@@ -3553,8 +3557,8 @@ var updateReportData = createAppAsyncThunk(`${sliceName3}/updateReportData`, (re
3553
3557
  const { group = "" } = report;
3554
3558
  const devicesById = getDevicesById(getState());
3555
3559
  const groups = getGroupsById(getState());
3556
- const acceptedDevices = getAcceptedDevices(getState());
3557
- const totalDeviceCount = groups[group] ? groups[group].total : acceptedDevices.total;
3560
+ const { accepted: acceptedDevicesCount } = getDeviceCountsByStatus(getState());
3561
+ const totalDeviceCount = groups[group] ? groups[group].total : acceptedDevicesCount;
3558
3562
  const reportsData = getDeviceReports(getState());
3559
3563
  const newReports = [...reportsData];
3560
3564
  newReports[reportIndex] = initializeDistributionData(report, groups, devicesById, totalDeviceCount);
@@ -3572,6 +3576,7 @@ var getReportDataWithoutBackendSupport = createAppAsyncThunk(
3572
3576
  const effectiveAttribute = software ? software : attribute;
3573
3577
  const devicesById = getDevicesById(getState());
3574
3578
  const acceptedDevices = getAcceptedDevices(getState());
3579
+ const { accepted: acceptedDevicesCount } = getDeviceCountsByStatus(getState());
3575
3580
  const groups = getGroupsById(getState());
3576
3581
  const { deviceIds = [], filters = [], total = 0 } = groups[group] || {};
3577
3582
  let groupDevicesRequest = Promise.resolve({
@@ -3579,7 +3584,7 @@ var getReportDataWithoutBackendSupport = createAppAsyncThunk(
3579
3584
  });
3580
3585
  if (group && (!(deviceIds.length && total) || deviceIds.length !== total || !deviceIds.every((id) => !!devicesById[id]))) {
3581
3586
  groupDevicesRequest = filters.length ? dispatch(getAllDynamicGroupDevices({ group, attribute: effectiveAttribute })).unwrap() : dispatch(getAllGroupDevices({ group, attribute: effectiveAttribute })).unwrap();
3582
- } else if (!group && (acceptedDevices.deviceIds.length !== acceptedDevices.total || !acceptedDevices.deviceIds.every((id) => !!devicesById[id]))) {
3587
+ } else if (!group && (acceptedDevices.deviceIds.length !== acceptedDevicesCount || !acceptedDevices.deviceIds.every((id) => !!devicesById[id]))) {
3583
3588
  groupDevicesRequest = dispatch(getAllDevicesByStatus({ status: import_constants5.DEVICE_STATES.accepted, attribute: effectiveAttribute })).unwrap();
3584
3589
  }
3585
3590
  return groupDevicesRequest.then(() => dispatch(updateReportData(reportIndex)));
@@ -4785,6 +4790,7 @@ var getDeltaGenerationJobDetails = createAppAsyncThunk(
4785
4790
  // src/usersSlice/thunks.ts
4786
4791
  var import_helpers14 = require("@northern.tech/utils/helpers");
4787
4792
  var import_retrytimer = require("@northern.tech/utils/retrytimer");
4793
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
4788
4794
  var import_md52 = __toESM(require("md5"), 1);
4789
4795
  var import_universal_cookie5 = __toESM(require("universal-cookie"), 1);
4790
4796
 
@@ -5369,6 +5375,7 @@ var saveUserSettings = createAppAsyncThunk(
5369
5375
  const updatedSettings = {
5370
5376
  ...userSettings,
5371
5377
  ...settings,
5378
+ firstLoginTimestamp: userSettings.firstLoginTimestamp ?? (0, import_dayjs2.default)().format(),
5372
5379
  onboarding: {
5373
5380
  ...onboardingState,
5374
5381
  ...settings.onboarding
@@ -5448,7 +5455,7 @@ var submitUserFeedback = createAppAsyncThunk(
5448
5455
 
5449
5456
  // src/storehooks.ts
5450
5457
  var cookies6 = new import_universal_cookie6.default();
5451
- import_dayjs2.default.extend(import_duration.default);
5458
+ import_dayjs3.default.extend(import_duration.default);
5452
5459
  var { setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
5453
5460
  var featureFlags = [
5454
5461
  "hasAiEnabled",
@@ -5580,7 +5587,7 @@ var useAppInit = (userId) => {
5580
5587
  ];
5581
5588
  tasks = maybeAddOnboardingTasks({ devicesByStatus, dispatch, tasks, onboardingState });
5582
5589
  if (canManageUsers && intervalUnit && intervalUnit !== timeUnits.days) {
5583
- const duration = import_dayjs2.default.duration(interval, intervalUnit);
5590
+ const duration = import_dayjs3.default.duration(interval, intervalUnit);
5584
5591
  const days = duration.asDays();
5585
5592
  if (days < 1) {
5586
5593
  tasks.push(Promise.resolve(setTimeout(() => dispatch(setShowStartupNotification(true)), TIMEOUTS.fiveSeconds)));