@northern.tech/store 0.3.2 → 0.3.4

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 (251) hide show
  1. package/dist/BillingProfile-ChP2_Sqw.d.cts +45 -0
  2. package/dist/BillingProfile-ChP2_Sqw.d.ts +45 -0
  3. package/dist/actions.cjs +22 -23
  4. package/dist/actions.cjs.map +1 -1
  5. package/dist/actions.js +12 -12
  6. package/dist/api/general-api.cjs.map +1 -1
  7. package/dist/api/general-api.js +5 -5
  8. package/dist/api/types/Tenant.ts +17 -12
  9. package/dist/api/users-api.cjs.map +1 -1
  10. package/dist/api/users-api.js +6 -6
  11. package/dist/appSlice/constants.cjs +18 -10
  12. package/dist/appSlice/constants.cjs.map +1 -1
  13. package/dist/appSlice/constants.d.cts +41 -84
  14. package/dist/appSlice/constants.d.ts +41 -84
  15. package/dist/appSlice/constants.js +1 -1
  16. package/dist/appSlice/index.cjs +1 -3
  17. package/dist/appSlice/index.cjs.map +1 -1
  18. package/dist/appSlice/index.js +4 -4
  19. package/dist/appSlice/thunks.cjs +153 -120
  20. package/dist/appSlice/thunks.cjs.map +1 -1
  21. package/dist/appSlice/thunks.js +28 -27
  22. package/dist/auth.cjs.map +1 -1
  23. package/dist/auth.js +4 -4
  24. package/dist/{chunk-NI4SZOCF.js → chunk-4RWZR3BN.js} +23 -25
  25. package/dist/{chunk-NI4SZOCF.js.map → chunk-4RWZR3BN.js.map} +1 -1
  26. package/dist/{chunk-YGBFDXXA.js → chunk-7YZCUAXZ.js} +2 -2
  27. package/dist/{chunk-7PVGDMNM.js → chunk-AFICTIVU.js} +3 -5
  28. package/dist/{chunk-7PVGDMNM.js.map → chunk-AFICTIVU.js.map} +1 -1
  29. package/dist/{chunk-YT73QWCN.js → chunk-AUBJUUP3.js} +3 -3
  30. package/dist/{chunk-UEP36GCI.js → chunk-AVX7VVOK.js} +3 -3
  31. package/dist/{chunk-4B3IMP4I.js → chunk-BSN2TOQC.js} +1 -1
  32. package/dist/{chunk-4B3IMP4I.js.map → chunk-BSN2TOQC.js.map} +1 -1
  33. package/dist/{chunk-VOCOFE4I.js → chunk-DCEKU6UV.js} +2 -2
  34. package/dist/{chunk-E5LEU5PF.js → chunk-DGQKXSRI.js} +3 -3
  35. package/dist/{chunk-74OJIKXF.js → chunk-EQLHIPPR.js} +182 -142
  36. package/dist/chunk-EQLHIPPR.js.map +1 -0
  37. package/dist/{chunk-MDC7Y3EX.js → chunk-EYCORLYU.js} +44 -40
  38. package/dist/chunk-EYCORLYU.js.map +1 -0
  39. package/dist/{chunk-KAQJH2YL.js → chunk-FQDSV3NK.js} +13 -5
  40. package/dist/chunk-FQDSV3NK.js.map +1 -0
  41. package/dist/{chunk-XTRPX7JZ.js → chunk-FRSA2YB5.js} +3 -3
  42. package/dist/chunk-FRSA2YB5.js.map +1 -0
  43. package/dist/{chunk-ANB5BM5J.js → chunk-FVCYB5OP.js} +37 -32
  44. package/dist/chunk-FVCYB5OP.js.map +1 -0
  45. package/dist/{chunk-AMGWP7A4.js → chunk-GAI4VYRZ.js} +2 -2
  46. package/dist/{chunk-YETZPQFR.js → chunk-GWJIY56H.js} +19 -20
  47. package/dist/chunk-GWJIY56H.js.map +1 -0
  48. package/dist/{chunk-Q6M5TTDQ.js → chunk-JO33IORF.js} +2 -2
  49. package/dist/chunk-JO33IORF.js.map +1 -0
  50. package/dist/chunk-K4MMUDYT.js +391 -0
  51. package/dist/chunk-K4MMUDYT.js.map +1 -0
  52. package/dist/{chunk-XXHONFSQ.js → chunk-L3SY3J5M.js} +4 -4
  53. package/dist/{chunk-XXHONFSQ.js.map → chunk-L3SY3J5M.js.map} +1 -1
  54. package/dist/{chunk-JAROCU6M.js → chunk-NCSKCF2S.js} +3 -3
  55. package/dist/{chunk-CYV6632F.js → chunk-NOQR3TE7.js} +2 -2
  56. package/dist/{chunk-A6CT6GTI.js → chunk-OEP2D6QL.js} +18 -12
  57. package/dist/chunk-OEP2D6QL.js.map +1 -0
  58. package/dist/{chunk-2RJIDREZ.js → chunk-PAIB5V27.js} +32 -23
  59. package/dist/chunk-PAIB5V27.js.map +1 -0
  60. package/dist/{chunk-FGKMJS3B.js → chunk-RX32WLVJ.js} +2 -4
  61. package/dist/chunk-RX32WLVJ.js.map +1 -0
  62. package/dist/{chunk-YTQUNAZP.js → chunk-X3GZILYD.js} +3 -3
  63. package/dist/{chunk-25AKG5HH.js → chunk-Y575RZHR.js} +19 -11
  64. package/dist/chunk-Y575RZHR.js.map +1 -0
  65. package/dist/{chunk-RX55KAKX.js → chunk-ZWOAFHAR.js} +2 -2
  66. package/dist/{chunk-NNADGHSL.js → chunk-ZZMFXRQK.js} +14 -14
  67. package/dist/commonConstants.cjs.map +1 -1
  68. package/dist/commonConstants.d.cts +1 -1
  69. package/dist/commonConstants.d.ts +1 -1
  70. package/dist/commonConstants.js +1 -1
  71. package/dist/commonSelectors.cjs +47 -29
  72. package/dist/commonSelectors.cjs.map +1 -1
  73. package/dist/commonSelectors.d.cts +55 -46
  74. package/dist/commonSelectors.d.ts +55 -46
  75. package/dist/commonSelectors.js +11 -11
  76. package/dist/constants.cjs +35 -19
  77. package/dist/constants.cjs.map +1 -1
  78. package/dist/constants.d.cts +3 -3
  79. package/dist/constants.d.ts +3 -3
  80. package/dist/constants.js +7 -3
  81. package/dist/deploymentdevicehook.cjs +159 -125
  82. package/dist/deploymentdevicehook.cjs.map +1 -1
  83. package/dist/deploymentdevicehook.d.cts +1 -1
  84. package/dist/deploymentdevicehook.d.ts +1 -1
  85. package/dist/deploymentdevicehook.js +34 -31
  86. package/dist/deploymentdevicehook.js.map +1 -1
  87. package/dist/deploymentsSlice/constants.cjs +8 -8
  88. package/dist/deploymentsSlice/constants.cjs.map +1 -1
  89. package/dist/deploymentsSlice/constants.js +3 -3
  90. package/dist/deploymentsSlice/index.cjs +8 -8
  91. package/dist/deploymentsSlice/index.cjs.map +1 -1
  92. package/dist/deploymentsSlice/index.js +4 -4
  93. package/dist/deploymentsSlice/selectors.cjs +8 -8
  94. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  95. package/dist/deploymentsSlice/selectors.js +4 -4
  96. package/dist/deploymentsSlice/thunks.cjs +153 -120
  97. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  98. package/dist/deploymentsSlice/thunks.js +28 -27
  99. package/dist/devicesSlice/constants.cjs +11 -8
  100. package/dist/devicesSlice/constants.cjs.map +1 -1
  101. package/dist/devicesSlice/constants.d.cts +2 -1
  102. package/dist/devicesSlice/constants.d.ts +2 -1
  103. package/dist/devicesSlice/constants.js +5 -3
  104. package/dist/devicesSlice/index.cjs +8 -8
  105. package/dist/devicesSlice/index.cjs.map +1 -1
  106. package/dist/devicesSlice/index.js +4 -4
  107. package/dist/devicesSlice/selectors.cjs +9 -9
  108. package/dist/devicesSlice/selectors.cjs.map +1 -1
  109. package/dist/devicesSlice/selectors.js +4 -4
  110. package/dist/devicesSlice/thunks.cjs +155 -120
  111. package/dist/devicesSlice/thunks.cjs.map +1 -1
  112. package/dist/devicesSlice/thunks.d.cts +12 -2
  113. package/dist/devicesSlice/thunks.d.ts +12 -2
  114. package/dist/devicesSlice/thunks.js +30 -27
  115. package/dist/flag-eu-5477R2P4.svg +130 -0
  116. package/dist/flag-us-HNQAF66I.svg +63 -0
  117. package/dist/liststatehook.cjs +971 -0
  118. package/dist/liststatehook.cjs.map +1 -0
  119. package/dist/liststatehook.d.cts +246 -0
  120. package/dist/liststatehook.d.ts +246 -0
  121. package/dist/liststatehook.js +88 -0
  122. package/dist/liststatehook.js.map +1 -0
  123. package/dist/locationutils.cjs +942 -0
  124. package/dist/locationutils.cjs.map +1 -0
  125. package/dist/locationutils.d.cts +113 -0
  126. package/dist/locationutils.d.ts +113 -0
  127. package/dist/locationutils.js +46 -0
  128. package/dist/locationutils.js.map +1 -0
  129. package/dist/monitorSlice/constants.cjs +8 -8
  130. package/dist/monitorSlice/constants.cjs.map +1 -1
  131. package/dist/monitorSlice/constants.js +3 -3
  132. package/dist/monitorSlice/index.cjs +8 -8
  133. package/dist/monitorSlice/index.cjs.map +1 -1
  134. package/dist/monitorSlice/index.js +4 -4
  135. package/dist/monitorSlice/thunks.cjs +74 -62
  136. package/dist/monitorSlice/thunks.cjs.map +1 -1
  137. package/dist/monitorSlice/thunks.js +24 -24
  138. package/dist/onboardingSlice/index.cjs +1 -3
  139. package/dist/onboardingSlice/index.cjs.map +1 -1
  140. package/dist/onboardingSlice/index.js +1 -1
  141. package/dist/onboardingSlice/thunks.cjs +157 -124
  142. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  143. package/dist/onboardingSlice/thunks.d.cts +2 -34
  144. package/dist/onboardingSlice/thunks.d.ts +2 -34
  145. package/dist/onboardingSlice/thunks.js +28 -29
  146. package/dist/organizationSlice/constants.cjs +22 -17
  147. package/dist/organizationSlice/constants.cjs.map +1 -1
  148. package/dist/organizationSlice/constants.d.cts +33 -1
  149. package/dist/organizationSlice/constants.d.ts +33 -1
  150. package/dist/organizationSlice/constants.js +5 -3
  151. package/dist/organizationSlice/index.cjs +18 -15
  152. package/dist/organizationSlice/index.cjs.map +1 -1
  153. package/dist/organizationSlice/index.d.cts +27 -1012
  154. package/dist/organizationSlice/index.d.ts +27 -1012
  155. package/dist/organizationSlice/index.js +4 -4
  156. package/dist/organizationSlice/selectors.cjs.map +1 -1
  157. package/dist/organizationSlice/selectors.d.cts +10 -1
  158. package/dist/organizationSlice/selectors.d.ts +10 -1
  159. package/dist/organizationSlice/selectors.js +4 -4
  160. package/dist/organizationSlice/thunks.cjs +1619 -1559
  161. package/dist/organizationSlice/thunks.cjs.map +1 -1
  162. package/dist/organizationSlice/thunks.d.cts +62 -37
  163. package/dist/organizationSlice/thunks.d.ts +62 -37
  164. package/dist/organizationSlice/thunks.js +28 -27
  165. package/dist/organizationSlice/types.cjs +19 -0
  166. package/dist/organizationSlice/types.cjs.map +1 -0
  167. package/dist/organizationSlice/types.d.cts +5 -0
  168. package/dist/organizationSlice/types.d.ts +5 -0
  169. package/dist/organizationSlice/types.js +1 -0
  170. package/dist/organizationSlice/types.js.map +1 -0
  171. package/dist/releasesSlice/index.cjs.map +1 -1
  172. package/dist/releasesSlice/index.js +4 -4
  173. package/dist/releasesSlice/selectors.cjs +17 -8
  174. package/dist/releasesSlice/selectors.cjs.map +1 -1
  175. package/dist/releasesSlice/selectors.js +5 -5
  176. package/dist/releasesSlice/thunks.cjs +123 -94
  177. package/dist/releasesSlice/thunks.cjs.map +1 -1
  178. package/dist/releasesSlice/thunks.d.cts +1 -4
  179. package/dist/releasesSlice/thunks.d.ts +1 -4
  180. package/dist/releasesSlice/thunks.js +25 -24
  181. package/dist/selectors.cjs +53 -29
  182. package/dist/selectors.cjs.map +1 -1
  183. package/dist/selectors.d.cts +10 -1
  184. package/dist/selectors.d.ts +10 -1
  185. package/dist/selectors.js +49 -43
  186. package/dist/sockethook.cjs +529 -0
  187. package/dist/sockethook.cjs.map +1 -0
  188. package/dist/sockethook.d.cts +10 -0
  189. package/dist/sockethook.d.ts +10 -0
  190. package/dist/sockethook.js +141 -0
  191. package/dist/sockethook.js.map +1 -0
  192. package/dist/store.cjs +38 -29
  193. package/dist/store.cjs.map +1 -1
  194. package/dist/store.d.cts +13 -231
  195. package/dist/store.d.ts +13 -231
  196. package/dist/store.js +18 -16
  197. package/dist/storehooks.cjs +273 -198
  198. package/dist/storehooks.cjs.map +1 -1
  199. package/dist/storehooks.js +38 -37
  200. package/dist/storehooks.js.map +1 -1
  201. package/dist/thunks.cjs +259 -184
  202. package/dist/thunks.cjs.map +1 -1
  203. package/dist/thunks.d.cts +6 -2
  204. package/dist/thunks.d.ts +6 -2
  205. package/dist/thunks.js +30 -29
  206. package/dist/types-DBj17FZO.d.cts +135 -0
  207. package/dist/types-DnfZa6xd.d.ts +135 -0
  208. package/dist/usersSlice/constants.cjs +10 -10
  209. package/dist/usersSlice/constants.cjs.map +1 -1
  210. package/dist/usersSlice/constants.d.cts +6 -6
  211. package/dist/usersSlice/constants.d.ts +6 -6
  212. package/dist/usersSlice/constants.js +3 -3
  213. package/dist/usersSlice/index.cjs +10 -10
  214. package/dist/usersSlice/index.cjs.map +1 -1
  215. package/dist/usersSlice/index.js +4 -4
  216. package/dist/usersSlice/selectors.cjs +35 -13
  217. package/dist/usersSlice/selectors.cjs.map +1 -1
  218. package/dist/usersSlice/selectors.d.cts +44 -1
  219. package/dist/usersSlice/selectors.d.ts +44 -1
  220. package/dist/usersSlice/selectors.js +13 -7
  221. package/dist/usersSlice/thunks.cjs +151 -120
  222. package/dist/usersSlice/thunks.cjs.map +1 -1
  223. package/dist/usersSlice/thunks.d.cts +10 -9
  224. package/dist/usersSlice/thunks.d.ts +10 -9
  225. package/dist/usersSlice/thunks.js +28 -27
  226. package/dist/utils.cjs +23 -24
  227. package/dist/utils.cjs.map +1 -1
  228. package/dist/utils.js +4 -4
  229. package/package.json +7 -6
  230. package/dist/chunk-25AKG5HH.js.map +0 -1
  231. package/dist/chunk-2RJIDREZ.js.map +0 -1
  232. package/dist/chunk-74OJIKXF.js.map +0 -1
  233. package/dist/chunk-A6CT6GTI.js.map +0 -1
  234. package/dist/chunk-ANB5BM5J.js.map +0 -1
  235. package/dist/chunk-FGKMJS3B.js.map +0 -1
  236. package/dist/chunk-KAQJH2YL.js.map +0 -1
  237. package/dist/chunk-MDC7Y3EX.js.map +0 -1
  238. package/dist/chunk-Q6M5TTDQ.js.map +0 -1
  239. package/dist/chunk-XTRPX7JZ.js.map +0 -1
  240. package/dist/chunk-YETZPQFR.js.map +0 -1
  241. /package/dist/{chunk-YGBFDXXA.js.map → chunk-7YZCUAXZ.js.map} +0 -0
  242. /package/dist/{chunk-YT73QWCN.js.map → chunk-AUBJUUP3.js.map} +0 -0
  243. /package/dist/{chunk-UEP36GCI.js.map → chunk-AVX7VVOK.js.map} +0 -0
  244. /package/dist/{chunk-VOCOFE4I.js.map → chunk-DCEKU6UV.js.map} +0 -0
  245. /package/dist/{chunk-E5LEU5PF.js.map → chunk-DGQKXSRI.js.map} +0 -0
  246. /package/dist/{chunk-AMGWP7A4.js.map → chunk-GAI4VYRZ.js.map} +0 -0
  247. /package/dist/{chunk-JAROCU6M.js.map → chunk-NCSKCF2S.js.map} +0 -0
  248. /package/dist/{chunk-CYV6632F.js.map → chunk-NOQR3TE7.js.map} +0 -0
  249. /package/dist/{chunk-YTQUNAZP.js.map → chunk-X3GZILYD.js.map} +0 -0
  250. /package/dist/{chunk-RX55KAKX.js.map → chunk-ZWOAFHAR.js.map} +0 -0
  251. /package/dist/{chunk-NNADGHSL.js.map → chunk-ZZMFXRQK.js.map} +0 -0
