@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
@@ -68,6 +68,7 @@ __export(thunks_exports, {
68
68
  verifyEmailStart: () => verifyEmailStart
69
69
  });
70
70
  module.exports = __toCommonJS(thunks_exports);
71
+ var import_helptips = require("@northern.tech/common-ui/helptips");
71
72
 
72
73
  // src/appSlice/constants.ts
73
74
  var import_icons_material = require("@mui/icons-material");
@@ -97,28 +98,28 @@ var PLANS = {
97
98
  id: "os",
98
99
  name: "Basic",
99
100
  offer: true,
100
- price: "$32/month",
101
+ price: "$32 / month",
101
102
  deviceCount: startingDeviceCount.os,
102
- offerprice: "$23/month for first 50 devices",
103
+ offerprice: "$23 / month for first 50 devices",
103
104
  price2: "for first 6 months;\n$29/month thereafter",
104
- features: ["Basic OTA features"]
105
+ features: ["Access to core features of Mender", "Basic support"]
105
106
  },
106
107
  professional: {
107
108
  id: "professional",
108
109
  name: "Professional",
109
110
  offer: true,
110
- price: "$269/month",
111
+ price: "$269 / month",
111
112
  deviceCount: startingDeviceCount.professional,
112
- offerprice: "$200/month for first 50 devices",
113
+ offerprice: "$200 / month for first 50 devices",
113
114
  price2: "for first 6 months;\n$249/month thereafter",
114
- features: ["+ Advanced OTA features", "+ Standard support"]
115
+ features: ["Advanced OTA features", "Higher priority support"]
115
116
  },
116
117
  enterprise: {
117
118
  id: "enterprise",
118
119
  name: "Enterprise",
119
120
  price: "Custom pricing",
120
- deviceCount: "unlimited devices",
121
- features: ["+ Enterprise-grade OTA features", "+ Premium support"]
121
+ deviceCount: "Unlimited devices",
122
+ features: ["All Mender features", "Advanced security features", "SLA-backed support"]
122
123
  }
123
124
  };
124
125
  var ADDONS = {
@@ -589,6 +590,7 @@ var DEVICE_STATES = {
589
590
  rejected: "rejected"
590
591
  };
591
592
  var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
593
+ var REPORT_CHART_SIZE_LIMIT = 6;
592
594
 
593
595
  // src/monitorSlice/constants.ts
594
596
  var alertChannels = { email: "email" };
@@ -670,13 +672,16 @@ var SSO_TYPES = {
670
672
  configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
671
673
  }
672
674
  };
673
- var AUDIT_LOGS_TYPES = [
674
- { title: "Artifact", queryParameter: "object_type", value: "artifact" },
675
- { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
676
- { title: "Device", queryParameter: "object_id", value: "device" },
677
- { title: "User", queryParameter: "object_id", value: "user" }
678
- ];
679
- var SP_AUDIT_LOGS_TYPES = [AUDIT_LOGS_TYPES[3], { title: "Tenant", queryParameter: "object_id", value: "tenant" }];
675
+ var auditlogTypes = {
676
+ artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
677
+ deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
678
+ device: { title: "Device", queryParameter: "object_id", value: "device" },
679
+ user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
680
+ user: { title: "User", queryParameter: "object_id", value: "user" },
681
+ tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
682
+ };
683
+ var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
684
+ var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
680
685
  var emptyWebhook = {
681
686
  description: "",
682
687
  enabled: true,
@@ -809,7 +814,7 @@ var uiPermissionsByArea = {
809
814
  explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
810
815
  key: "auditlog",
811
816
  uiPermissions: [uiPermissionsById.read],
812
- title: "System audit log"
817
+ title: "System Audit Log"
813
818
  },
814
819
  deployments: {
815
820
  endpoints: [
@@ -960,7 +965,7 @@ var serviceProviderRolesById = {
960
965
  },
961
966
  readOnly: {
962
967
  name: "Read access",
963
- value: staticRolesByName.admin,
968
+ value: staticRolesByName.readOnly,
964
969
  description: "This role can see all linked organizations but cannot make any changes",
965
970
  permissions: [],
966
971
  uiPermissions: {
@@ -1218,9 +1223,7 @@ var appSlice = (0, import_toolkit.createSlice)({
1218
1223
  ...action.payload
1219
1224
  };
1220
1225
  },
1221
- setEnvironmentData: (state, action) => {
1222
- return { ...state, ...action.payload };
1223
- }
1226
+ setEnvironmentData: (state, action) => ({ ...state, ...action.payload })
1224
1227
  }
1225
1228
  });
1226
1229
  var actions = appSlice.actions;
@@ -1595,9 +1598,7 @@ var onboardingSlice = (0, import_toolkit5.createSlice)({
1595
1598
  name: sliceName5,
1596
1599
  initialState: initialState5,
1597
1600
  reducers: {
1598
- setOnboardingState: (state, action) => {
1599
- return { ...state, ...action.payload };
1600
- },
1601
+ setOnboardingState: (state, action) => ({ ...state, ...action.payload }),
1601
1602
  setDemoArtifactPort: (state, action) => {
1602
1603
  state.demoArtifactPort = action.payload;
1603
1604
  },
@@ -2179,7 +2180,7 @@ var getGroups = (0, import_toolkit11.createSelector)([getGroupsById], (groupsByI
2179
2180
  (accu, [groupname, group]) => {
2180
2181
  const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
2181
2182
  const groupItem = { ...group, groupId: name, name: groupname };
2182
- if (group.filters.length > 0) {
2183
+ if (group.filters?.length > 0) {
2183
2184
  if (groupname !== UNGROUPED_GROUP.id) {
2184
2185
  accu.dynamic.push(groupItem);
2185
2186
  } else {
@@ -2252,14 +2253,15 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
2252
2253
  // src/utils.ts
2253
2254
  var import_helpers4 = require("@northern.tech/utils/helpers");
2254
2255
  var filterProcessors = {
2255
- $gt: (val) => Number(val) || val,
2256
- $gte: (val) => Number(val) || val,
2257
- $lt: (val) => Number(val) || val,
2258
- $lte: (val) => Number(val) || val,
2259
- $in: (val) => ("" + val).split(",").map((i) => i.trim()),
2260
- $nin: (val) => ("" + val).split(",").map((i) => i.trim()),
2261
- $exists: import_helpers4.yes,
2262
- $nexists: () => false
2256
+ [DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
2257
+ [DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
2258
+ [DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
2259
+ [DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
2260
+ [DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
2261
+ [DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
2262
+ [DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
2263
+ [DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers4.yes,
2264
+ [DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
2263
2265
  };
2264
2266
  var filterAliases = {
2265
2267
  $nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
@@ -2303,14 +2305,12 @@ var filtersFilter = (item, index, array) => {
2303
2305
  const firstIndex = array.findIndex((filter) => filterCompare(filter, item));
2304
2306
  return firstIndex === index;
2305
2307
  };
2306
- var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => {
2307
- return ids.slice(0, cutOffSize).reduce((accu, id) => {
2308
- if (id && byId[id]) {
2309
- accu.push({ ...defaultObject, ...byId[id] });
2310
- }
2311
- return accu;
2312
- }, []);
2313
- };
2308
+ var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => ids.slice(0, cutOffSize).reduce((accu, id) => {
2309
+ if (id && byId[id]) {
2310
+ accu.push({ ...defaultObject, ...byId[id] });
2311
+ }
2312
+ return accu;
2313
+ }, []);
2314
2314
  var mergePermissions = (existingPermissions = { ...emptyUiPermissions }, addedPermissions) => Object.entries(existingPermissions).reduce(
2315
2315
  (accu, [key, value]) => {
2316
2316
  let values;
@@ -2383,8 +2383,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
2383
2383
  var getGlobalSettings = (state) => state.users.globalSettings;
2384
2384
  var getCurrentUserId = (state) => state.users.currentUser;
2385
2385
  var getUsersById = (state) => state.users.byId;
2386
+ var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
2386
2387
  var getCurrentUser = (0, import_toolkit14.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
2387
2388
  var getUserSettings = (state) => state.users.userSettings;
2389
+ var getSelectedDeviceAttribute = (0, import_toolkit14.createSelector)(
2390
+ [getUserSettings],
2391
+ ({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
2392
+ );
2388
2393
  var getIsDarkMode = (0, import_toolkit14.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
2389
2394
  var getShowHelptips = (0, import_toolkit14.createSelector)(
2390
2395
  [getTooltipsById],
@@ -2409,7 +2414,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
2409
2414
  interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
2410
2415
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
2411
2416
  }));
2412
- var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([id, role]) => ({ id, ...role })));
2417
+ var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
2413
2418
 
2414
2419
  // src/commonSelectors.ts
2415
2420
  var getIsEnterprise = (0, import_toolkit15.createSelector)(
@@ -2470,12 +2475,18 @@ var getUserCapabilities = (0, import_toolkit15.createSelector)([getUserRoles, ge
2470
2475
  });
2471
2476
  var getTenantCapabilities = (0, import_toolkit15.createSelector)(
2472
2477
  [getFeatures, getOrganization, getIsEnterprise],
2473
- ({ hasAuditlogs: isAuditlogEnabled, hasDeviceConfig: isDeviceConfigEnabled, hasDeviceConnect: isDeviceConnectEnabled, hasMonitor: isMonitorEnabled }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
2478
+ ({
2479
+ hasAuditlogs: isAuditlogEnabled,
2480
+ hasDeviceConfig: isDeviceConfigEnabled,
2481
+ hasDeviceConnect: isDeviceConnectEnabled,
2482
+ hasMonitor: isMonitorEnabled,
2483
+ isHosted
2484
+ }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
2474
2485
  const canDelta = isEnterprise || plan === PLANS.professional.id;
2475
2486
  const hasAuditlogs = isAuditlogEnabled && isEnterprise;
2476
- const hasDeviceConfig = isDeviceConfigEnabled && addons.some((addon) => addon.name === "configure" && Boolean(addon.enabled));
2477
- const hasDeviceConnect = isDeviceConnectEnabled && (!isEnterprise || addons.some((addon) => addon.name === "troubleshoot" && Boolean(addon.enabled)));
2478
- const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === "monitor" && Boolean(addon.enabled));
2487
+ const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
2488
+ const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
2489
+ const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
2479
2490
  return {
2480
2491
  canDelta,
2481
2492
  canRetry: canDelta,
@@ -2579,9 +2590,7 @@ var getGroupNames = (0, import_toolkit15.createSelector)([getGroupsById, getUser
2579
2590
  });
2580
2591
  var getDeviceReportsForUser = (0, import_toolkit15.createSelector)(
2581
2592
  [getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],
2582
- ({ reports }, { id: currentUserId }, globalSettings, devicesById) => {
2583
- return reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : []);
2584
- }
2593
+ ({ reports }, { id: currentUserId }, globalSettings, devicesById) => reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])
2585
2594
  );
2586
2595
  var listTypeDeviceIdMap = {
2587
2596
  deviceList: getListedDevices,
@@ -2605,7 +2614,7 @@ var getAuditlogDevice = (0, import_toolkit15.createSelector)([getAuditLogEntry,
2605
2614
  var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
2606
2615
  if (service_provider) {
2607
2616
  return roles.reduce((accu, role) => {
2608
- if (rolesById[role.id]) {
2617
+ if (rolesById[role.value]) {
2609
2618
  return accu;
2610
2619
  }
2611
2620
  accu.push(role);
@@ -2613,20 +2622,19 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
2613
2622
  }, Object.values(serviceProviderRolesById));
2614
2623
  }
2615
2624
  return Object.keys(rolesById).reverse().reduce((accu, key) => {
2616
- const index = accu.findIndex(({ id }) => id === key);
2625
+ const index = accu.findIndex(({ value }) => value === key);
2617
2626
  accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
2618
2627
  return accu;
2619
2628
  }, roles);
2620
2629
  });
2621
2630
 
2622
2631
  // src/store.ts
2632
+ var import_react_redux = require("react-redux");
2623
2633
  var import_helpers6 = require("@northern.tech/utils/helpers");
2624
2634
  var import_toolkit16 = require("@reduxjs/toolkit");
2625
2635
  var { setSnackbar, uploadProgress } = actions_default;
2626
2636
  var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
2627
- var resetEnvironment = () => {
2628
- keys.map((key) => window.sessionStorage.removeItem(key));
2629
- };
2637
+ var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
2630
2638
  resetEnvironment();
2631
2639
  var commonErrorFallback = "Please check your connection.";
2632
2640
  var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
@@ -2652,6 +2660,14 @@ var sessionReducer = (state, action) => {
2652
2660
  }
2653
2661
  return rootReducer(state, action);
2654
2662
  };
2663
+ var rejectionLoggerMiddleware = () => (next) => (action) => {
2664
+ if (action.type.endsWith("/rejected")) {
2665
+ const { error } = action;
2666
+ console.error("Rejection in action:", action);
2667
+ console.error(error.stack);
2668
+ }
2669
+ return next(action);
2670
+ };
2655
2671
  var getConfiguredStore = (options = {}) => {
2656
2672
  const { preloadedState = {}, ...config } = options;
2657
2673
  return (0, import_toolkit16.configureStore)({
@@ -2667,7 +2683,7 @@ var getConfiguredStore = (options = {}) => {
2667
2683
  ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
2668
2684
  ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
2669
2685
  }
2670
- })
2686
+ }).concat(rejectionLoggerMiddleware)
2671
2687
  });
2672
2688
  };
2673
2689
  var store = getConfiguredStore({
@@ -2784,12 +2800,13 @@ var setSearchState = (0, import_toolkit17.createAsyncThunk)(`${sliceName}/setSea
2784
2800
 
2785
2801
  // src/deploymentsSlice/thunks.ts
2786
2802
  var import_helpers8 = require("@northern.tech/utils/helpers");
2803
+ var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
2787
2804
  var import_toolkit18 = require("@reduxjs/toolkit");
2788
2805
  var import_validator = require("validator");
2789
2806
  var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
2790
2807
  var { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;
2791
2808
  var deriveDeploymentGroup = ({ filter = {}, group, groups = [], name }) => group || groups.length === 1 && !(0, import_validator.isUUID)(name) ? groups[0] : filter.name;
2792
- var transformDeployments = (deployments, deploymentsById) => deployments.sort(import_helpers8.startTimeSort).reduce(
2809
+ var transformDeployments = (deployments, deploymentsById) => deployments.sort((0, import_helpers8.customSort)(true, "created")).reduce(
2793
2810
  (accu, item) => {
2794
2811
  const filter = item.filter ?? {};
2795
2812
  let deployment = {
@@ -2840,6 +2857,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
2840
2857
  return Promise.all(tasks);
2841
2858
  });
2842
2859
  });
2860
+ var isWithinFirstMonth = (expirationDate) => {
2861
+ if (!expirationDate) {
2862
+ return false;
2863
+ }
2864
+ const endOfFirstMonth = new Date(expirationDate);
2865
+ endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
2866
+ return endOfFirstMonth > /* @__PURE__ */ new Date();
2867
+ };
2868
+ var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
2869
+ import_tracking.default.event({ category: "deployments", action: "create" });
2870
+ if (!totalDeploymentCount) {
2871
+ if (!hasDeployments) {
2872
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
2873
+ if (isWithinFirstMonth(trial_expiration)) {
2874
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
2875
+ }
2876
+ }
2877
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
2878
+ }
2879
+ };
2843
2880
  var MAX_PREVIOUS_PHASES_COUNT = 5;
2844
2881
  var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
2845
2882
  let request;
@@ -2850,6 +2887,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
2850
2887
  } else {
2851
2888
  request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
2852
2889
  }
2890
+ const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
2891
+ const { hasDeployments } = getGlobalSettings(getState());
2892
+ const { trial_expiration } = getOrganization(getState());
2853
2893
  return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
2854
2894
  const lastslashindex = data.headers.location.lastIndexOf("/");
2855
2895
  const deploymentId = data.headers.location.substring(lastslashindex + 1);
@@ -2864,6 +2904,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
2864
2904
  dispatch(getSingleDeployment(deploymentId)),
2865
2905
  dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
2866
2906
  ];
2907
+ trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
2867
2908
  const { canManageUsers } = getUserCapabilities(getState());
2868
2909
  if (canManageUsers) {
2869
2910
  const { phases, retries } = newDeployment;
@@ -3538,7 +3579,7 @@ var getDevicesByStatus2 = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/
3538
3579
  page = defaultPage2,
3539
3580
  perPage = defaultPerPage2,
3540
3581
  sortOptions = [],
3541
- selectedAttributes = []
3582
+ selectedAttributes = getSelectedDeviceAttribute(getState())
3542
3583
  } = options;
3543
3584
  const state = getState();
3544
3585
  const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
@@ -3651,7 +3692,6 @@ var getReportingLimits = (0, import_toolkit19.createAsyncThunk)(
3651
3692
  })
3652
3693
  );
3653
3694
  var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
3654
- var REPORT_CHART_SIZE_LIMIT = 6;
3655
3695
  var getSingleReportData = (reportConfig, groups) => {
3656
3696
  const { attribute, group, software = "" } = reportConfig;
3657
3697
  const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
@@ -3731,6 +3771,13 @@ var getDeviceConnect = (0, import_toolkit19.createAsyncThunk)(
3731
3771
  ({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
3732
3772
  )
3733
3773
  );
3774
+ var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
3775
+ var triggerDeviceUpdate = (0, import_toolkit19.createAsyncThunk)(
3776
+ `${sliceName3}/triggerDeviceUpdate`,
3777
+ ({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
3778
+ () => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
3779
+ )
3780
+ );
3734
3781
  var getSessionDetails = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
3735
3782
  const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
3736
3783
  const createdAfter = startDate ? `&created_after=${startUnix}` : "";
@@ -3833,12 +3880,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
3833
3880
  );
3834
3881
  var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
3835
3882
  `${sliceName3}/preauthDevice`,
3836
- (authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
3883
+ (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) => {
3837
3884
  if (err.response.status === 409) {
3838
- return Promise.reject("A device with a matching identity data set already exists");
3885
+ return rejectWithValue("A device with a matching identity data set already exists");
3839
3886
  }
3840
3887
  return commonErrorHandler(err, "The device could not be added:", dispatch);
3841
- }).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds))))
3888
+ })
3842
3889
  );
3843
3890
  var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
3844
3891
  `${sliceName3}/decommissionDevice`,
@@ -4055,14 +4102,12 @@ var getDeviceMonitorConfig = (0, import_toolkit20.createAsyncThunk)(
4055
4102
  );
4056
4103
  var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
4057
4104
  `${sliceName4}/changeNotificationSetting`,
4058
- ({ enabled, channel = alertChannels.email }, { dispatch }) => {
4059
- 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(
4060
- () => Promise.all([
4061
- dispatch(actions4.changeAlertChannel({ channel, enabled })),
4062
- dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
4063
- ])
4064
- );
4065
- }
4105
+ ({ 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(
4106
+ () => Promise.all([
4107
+ dispatch(actions4.changeAlertChannel({ channel, enabled })),
4108
+ dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
4109
+ ])
4110
+ )
4066
4111
  );
4067
4112
 
4068
4113
  // src/usersSlice/thunks.ts
@@ -4084,7 +4129,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
4084
4129
  }
4085
4130
  const twoFAError = is2FABackend ? " and verification code" : "";
4086
4131
  const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
4087
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.preformatWithRequestID)(err.response, errorMessage), null, "Copy to clipboard")));
4132
+ return Promise.reject(dispatch(setSnackbar4({ message: (0, import_helpers10.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
4088
4133
  };
4089
4134
  var loginUser = (0, import_toolkit21.createAsyncThunk)(
4090
4135
  `${sliceName8}/loginUser`,
@@ -4108,19 +4153,16 @@ var loginUser = (0, import_toolkit21.createAsyncThunk)(
4108
4153
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
4109
4154
  setSessionInfo({ token, expiresAt });
4110
4155
  cookies3.remove("JWT", { path: "/" });
4111
- return (
4112
- // @ts-ignore
4113
- Promise.resolve(dispatch(getUser(OWN_USER_ID))).unwrap().catch((e) => {
4114
- cleanUp();
4115
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.extractErrorMessage)(e))));
4116
- }).then(() => {
4117
- window.sessionStorage.removeItem("pendings-redirect");
4118
- if (window.location.pathname !== "/ui/") {
4119
- window.location.replace("/ui/");
4120
- }
4121
- return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
4122
- })
4123
- );
4156
+ return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
4157
+ cleanUp();
4158
+ return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.extractErrorMessage)(e))));
4159
+ }).then(() => {
4160
+ window.sessionStorage.removeItem("pendings-redirect");
4161
+ if (window.location.pathname !== "/ui/") {
4162
+ window.location.replace("/ui/");
4163
+ }
4164
+ return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
4165
+ });
4124
4166
  })
4125
4167
  );
4126
4168
  var logoutUser = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
@@ -4138,6 +4180,7 @@ var switchUserOrganization = (0, import_toolkit21.createAsyncThunk)(`${sliceName
4138
4180
  return Promise.reject();
4139
4181
  }
4140
4182
  return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
4183
+ window.sessionStorage.setItem("tenantChanged", "true");
4141
4184
  setSessionInfo({ ...getSessionInfo(), token });
4142
4185
  window.location.reload();
4143
4186
  });
@@ -4178,11 +4221,18 @@ var verify2FA = (0, import_toolkit21.createAsyncThunk)(
4178
4221
  );
4179
4222
  var getUserList = (0, import_toolkit21.createAsyncThunk)(
4180
4223
  `${sliceName8}/getUserList`,
4181
- (_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4182
- const users = res.data.reduce((accu, item) => {
4183
- accu[item.id] = item;
4184
- return accu;
4185
- }, {});
4224
+ (_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4225
+ const currentUsersById = getUsersById(getState());
4226
+ const users = res.data.reduce(
4227
+ (accu, item) => {
4228
+ accu[item.id] = {
4229
+ ...accu[item.id],
4230
+ ...item
4231
+ };
4232
+ return accu;
4233
+ },
4234
+ { ...currentUsersById }
4235
+ );
4186
4236
  return dispatch(actions8.receivedUserList(users));
4187
4237
  }).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
4188
4238
  );
@@ -4191,9 +4241,7 @@ var getUser = (0, import_toolkit21.createAsyncThunk)(
4191
4241
  (id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
4192
4242
  ({ data: user }) => Promise.all([
4193
4243
  dispatch(actions8.receivedUser(user)),
4194
- // @ts-ignore
4195
4244
  dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
4196
- // @ts-ignore
4197
4245
  dispatch(updateUserColumnSettings({ currentUserId: user.id })),
4198
4246
  user
4199
4247
  ])
@@ -4240,10 +4288,7 @@ var createUser = (0, import_toolkit21.createAsyncThunk)(
4240
4288
  );
4241
4289
  var removeUser = (0, import_toolkit21.createAsyncThunk)(
4242
4290
  `${sliceName8}/removeUser`,
4243
- (userId, { dispatch }) => (
4244
- // @ts-ignore
4245
- 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))
4246
- )
4291
+ (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))
4247
4292
  );
4248
4293
  var editUser = (0, import_toolkit21.createAsyncThunk)(
4249
4294
  `${sliceName8}/editUser`,
@@ -4264,7 +4309,7 @@ var enableUser2fa = (0, import_toolkit21.createAsyncThunk)(
4264
4309
  );
4265
4310
  var disableUser2fa = (0, import_toolkit21.createAsyncThunk)(
4266
4311
  `${sliceName8}/disableUser2fa`,
4267
- (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))))
4312
+ (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))]))
4268
4313
  );
4269
4314
  var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
4270
4315
  (accu, [area, definition]) => {
@@ -4417,7 +4462,6 @@ var getPermissionSets = (0, import_toolkit21.createAsyncThunk)(
4417
4462
  accu[permissionSet.name] = permissionSetObject;
4418
4463
  return accu;
4419
4464
  },
4420
- // @ts-ignore
4421
4465
  { ...getState().users.permissionSetsById }
4422
4466
  );
4423
4467
  return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
@@ -4510,7 +4554,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
4510
4554
  role: {
4511
4555
  ...emptyRole,
4512
4556
  name,
4513
- // @ts-ignore
4514
4557
  description: description ? description : roleState.description,
4515
4558
  uiPermissions: {
4516
4559
  ...emptyUiPermissions,
@@ -4553,10 +4596,7 @@ var editRole = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/editRole`,
4553
4596
  });
4554
4597
  var removeRole = (0, import_toolkit21.createAsyncThunk)(
4555
4598
  `${sliceName8}/removeRole`,
4556
- (roleId, { dispatch }) => (
4557
- // @ts-ignore
4558
- 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))
4559
- )
4599
+ (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))
4560
4600
  );
4561
4601
  var getGlobalSettings2 = (0, import_toolkit21.createAsyncThunk)(
4562
4602
  `${sliceName8}/getGlobalSettings`,
@@ -4567,7 +4607,6 @@ var getGlobalSettings2 = (0, import_toolkit21.createAsyncThunk)(
4567
4607
  );
4568
4608
  var saveGlobalSettings = (0, import_toolkit21.createAsyncThunk)(
4569
4609
  `${sliceName8}/saveGlobalSettings`,
4570
- // @ts-ignore
4571
4610
  ({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
4572
4611
  if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
4573
4612
  return;
@@ -4613,11 +4652,9 @@ var saveUserSettings = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/sav
4613
4652
  const tooltipState = getTooltipsState(getState());
4614
4653
  const updatedSettings = {
4615
4654
  ...userSettings,
4616
- // @ts-ignore
4617
4655
  ...settings,
4618
4656
  onboarding: {
4619
4657
  ...onboardingState,
4620
- // @ts-ignore
4621
4658
  ...settings.onboarding
4622
4659
  },
4623
4660
  tooltips: tooltipState
@@ -4661,10 +4698,7 @@ var generateToken = (0, import_toolkit21.createAsyncThunk)(
4661
4698
  );
4662
4699
  var revokeToken = (0, import_toolkit21.createAsyncThunk)(
4663
4700
  `${sliceName8}/revokeToken`,
4664
- (token, { dispatch }) => (
4665
- // @ts-ignore
4666
- general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4667
- )
4701
+ (token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4668
4702
  );
4669
4703
  var setTooltipReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
4670
4704
  let tasks = [dispatch(actions8.setTooltipState(remainder))];
@@ -4673,23 +4707,20 @@ var setTooltipReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/
4673
4707
  }
4674
4708
  return Promise.all(tasks);
4675
4709
  });
4676
- var setAllTooltipsReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/toggleHelptips`, ({ readState = READ_STATES.read, tooltips }, { dispatch }) => {
4677
- const updatedTips = tooltips.reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4710
+ var setAllTooltipsReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
4711
+ const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4678
4712
  return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
4679
4713
  });
4680
4714
  var submitFeedback = (0, import_toolkit21.createAsyncThunk)(
4681
4715
  `${sliceName8}/submitFeedback`,
4682
- // @ts-ignore
4683
- ({ satisfaction, feedback, ...meta }, { dispatch }) => {
4684
- return general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4685
- subject: "feedback submission",
4686
- body: JSON.stringify({ feedback, satisfaction, meta })
4687
- }).then(() => {
4688
- const today = /* @__PURE__ */ new Date();
4689
- dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4690
- setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4691
- });
4692
- }
4716
+ ({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4717
+ subject: "feedback submission",
4718
+ body: JSON.stringify({ feedback, satisfaction, meta })
4719
+ }).then(() => {
4720
+ const today = /* @__PURE__ */ new Date();
4721
+ dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4722
+ setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4723
+ })
4693
4724
  );
4694
4725
  // Annotate the CommonJS export names for ESM import in node:
4695
4726
  0 && (module.exports = {