@@ -71,28 +71,28 @@ var PLANS = {
71
71
  id: "os",
72
72
  name: "Basic",
73
73
  offer: true,
74
- price: "$32/month",
74
+ price: "$32 / month",
75
75
  deviceCount: startingDeviceCount.os,
76
- offerprice: "$23/month for first 50 devices",
76
+ offerprice: "$23 / month for first 50 devices",
77
77
  price2: "for first 6 months;\n$29/month thereafter",
78
- features: ["Basic OTA features"]
78
+ features: ["Access to core features of Mender", "Basic support"]
79
79
  },
80
80
  professional: {
81
81
  id: "professional",
82
82
  name: "Professional",
83
83
  offer: true,
84
- price: "$269/month",
84
+ price: "$269 / month",
85
85
  deviceCount: startingDeviceCount.professional,
86
- offerprice: "$200/month for first 50 devices",
86
+ offerprice: "$200 / month for first 50 devices",
87
87
  price2: "for first 6 months;\n$249/month thereafter",
88
- features: ["+ Advanced OTA features", "+ Standard support"]
88
+ features: ["Advanced OTA features", "Higher priority support"]
89
89
  },
90
90
  enterprise: {
91
91
  id: "enterprise",
92
92
  name: "Enterprise",
93
93
  price: "Custom pricing",
94
- deviceCount: "unlimited devices",
95
- features: ["+ Enterprise-grade OTA features", "+ Premium support"]
94
+ deviceCount: "Unlimited devices",
95
+ features: ["All Mender features", "Advanced security features", "SLA-backed support"]
96
96
  }
97
97
  };
98
98
  var ADDONS = {
@@ -563,6 +563,7 @@ var DEVICE_STATES = {
563
563
  rejected: "rejected"
564
564
  };
565
565
  var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
566
+ var REPORT_CHART_SIZE_LIMIT = 6;
566
567
 
567
568
  // src/monitorSlice/constants.ts
568
569
  var alertChannels = { email: "email" };
@@ -644,13 +645,16 @@ var SSO_TYPES = {
644
645
  configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
645
646
  }
646
647
  };
647
- var AUDIT_LOGS_TYPES = [
648
- { title: "Artifact", queryParameter: "object_type", value: "artifact" },
649
- { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
650
- { title: "Device", queryParameter: "object_id", value: "device" },
651
- { title: "User", queryParameter: "object_id", value: "user" }
652
- ];
653
- var SP_AUDIT_LOGS_TYPES = [AUDIT_LOGS_TYPES[3], { title: "Tenant", queryParameter: "object_id", value: "tenant" }];
648
+ var auditlogTypes = {
649
+ artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
650
+ deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
651
+ device: { title: "Device", queryParameter: "object_id", value: "device" },
652
+ user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
653
+ user: { title: "User", queryParameter: "object_id", value: "user" },
654
+ tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
655
+ };
656
+ var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
657
+ var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
654
658
  var emptyWebhook = {
655
659
  description: "",
656
660
  enabled: true,
@@ -783,7 +787,7 @@ var uiPermissionsByArea = {
783
787
  explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
784
788
  key: "auditlog",
785
789
  uiPermissions: [uiPermissionsById.read],
786
- title: "System audit log"
790
+ title: "System Audit Log"
787
791
  },
788
792
  deployments: {
789
793
  endpoints: [
@@ -934,7 +938,7 @@ var serviceProviderRolesById = {
934
938
  },
935
939
  readOnly: {
936
940
  name: "Read access",
937
- value: staticRolesByName.admin,
941
+ value: staticRolesByName.readOnly,
938
942
  description: "This role can see all linked organizations but cannot make any changes",
939
943
  permissions: [],
940
944
  uiPermissions: {
@@ -1266,7 +1270,7 @@ var getGroups = (0, import_toolkit3.createSelector)([getGroupsById], (groupsById
1266
1270
  (accu, [groupname, group]) => {
1267
1271
  const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
1268
1272
  const groupItem = { ...group, groupId: name, name: groupname };
1269
- if (group.filters.length > 0) {
1273
+ if (group.filters?.length > 0) {
1270
1274
  if (groupname !== UNGROUPED_GROUP.id) {
1271
1275
  accu.dynamic.push(groupItem);
1272
1276
  } else {
@@ -1339,14 +1343,15 @@ var getAuditLogEntry = (0, import_toolkit4.createSelector)([getAuditLog, getAudi
1339
1343
  // src/utils.ts
1340
1344
  var import_helpers3 = require("@northern.tech/utils/helpers");
1341
1345
  var filterProcessors = {
1342
- $gt: (val) => Number(val) || val,
1343
- $gte: (val) => Number(val) || val,
1344
- $lt: (val) => Number(val) || val,
1345
- $lte: (val) => Number(val) || val,
1346
- $in: (val) => ("" + val).split(",").map((i) => i.trim()),
1347
- $nin: (val) => ("" + val).split(",").map((i) => i.trim()),
1348
- $exists: import_helpers3.yes,
1349
- $nexists: () => false
1346
+ [DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
1347
+ [DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
1348
+ [DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
1349
+ [DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
1350
+ [DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
1351
+ [DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
1352
+ [DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
1353
+ [DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers3.yes,
1354
+ [DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
1350
1355
  };
1351
1356
  var filterAliases = {
1352
1357
  $nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
@@ -1390,14 +1395,12 @@ var filtersFilter = (item, index, array) => {
1390
1395
  const firstIndex = array.findIndex((filter) => filterCompare(filter, item));
1391
1396
  return firstIndex === index;
1392
1397
  };
1393
- var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => {
1394
- return ids.slice(0, cutOffSize).reduce((accu, id) => {
1395
- if (id && byId[id]) {
1396
- accu.push({ ...defaultObject, ...byId[id] });
1397
- }
1398
- return accu;
1399
- }, []);
1400
- };
1398
+ var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => ids.slice(0, cutOffSize).reduce((accu, id) => {
1399
+ if (id && byId[id]) {
1400
+ accu.push({ ...defaultObject, ...byId[id] });
1401
+ }
1402
+ return accu;
1403
+ }, []);
1401
1404
  var mergePermissions = (existingPermissions = { ...emptyUiPermissions }, addedPermissions) => Object.entries(existingPermissions).reduce(
1402
1405
  (accu, [key, value]) => {
1403
1406
  let values;
@@ -1470,8 +1473,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
1470
1473
  var getGlobalSettings = (state) => state.users.globalSettings;
1471
1474
  var getCurrentUserId = (state) => state.users.currentUser;
1472
1475
  var getUsersById = (state) => state.users.byId;
1476
+ var getUsersList = (0, import_toolkit6.createSelector)([getUsersById], (usersById) => Object.values(usersById));
1473
1477
  var getCurrentUser = (0, import_toolkit6.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
1474
1478
  var getUserSettings = (state) => state.users.userSettings;
1479
+ var getSelectedDeviceAttribute = (0, import_toolkit6.createSelector)(
1480
+ [getUserSettings],
1481
+ ({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
1482
+ );
1475
1483
  var getIsDarkMode = (0, import_toolkit6.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
1476
1484
  var getShowHelptips = (0, import_toolkit6.createSelector)(
1477
1485
  [getTooltipsById],
@@ -1496,7 +1504,7 @@ var getOfflineThresholdSettings = (0, import_toolkit6.createSelector)([getGlobal
1496
1504
  interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
1497
1505
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
1498
1506
  }));
1499
- var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([id, role]) => ({ id, ...role })));
1507
+ var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
1500
1508
 
1501
1509
  // src/commonSelectors.ts
1502
1510
  var getIsEnterprise = (0, import_toolkit7.createSelector)(
@@ -1557,12 +1565,18 @@ var getUserCapabilities = (0, import_toolkit7.createSelector)([getUserRoles, get
1557
1565
  });
1558
1566
  var getTenantCapabilities = (0, import_toolkit7.createSelector)(
1559
1567
  [getFeatures, getOrganization, getIsEnterprise],
1560
- ({ hasAuditlogs: isAuditlogEnabled, hasDeviceConfig: isDeviceConfigEnabled, hasDeviceConnect: isDeviceConnectEnabled, hasMonitor: isMonitorEnabled }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
1568
+ ({
1569
+ hasAuditlogs: isAuditlogEnabled,
1570
+ hasDeviceConfig: isDeviceConfigEnabled,
1571
+ hasDeviceConnect: isDeviceConnectEnabled,
1572
+ hasMonitor: isMonitorEnabled,
1573
+ isHosted
1574
+ }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
1561
1575
  const canDelta = isEnterprise || plan === PLANS.professional.id;
1562
1576
  const hasAuditlogs = isAuditlogEnabled && isEnterprise;
1563
- const hasDeviceConfig = isDeviceConfigEnabled && addons.some((addon) => addon.name === "configure" && Boolean(addon.enabled));
1564
- const hasDeviceConnect = isDeviceConnectEnabled && (!isEnterprise || addons.some((addon) => addon.name === "troubleshoot" && Boolean(addon.enabled)));
1565
- const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === "monitor" && Boolean(addon.enabled));
1577
+ const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
1578
+ const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
1579
+ const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
1566
1580
  return {
1567
1581
  canDelta,
1568
1582
  canRetry: canDelta,
@@ -1666,9 +1680,7 @@ var getGroupNames = (0, import_toolkit7.createSelector)([getGroupsById, getUserR
1666
1680
  });
1667
1681
  var getDeviceReportsForUser = (0, import_toolkit7.createSelector)(
1668
1682
  [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],
1669
- ({ reports }, { id: currentUserId }, globalSettings, devicesById) => {
1670
- return reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : []);
1671
- }
1683
+ ({ reports }, { id: currentUserId }, globalSettings, devicesById) => reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])
1672
1684
  );
1673
1685
  var listTypeDeviceIdMap = {
1674
1686
  deviceList: getListedDevices,
@@ -1692,7 +1704,7 @@ var getAuditlogDevice = (0, import_toolkit7.createSelector)([getAuditLogEntry, g
1692
1704
  var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
1693
1705
  if (service_provider) {
1694
1706
  return roles.reduce((accu, role) => {
1695
- if (rolesById[role.id]) {
1707
+ if (rolesById[role.value]) {
1696
1708
  return accu;
1697
1709
  }
1698
1710
  accu.push(role);
@@ -1700,7 +1712,7 @@ var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, get
1700
1712
  }, Object.values(serviceProviderRolesById));
1701
1713
  }
1702
1714
  return Object.keys(rolesById).reverse().reduce((accu, key) => {
1703
- const index = accu.findIndex(({ id }) => id === key);
1715
+ const index = accu.findIndex(({ value }) => value === key);
1704
1716
  accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
1705
1717
  return accu;
1706
1718
  }, roles);
@@ -1838,9 +1850,7 @@ var appSlice = (0, import_toolkit8.createSlice)({
1838
1850
  ...action.payload
1839
1851
  };
1840
1852
  },
1841
- setEnvironmentData: (state, action) => {
1842
- return { ...state, ...action.payload };
1843
- }
1853
+ setEnvironmentData: (state, action) => ({ ...state, ...action.payload })
1844
1854
  }
1845
1855
  });
1846
1856
  var actions = appSlice.actions;
@@ -2215,9 +2225,7 @@ var onboardingSlice = (0, import_toolkit12.createSlice)({
2215
2225
  name: sliceName5,
2216
2226
  initialState: initialState5,
2217
2227
  reducers: {
2218
- setOnboardingState: (state, action) => {
2219
- return { ...state, ...action.payload };
2220
- },
2228
+ setOnboardingState: (state, action) => ({ ...state, ...action.payload }),
2221
2229
  setDemoArtifactPort: (state, action) => {
2222
2230
  state.demoArtifactPort = action.payload;
2223
2231
  },
@@ -2576,13 +2584,12 @@ var actions_default = {
2576
2584
  };
2577
2585
 
2578
2586
  // src/store.ts
2587
+ var import_react_redux = require("react-redux");
2579
2588
  var import_helpers6 = require("@northern.tech/utils/helpers");
2580
2589
  var import_toolkit16 = require("@reduxjs/toolkit");
2581
2590
  var { setSnackbar, uploadProgress } = actions_default;
2582
2591
  var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
2583
- var resetEnvironment = () => {
2584
- keys.map((key) => window.sessionStorage.removeItem(key));
2585
- };
2592
+ var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
2586
2593
  resetEnvironment();
2587
2594
  var commonErrorFallback = "Please check your connection.";
2588
2595
  var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
@@ -2608,6 +2615,14 @@ var sessionReducer = (state, action) => {
2608
2615
  }
2609
2616
  return rootReducer(state, action);
2610
2617
  };
2618
+ var rejectionLoggerMiddleware = () => (next) => (action) => {
2619
+ if (action.type.endsWith("/rejected")) {
2620
+ const { error } = action;
2621
+ console.error("Rejection in action:", action);
2622
+ console.error(error.stack);
2623
+ }
2624
+ return next(action);
2625
+ };
2611
2626
  var getConfiguredStore = (options = {}) => {
2612
2627
  const { preloadedState = {}, ...config } = options;
2613
2628
  return (0, import_toolkit16.configureStore)({
@@ -2623,7 +2638,7 @@ var getConfiguredStore = (options = {}) => {
2623
2638
  ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
2624
2639
  ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
2625
2640
  }
2626
- })
2641
+ }).concat(rejectionLoggerMiddleware)
2627
2642
  });
2628
2643
  };
2629
2644
  var store = getConfiguredStore({
@@ -2632,12 +2647,13 @@ var store = getConfiguredStore({
2632
2647
 
2633
2648
  // src/deploymentsSlice/thunks.ts
2634
2649
  var import_helpers7 = require("@northern.tech/utils/helpers");
2650
+ var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
2635
2651
  var import_toolkit17 = require("@reduxjs/toolkit");
2636
2652
  var import_validator = require("validator");
2637
2653
  var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
2638
2654
  var { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;
2639
2655
  var deriveDeploymentGroup = ({ filter = {}, group, groups = [], name }) => group || groups.length === 1 && !(0, import_validator.isUUID)(name) ? groups[0] : filter.name;
2640
- var transformDeployments = (deployments, deploymentsById) => deployments.sort(import_helpers7.startTimeSort).reduce(
2656
+ var transformDeployments = (deployments, deploymentsById) => deployments.sort((0, import_helpers7.customSort)(true, "created")).reduce(
2641
2657
  (accu, item) => {
2642
2658
  const filter = item.filter ?? {};
2643
2659
  let deployment = {
@@ -2688,6 +2704,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit17.createAsyncThunk)(`${sliceNam
2688
2704
  return Promise.all(tasks);
2689
2705
  });
2690
2706
  });
2707
+ var isWithinFirstMonth = (expirationDate) => {
2708
+ if (!expirationDate) {
2709
+ return false;
2710
+ }
2711
+ const endOfFirstMonth = new Date(expirationDate);
2712
+ endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
2713
+ return endOfFirstMonth > /* @__PURE__ */ new Date();
2714
+ };
2715
+ var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
2716
+ import_tracking.default.event({ category: "deployments", action: "create" });
2717
+ if (!totalDeploymentCount) {
2718
+ if (!hasDeployments) {
2719
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
2720
+ if (isWithinFirstMonth(trial_expiration)) {
2721
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
2722
+ }
2723
+ }
2724
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
2725
+ }
2726
+ };
2691
2727
  var MAX_PREVIOUS_PHASES_COUNT = 5;
2692
2728
  var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
2693
2729
  let request;
@@ -2698,6 +2734,9 @@ var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/cre
2698
2734
  } else {
2699
2735
  request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
2700
2736
  }
2737
+ const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
2738
+ const { hasDeployments } = getGlobalSettings(getState());
2739
+ const { trial_expiration } = getOrganization(getState());
2701
2740
  return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
2702
2741
  const lastslashindex = data.headers.location.lastIndexOf("/");
2703
2742
  const deploymentId = data.headers.location.substring(lastslashindex + 1);
@@ -2712,6 +2751,7 @@ var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/cre
2712
2751
  dispatch(getSingleDeployment(deploymentId)),
2713
2752
  dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
2714
2753
  ];
2754
+ trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
2715
2755
  const { canManageUsers } = getUserCapabilities(getState());
2716
2756
  if (canManageUsers) {
2717
2757
  const { phases, retries } = newDeployment;
@@ -3386,7 +3426,7 @@ var getDevicesByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/
3386
3426
  page = defaultPage2,
3387
3427
  perPage = defaultPerPage2,
3388
3428
  sortOptions = [],
3389
- selectedAttributes = []
3429
+ selectedAttributes = getSelectedDeviceAttribute(getState())
3390
3430
  } = options;
3391
3431
  const state = getState();
3392
3432
  const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
@@ -3499,7 +3539,6 @@ var getReportingLimits = (0, import_toolkit18.createAsyncThunk)(
3499
3539
  })
3500
3540
  );
3501
3541
  var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
3502
- var REPORT_CHART_SIZE_LIMIT = 6;
3503
3542
  var getSingleReportData = (reportConfig, groups) => {
3504
3543
  const { attribute, group, software = "" } = reportConfig;
3505
3544
  const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
@@ -3579,6 +3618,13 @@ var getDeviceConnect = (0, import_toolkit18.createAsyncThunk)(
3579
3618
  ({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
3580
3619
  )
3581
3620
  );
3621
+ var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
3622
+ var triggerDeviceUpdate = (0, import_toolkit18.createAsyncThunk)(
3623
+ `${sliceName3}/triggerDeviceUpdate`,
3624
+ ({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
3625
+ () => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
3626
+ )
3627
+ );
3582
3628
  var getSessionDetails = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
3583
3629
  const { start: startUnix, end: endUnix } = (0, import_helpers8.dateRangeToUnix)(startDate, endDate);
3584
3630
  const createdAfter = startDate ? `&created_after=${startUnix}` : "";
@@ -3681,12 +3727,12 @@ var deleteAuthset = (0, import_toolkit18.createAsyncThunk)(
3681
3727
  );
3682
3728
  var preauthDevice = (0, import_toolkit18.createAsyncThunk)(
3683
3729
  `${sliceName3}/preauthDevice`,
3684
- (authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
3730
+ (authset, { dispatch, rejectWithValue }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds)))).catch((err) => {
3685
3731
  if (err.response.status === 409) {
3686
- return Promise.reject("A device with a matching identity data set already exists");
3732
+ return rejectWithValue("A device with a matching identity data set already exists");
3687
3733
  }
3688
3734
  return commonErrorHandler(err, "The device could not be added:", dispatch);
3689
- }).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds))))
3735
+ })
3690
3736
  );
3691
3737
  var decommissionDevice = (0, import_toolkit18.createAsyncThunk)(
3692
3738
  `${sliceName3}/decommissionDevice`,
@@ -3903,16 +3949,17 @@ var getDeviceMonitorConfig = (0, import_toolkit19.createAsyncThunk)(
3903
3949
  );
3904
3950
  var changeNotificationSetting = (0, import_toolkit19.createAsyncThunk)(
3905
3951
  `${sliceName4}/changeNotificationSetting`,
3906
- ({ enabled, channel = alertChannels.email }, { dispatch }) => {
3907
- return general_api_default.put(`${monitorApiUrlv1}/settings/global/channel/alerts/${channel}/status`, { enabled }).catch((err) => commonErrorHandler(err, `${enabled ? "En" : "Dis"}abling ${channel} alerts failed:`, dispatch)).then(
3908
- () => Promise.all([
3909
- dispatch(actions4.changeAlertChannel({ channel, enabled })),
3910
- dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
3911
- ])
3912
- );
3913
- }
3952
+ ({ enabled, channel = alertChannels.email }, { dispatch }) => general_api_default.put(`${monitorApiUrlv1}/settings/global/channel/alerts/${channel}/status`, { enabled }).catch((err) => commonErrorHandler(err, `${enabled ? "En" : "Dis"}abling ${channel} alerts failed:`, dispatch)).then(
3953
+ () => Promise.all([
3954
+ dispatch(actions4.changeAlertChannel({ channel, enabled })),
3955
+ dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
3956
+ ])
3957
+ )
3914
3958
  );
3915
3959
 
3960
+ // src/usersSlice/thunks.ts
3961
+ var import_helptips = require("@northern.tech/common-ui/helptips");
3962
+
3916
3963
  // src/api/users-api.ts
3917
3964
  var import_axios3 = __toESM(require("axios"), 1);
3918
3965
  var Api2 = {
@@ -3946,7 +3993,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
3946
3993
  }
3947
3994
  const twoFAError = is2FABackend ? " and verification code" : "";
3948
3995
  const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
3949
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), null, "Copy to clipboard")));
3996
+ return Promise.reject(dispatch(setSnackbar4({ message: (0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
3950
3997
  };
3951
3998
  var loginUser = (0, import_toolkit20.createAsyncThunk)(
3952
3999
  `${sliceName8}/loginUser`,
@@ -3970,19 +4017,16 @@ var loginUser = (0, import_toolkit20.createAsyncThunk)(
3970
4017
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
3971
4018
  setSessionInfo({ token, expiresAt });
3972
4019
  cookies2.remove("JWT", { path: "/" });
3973
- return (
3974
- // @ts-ignore
3975
- Promise.resolve(dispatch(getUser(OWN_USER_ID))).unwrap().catch((e) => {
3976
- cleanUp();
3977
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.extractErrorMessage)(e))));
3978
- }).then(() => {
3979
- window.sessionStorage.removeItem("pendings-redirect");
3980
- if (window.location.pathname !== "/ui/") {
3981
- window.location.replace("/ui/");
3982
- }
3983
- return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
3984
- })
3985
- );
4020
+ return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
4021
+ cleanUp();
4022
+ return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.extractErrorMessage)(e))));
4023
+ }).then(() => {
4024
+ window.sessionStorage.removeItem("pendings-redirect");
4025
+ if (window.location.pathname !== "/ui/") {
4026
+ window.location.replace("/ui/");
4027
+ }
4028
+ return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
4029
+ });
3986
4030
  })
3987
4031
  );
3988
4032
  var logoutUser = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
@@ -4000,6 +4044,7 @@ var switchUserOrganization = (0, import_toolkit20.createAsyncThunk)(`${sliceName
4000
4044
  return Promise.reject();
4001
4045
  }
4002
4046
  return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
4047
+ window.sessionStorage.setItem("tenantChanged", "true");
4003
4048
  setSessionInfo({ ...getSessionInfo(), token });
4004
4049
  window.location.reload();
4005
4050
  });
@@ -4040,11 +4085,18 @@ var verify2FA = (0, import_toolkit20.createAsyncThunk)(
4040
4085
  );
4041
4086
  var getUserList = (0, import_toolkit20.createAsyncThunk)(
4042
4087
  `${sliceName8}/getUserList`,
4043
- (_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4044
- const users = res.data.reduce((accu, item) => {
4045
- accu[item.id] = item;
4046
- return accu;
4047
- }, {});
4088
+ (_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4089
+ const currentUsersById = getUsersById(getState());
4090
+ const users = res.data.reduce(
4091
+ (accu, item) => {
4092
+ accu[item.id] = {
4093
+ ...accu[item.id],
4094
+ ...item
4095
+ };
4096
+ return accu;
4097
+ },
4098
+ { ...currentUsersById }
4099
+ );
4048
4100
  return dispatch(actions8.receivedUserList(users));
4049
4101
  }).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
4050
4102
  );
@@ -4053,9 +4105,7 @@ var getUser = (0, import_toolkit20.createAsyncThunk)(
4053
4105
  (id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
4054
4106
  ({ data: user }) => Promise.all([
4055
4107
  dispatch(actions8.receivedUser(user)),
4056
- // @ts-ignore
4057
4108
  dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
4058
- // @ts-ignore
4059
4109
  dispatch(updateUserColumnSettings({ currentUserId: user.id })),
4060
4110
  user
4061
4111
  ])
@@ -4102,10 +4152,7 @@ var createUser = (0, import_toolkit20.createAsyncThunk)(
4102
4152
  );
4103
4153
  var removeUser = (0, import_toolkit20.createAsyncThunk)(
4104
4154
  `${sliceName8}/removeUser`,
4105
- (userId, { dispatch }) => (
4106
- // @ts-ignore
4107
- general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar4(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
4108
- )
4155
+ (userId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar4(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
4109
4156
  );
4110
4157
  var editUser = (0, import_toolkit20.createAsyncThunk)(
4111
4158
  `${sliceName8}/editUser`,
@@ -4126,7 +4173,7 @@ var enableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4126
4173
  );
4127
4174
  var disableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4128
4175
  `${sliceName8}/disableUser2fa`,
4129
- (userId = OWN_USER_ID, { dispatch }) => general_api_default.post(`${useradmApiUrlv1}/users/${userId}/2fa/disable`).catch((err) => commonErrorHandler(err, `There was an error disabling Two Factor authentication for the user.`, dispatch)).then(() => Promise.resolve(dispatch(getUser(userId))))
4176
+ (userId = OWN_USER_ID, { dispatch }) => general_api_default.post(`${useradmApiUrlv1}/users/${userId}/2fa/disable`).catch((err) => commonErrorHandler(err, `There was an error disabling Two Factor authentication for the user.`, dispatch)).then(() => Promise.all([dispatch(getUser(userId)), dispatch(actions8.receivedQrCode(null))]))
4130
4177
  );
4131
4178
  var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
4132
4179
  (accu, [area, definition]) => {
@@ -4279,7 +4326,6 @@ var getPermissionSets = (0, import_toolkit20.createAsyncThunk)(
4279
4326
  accu[permissionSet.name] = permissionSetObject;
4280
4327
  return accu;
4281
4328
  },
4282
- // @ts-ignore
4283
4329
  { ...getState().users.permissionSetsById }
4284
4330
  );
4285
4331
  return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
@@ -4372,7 +4418,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
4372
4418
  role: {
4373
4419
  ...emptyRole,
4374
4420
  name,
4375
- // @ts-ignore
4376
4421
  description: description ? description : roleState.description,
4377
4422
  uiPermissions: {
4378
4423
  ...emptyUiPermissions,
@@ -4415,10 +4460,7 @@ var editRole = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/editRole`,
4415
4460
  });
4416
4461
  var removeRole = (0, import_toolkit20.createAsyncThunk)(
4417
4462
  `${sliceName8}/removeRole`,
4418
- (roleId, { dispatch }) => (
4419
- // @ts-ignore
4420
- general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar4(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
4421
- )
4463
+ (roleId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar4(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
4422
4464
  );
4423
4465
  var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4424
4466
  `${sliceName8}/getGlobalSettings`,
@@ -4429,7 +4471,6 @@ var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4429
4471
  );
4430
4472
  var saveGlobalSettings = (0, import_toolkit20.createAsyncThunk)(
4431
4473
  `${sliceName8}/saveGlobalSettings`,
4432
- // @ts-ignore
4433
4474
  ({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
4434
4475
  if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
4435
4476
  return;
@@ -4475,11 +4516,9 @@ var saveUserSettings = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/sav
4475
4516
  const tooltipState = getTooltipsState(getState());
4476
4517
  const updatedSettings = {
4477
4518
  ...userSettings,
4478
- // @ts-ignore
4479
4519
  ...settings,
4480
4520
  onboarding: {
4481
4521
  ...onboardingState,
4482
- // @ts-ignore
4483
4522
  ...settings.onboarding
4484
4523
  },
4485
4524
  tooltips: tooltipState
@@ -4523,10 +4562,7 @@ var generateToken = (0, import_toolkit20.createAsyncThunk)(
4523
4562
  );
4524
4563
  var revokeToken = (0, import_toolkit20.createAsyncThunk)(
4525
4564
  `${sliceName8}/revokeToken`,
4526
- (token, { dispatch }) => (
4527
- // @ts-ignore
4528
- general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4529
- )
4565
+ (token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4530
4566
  );
4531
4567
  var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
4532
4568
  let tasks = [dispatch(actions8.setTooltipState(remainder))];
@@ -4535,23 +4571,20 @@ var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/
4535
4571
  }
4536
4572
  return Promise.all(tasks);
4537
4573
  });
4538
- var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, ({ readState = READ_STATES.read, tooltips }, { dispatch }) => {
4539
- const updatedTips = tooltips.reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4574
+ var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
4575
+ const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4540
4576
  return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
4541
4577
  });
4542
4578
  var submitFeedback = (0, import_toolkit20.createAsyncThunk)(
4543
4579
  `${sliceName8}/submitFeedback`,
4544
- // @ts-ignore
4545
- ({ satisfaction, feedback, ...meta }, { dispatch }) => {
4546
- return general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4547
- subject: "feedback submission",
4548
- body: JSON.stringify({ feedback, satisfaction, meta })
4549
- }).then(() => {
4550
- const today = /* @__PURE__ */ new Date();
4551
- dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4552
- setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4553
- });
4554
- }
4580
+ ({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4581
+ subject: "feedback submission",
4582
+ body: JSON.stringify({ feedback, satisfaction, meta })
4583
+ }).then(() => {
4584
+ const today = /* @__PURE__ */ new Date();
4585
+ dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4586
+ setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4587
+ })
4555
4588
  );
4556
4589
 
4557
4590
  // src/appSlice/thunks.ts