@northern.tech/store 0.3.1 → 0.3.3

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 (197) hide show
  1. package/dist/actions.cjs +20 -17
  2. package/dist/actions.cjs.map +1 -1
  3. package/dist/actions.js +8 -8
  4. package/dist/api/general-api.js +2 -2
  5. package/dist/api/types/Tenant.ts +17 -12
  6. package/dist/api/users-api.js +2 -2
  7. package/dist/appSlice/constants.cjs +18 -10
  8. package/dist/appSlice/constants.cjs.map +1 -1
  9. package/dist/appSlice/constants.d.cts +41 -84
  10. package/dist/appSlice/constants.d.ts +41 -84
  11. package/dist/appSlice/constants.js +1 -1
  12. package/dist/appSlice/index.js +2 -2
  13. package/dist/appSlice/thunks.cjs +140 -96
  14. package/dist/appSlice/thunks.cjs.map +1 -1
  15. package/dist/appSlice/thunks.js +19 -19
  16. package/dist/auth.js +2 -2
  17. package/dist/{chunk-Q6M5TTDQ.js → chunk-2CYOM4BK.js} +1 -1
  18. package/dist/chunk-2CYOM4BK.js.map +1 -0
  19. package/dist/{chunk-APHL4JZP.js → chunk-2JHFUQ6B.js} +141 -102
  20. package/dist/chunk-2JHFUQ6B.js.map +1 -0
  21. package/dist/{chunk-YETZPQFR.js → chunk-4XJMRVFI.js} +12 -11
  22. package/dist/chunk-4XJMRVFI.js.map +1 -0
  23. package/dist/{chunk-RX55KAKX.js → chunk-7JKWI5FK.js} +2 -2
  24. package/dist/{chunk-A6CT6GTI.js → chunk-C5NEDBJI.js} +17 -11
  25. package/dist/chunk-C5NEDBJI.js.map +1 -0
  26. package/dist/{chunk-NNADGHSL.js → chunk-DAPAXWA5.js} +8 -8
  27. package/dist/{chunk-ANB5BM5J.js → chunk-DCK2DBOA.js} +27 -20
  28. package/dist/chunk-DCK2DBOA.js.map +1 -0
  29. package/dist/{chunk-E5LEU5PF.js → chunk-HPBE6KYY.js} +2 -2
  30. package/dist/{chunk-2RJIDREZ.js → chunk-LEMVXAYP.js} +25 -16
  31. package/dist/chunk-LEMVXAYP.js.map +1 -0
  32. package/dist/{chunk-NI4SZOCF.js → chunk-LGNOTPUG.js} +9 -9
  33. package/dist/{chunk-MDC7Y3EX.js → chunk-LTKOV26W.js} +22 -20
  34. package/dist/chunk-LTKOV26W.js.map +1 -0
  35. package/dist/{chunk-YTQUNAZP.js → chunk-QRGTG4YB.js} +2 -2
  36. package/dist/{chunk-XTRPX7JZ.js → chunk-TI2RL5P2.js} +2 -2
  37. package/dist/chunk-TI2RL5P2.js.map +1 -0
  38. package/dist/{chunk-YGBFDXXA.js → chunk-TUACATJA.js} +2 -2
  39. package/dist/{chunk-25AKG5HH.js → chunk-UWMYZNUB.js} +19 -11
  40. package/dist/chunk-UWMYZNUB.js.map +1 -0
  41. package/dist/{chunk-UEP36GCI.js → chunk-VMNMD6KF.js} +2 -2
  42. package/dist/{chunk-KAQJH2YL.js → chunk-WXL7PVI5.js} +12 -4
  43. package/dist/chunk-WXL7PVI5.js.map +1 -0
  44. package/dist/{chunk-VOCOFE4I.js → chunk-X7IEZBM4.js} +2 -2
  45. package/dist/{chunk-XXHONFSQ.js → chunk-YDS36ALB.js} +3 -3
  46. package/dist/{chunk-XXHONFSQ.js.map → chunk-YDS36ALB.js.map} +1 -1
  47. package/dist/commonSelectors.cjs +40 -18
  48. package/dist/commonSelectors.cjs.map +1 -1
  49. package/dist/commonSelectors.d.cts +54 -46
  50. package/dist/commonSelectors.d.ts +54 -46
  51. package/dist/commonSelectors.js +9 -9
  52. package/dist/constants.cjs +35 -19
  53. package/dist/constants.cjs.map +1 -1
  54. package/dist/constants.d.cts +3 -3
  55. package/dist/constants.d.ts +3 -3
  56. package/dist/constants.js +6 -2
  57. package/dist/deploymentdevicehook.cjs +146 -101
  58. package/dist/deploymentdevicehook.cjs.map +1 -1
  59. package/dist/deploymentdevicehook.d.cts +1 -1
  60. package/dist/deploymentdevicehook.d.ts +1 -1
  61. package/dist/deploymentdevicehook.js +24 -22
  62. package/dist/deploymentdevicehook.js.map +1 -1
  63. package/dist/deploymentsSlice/constants.cjs +8 -8
  64. package/dist/deploymentsSlice/constants.cjs.map +1 -1
  65. package/dist/deploymentsSlice/constants.js +2 -2
  66. package/dist/deploymentsSlice/index.cjs +8 -8
  67. package/dist/deploymentsSlice/index.cjs.map +1 -1
  68. package/dist/deploymentsSlice/index.js +3 -3
  69. package/dist/deploymentsSlice/selectors.cjs +8 -8
  70. package/dist/deploymentsSlice/selectors.cjs.map +1 -1
  71. package/dist/deploymentsSlice/selectors.js +3 -3
  72. package/dist/deploymentsSlice/thunks.cjs +140 -96
  73. package/dist/deploymentsSlice/thunks.cjs.map +1 -1
  74. package/dist/deploymentsSlice/thunks.js +19 -19
  75. package/dist/devicesSlice/constants.cjs +11 -8
  76. package/dist/devicesSlice/constants.cjs.map +1 -1
  77. package/dist/devicesSlice/constants.d.cts +2 -1
  78. package/dist/devicesSlice/constants.d.ts +2 -1
  79. package/dist/devicesSlice/constants.js +4 -2
  80. package/dist/devicesSlice/index.cjs +8 -8
  81. package/dist/devicesSlice/index.cjs.map +1 -1
  82. package/dist/devicesSlice/index.js +3 -3
  83. package/dist/devicesSlice/selectors.cjs +9 -9
  84. package/dist/devicesSlice/selectors.cjs.map +1 -1
  85. package/dist/devicesSlice/selectors.js +3 -3
  86. package/dist/devicesSlice/thunks.cjs +142 -96
  87. package/dist/devicesSlice/thunks.cjs.map +1 -1
  88. package/dist/devicesSlice/thunks.d.cts +12 -2
  89. package/dist/devicesSlice/thunks.d.ts +12 -2
  90. package/dist/devicesSlice/thunks.js +21 -19
  91. package/dist/flag-eu-5477R2P4.svg +130 -0
  92. package/dist/flag-us-HNQAF66I.svg +63 -0
  93. package/dist/monitorSlice/constants.cjs +8 -8
  94. package/dist/monitorSlice/constants.cjs.map +1 -1
  95. package/dist/monitorSlice/constants.js +2 -2
  96. package/dist/monitorSlice/index.cjs +8 -8
  97. package/dist/monitorSlice/index.cjs.map +1 -1
  98. package/dist/monitorSlice/index.js +3 -3
  99. package/dist/monitorSlice/thunks.cjs +59 -37
  100. package/dist/monitorSlice/thunks.cjs.map +1 -1
  101. package/dist/monitorSlice/thunks.js +17 -17
  102. package/dist/onboardingSlice/thunks.cjs +149 -102
  103. package/dist/onboardingSlice/thunks.cjs.map +1 -1
  104. package/dist/onboardingSlice/thunks.d.cts +1 -32
  105. package/dist/onboardingSlice/thunks.d.ts +1 -32
  106. package/dist/onboardingSlice/thunks.js +19 -19
  107. package/dist/organizationSlice/constants.cjs +22 -17
  108. package/dist/organizationSlice/constants.cjs.map +1 -1
  109. package/dist/organizationSlice/constants.d.cts +33 -1
  110. package/dist/organizationSlice/constants.d.ts +33 -1
  111. package/dist/organizationSlice/constants.js +4 -2
  112. package/dist/organizationSlice/index.cjs +18 -15
  113. package/dist/organizationSlice/index.cjs.map +1 -1
  114. package/dist/organizationSlice/index.d.cts +26 -1012
  115. package/dist/organizationSlice/index.d.ts +26 -1012
  116. package/dist/organizationSlice/index.js +3 -3
  117. package/dist/organizationSlice/selectors.cjs.map +1 -1
  118. package/dist/organizationSlice/selectors.d.cts +9 -1
  119. package/dist/organizationSlice/selectors.d.ts +9 -1
  120. package/dist/organizationSlice/selectors.js +3 -3
  121. package/dist/organizationSlice/thunks.cjs +1608 -1540
  122. package/dist/organizationSlice/thunks.cjs.map +1 -1
  123. package/dist/organizationSlice/thunks.d.cts +61 -36
  124. package/dist/organizationSlice/thunks.d.ts +61 -36
  125. package/dist/organizationSlice/thunks.js +19 -19
  126. package/dist/organizationSlice/types.cjs +19 -0
  127. package/dist/organizationSlice/types.cjs.map +1 -0
  128. package/dist/organizationSlice/types.d.cts +114 -0
  129. package/dist/organizationSlice/types.d.ts +114 -0
  130. package/dist/organizationSlice/types.js +1 -0
  131. package/dist/organizationSlice/types.js.map +1 -0
  132. package/dist/releasesSlice/index.js +2 -2
  133. package/dist/releasesSlice/selectors.cjs +11 -0
  134. package/dist/releasesSlice/selectors.cjs.map +1 -1
  135. package/dist/releasesSlice/selectors.js +4 -4
  136. package/dist/releasesSlice/thunks.cjs +73 -49
  137. package/dist/releasesSlice/thunks.cjs.map +1 -1
  138. package/dist/releasesSlice/thunks.d.cts +1 -4
  139. package/dist/releasesSlice/thunks.d.ts +1 -4
  140. package/dist/releasesSlice/thunks.js +17 -17
  141. package/dist/selectors.cjs +46 -18
  142. package/dist/selectors.cjs.map +1 -1
  143. package/dist/selectors.d.cts +9 -1
  144. package/dist/selectors.d.ts +9 -1
  145. package/dist/selectors.js +36 -30
  146. package/dist/store.cjs +36 -23
  147. package/dist/store.cjs.map +1 -1
  148. package/dist/store.d.cts +12 -231
  149. package/dist/store.d.ts +12 -231
  150. package/dist/store.js +13 -11
  151. package/dist/storehooks.cjs +222 -141
  152. package/dist/storehooks.cjs.map +1 -1
  153. package/dist/storehooks.js +36 -24
  154. package/dist/storehooks.js.map +1 -1
  155. package/dist/thunks.cjs +199 -126
  156. package/dist/thunks.cjs.map +1 -1
  157. package/dist/thunks.d.cts +5 -1
  158. package/dist/thunks.d.ts +5 -1
  159. package/dist/thunks.js +21 -19
  160. package/dist/usersSlice/constants.cjs +10 -10
  161. package/dist/usersSlice/constants.cjs.map +1 -1
  162. package/dist/usersSlice/constants.js +2 -2
  163. package/dist/usersSlice/index.cjs +10 -10
  164. package/dist/usersSlice/index.cjs.map +1 -1
  165. package/dist/usersSlice/index.js +3 -3
  166. package/dist/usersSlice/selectors.cjs +35 -13
  167. package/dist/usersSlice/selectors.cjs.map +1 -1
  168. package/dist/usersSlice/selectors.d.cts +44 -1
  169. package/dist/usersSlice/selectors.d.ts +44 -1
  170. package/dist/usersSlice/selectors.js +12 -6
  171. package/dist/usersSlice/thunks.cjs +138 -96
  172. package/dist/usersSlice/thunks.cjs.map +1 -1
  173. package/dist/usersSlice/thunks.d.cts +10 -9
  174. package/dist/usersSlice/thunks.d.ts +10 -9
  175. package/dist/usersSlice/thunks.js +19 -19
  176. package/dist/utils.cjs +17 -16
  177. package/dist/utils.cjs.map +1 -1
  178. package/dist/utils.js +3 -3
  179. package/package.json +7 -7
  180. package/dist/chunk-25AKG5HH.js.map +0 -1
  181. package/dist/chunk-2RJIDREZ.js.map +0 -1
  182. package/dist/chunk-A6CT6GTI.js.map +0 -1
  183. package/dist/chunk-ANB5BM5J.js.map +0 -1
  184. package/dist/chunk-APHL4JZP.js.map +0 -1
  185. package/dist/chunk-KAQJH2YL.js.map +0 -1
  186. package/dist/chunk-MDC7Y3EX.js.map +0 -1
  187. package/dist/chunk-Q6M5TTDQ.js.map +0 -1
  188. package/dist/chunk-XTRPX7JZ.js.map +0 -1
  189. package/dist/chunk-YETZPQFR.js.map +0 -1
  190. /package/dist/{chunk-RX55KAKX.js.map → chunk-7JKWI5FK.js.map} +0 -0
  191. /package/dist/{chunk-NNADGHSL.js.map → chunk-DAPAXWA5.js.map} +0 -0
  192. /package/dist/{chunk-E5LEU5PF.js.map → chunk-HPBE6KYY.js.map} +0 -0
  193. /package/dist/{chunk-NI4SZOCF.js.map → chunk-LGNOTPUG.js.map} +0 -0
  194. /package/dist/{chunk-YTQUNAZP.js.map → chunk-QRGTG4YB.js.map} +0 -0
  195. /package/dist/{chunk-YGBFDXXA.js.map → chunk-TUACATJA.js.map} +0 -0
  196. /package/dist/{chunk-UEP36GCI.js.map → chunk-VMNMD6KF.js.map} +0 -0
  197. /package/dist/{chunk-VOCOFE4I.js.map → chunk-X7IEZBM4.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 }
@@ -1470,8 +1475,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
1470
1475
  var getGlobalSettings = (state) => state.users.globalSettings;
1471
1476
  var getCurrentUserId = (state) => state.users.currentUser;
1472
1477
  var getUsersById = (state) => state.users.byId;
1478
+ var getUsersList = (0, import_toolkit6.createSelector)([getUsersById], (usersById) => Object.values(usersById));
1473
1479
  var getCurrentUser = (0, import_toolkit6.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
1474
1480
  var getUserSettings = (state) => state.users.userSettings;
1481
+ var getSelectedDeviceAttribute = (0, import_toolkit6.createSelector)(
1482
+ [getUserSettings],
1483
+ ({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
1484
+ );
1475
1485
  var getIsDarkMode = (0, import_toolkit6.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
1476
1486
  var getShowHelptips = (0, import_toolkit6.createSelector)(
1477
1487
  [getTooltipsById],
@@ -1496,7 +1506,7 @@ var getOfflineThresholdSettings = (0, import_toolkit6.createSelector)([getGlobal
1496
1506
  interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
1497
1507
  intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
1498
1508
  }));
1499
- var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([id, role]) => ({ id, ...role })));
1509
+ var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
1500
1510
 
1501
1511
  // src/commonSelectors.ts
1502
1512
  var getIsEnterprise = (0, import_toolkit7.createSelector)(
@@ -1557,12 +1567,18 @@ var getUserCapabilities = (0, import_toolkit7.createSelector)([getUserRoles, get
1557
1567
  });
1558
1568
  var getTenantCapabilities = (0, import_toolkit7.createSelector)(
1559
1569
  [getFeatures, getOrganization, getIsEnterprise],
1560
- ({ hasAuditlogs: isAuditlogEnabled, hasDeviceConfig: isDeviceConfigEnabled, hasDeviceConnect: isDeviceConnectEnabled, hasMonitor: isMonitorEnabled }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
1570
+ ({
1571
+ hasAuditlogs: isAuditlogEnabled,
1572
+ hasDeviceConfig: isDeviceConfigEnabled,
1573
+ hasDeviceConnect: isDeviceConnectEnabled,
1574
+ hasMonitor: isMonitorEnabled,
1575
+ isHosted
1576
+ }, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
1561
1577
  const canDelta = isEnterprise || plan === PLANS.professional.id;
1562
1578
  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));
1579
+ const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
1580
+ const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
1581
+ const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
1566
1582
  return {
1567
1583
  canDelta,
1568
1584
  canRetry: canDelta,
@@ -1692,7 +1708,7 @@ var getAuditlogDevice = (0, import_toolkit7.createSelector)([getAuditLogEntry, g
1692
1708
  var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
1693
1709
  if (service_provider) {
1694
1710
  return roles.reduce((accu, role) => {
1695
- if (rolesById[role.id]) {
1711
+ if (rolesById[role.value]) {
1696
1712
  return accu;
1697
1713
  }
1698
1714
  accu.push(role);
@@ -1700,7 +1716,7 @@ var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, get
1700
1716
  }, Object.values(serviceProviderRolesById));
1701
1717
  }
1702
1718
  return Object.keys(rolesById).reverse().reduce((accu, key) => {
1703
- const index = accu.findIndex(({ id }) => id === key);
1719
+ const index = accu.findIndex(({ value }) => value === key);
1704
1720
  accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
1705
1721
  return accu;
1706
1722
  }, roles);
@@ -2576,13 +2592,12 @@ var actions_default = {
2576
2592
  };
2577
2593
 
2578
2594
  // src/store.ts
2595
+ var import_react_redux = require("react-redux");
2579
2596
  var import_helpers6 = require("@northern.tech/utils/helpers");
2580
2597
  var import_toolkit16 = require("@reduxjs/toolkit");
2581
2598
  var { setSnackbar, uploadProgress } = actions_default;
2582
2599
  var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
2583
- var resetEnvironment = () => {
2584
- keys.map((key) => window.sessionStorage.removeItem(key));
2585
- };
2600
+ var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
2586
2601
  resetEnvironment();
2587
2602
  var commonErrorFallback = "Please check your connection.";
2588
2603
  var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
@@ -2608,6 +2623,14 @@ var sessionReducer = (state, action) => {
2608
2623
  }
2609
2624
  return rootReducer(state, action);
2610
2625
  };
2626
+ var rejectionLoggerMiddleware = () => (next) => (action) => {
2627
+ if (action.type.endsWith("/rejected")) {
2628
+ const { error } = action;
2629
+ console.error("Rejection in action:", action);
2630
+ console.error(error.stack);
2631
+ }
2632
+ return next(action);
2633
+ };
2611
2634
  var getConfiguredStore = (options = {}) => {
2612
2635
  const { preloadedState = {}, ...config } = options;
2613
2636
  return (0, import_toolkit16.configureStore)({
@@ -2623,7 +2646,7 @@ var getConfiguredStore = (options = {}) => {
2623
2646
  ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
2624
2647
  ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
2625
2648
  }
2626
- })
2649
+ }).concat(rejectionLoggerMiddleware)
2627
2650
  });
2628
2651
  };
2629
2652
  var store = getConfiguredStore({
@@ -2632,6 +2655,7 @@ var store = getConfiguredStore({
2632
2655
 
2633
2656
  // src/deploymentsSlice/thunks.ts
2634
2657
  var import_helpers7 = require("@northern.tech/utils/helpers");
2658
+ var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
2635
2659
  var import_toolkit17 = require("@reduxjs/toolkit");
2636
2660
  var import_validator = require("validator");
2637
2661
  var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
@@ -2688,6 +2712,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit17.createAsyncThunk)(`${sliceNam
2688
2712
  return Promise.all(tasks);
2689
2713
  });
2690
2714
  });
2715
+ var isWithinFirstMonth = (expirationDate) => {
2716
+ if (!expirationDate) {
2717
+ return false;
2718
+ }
2719
+ const endOfFirstMonth = new Date(expirationDate);
2720
+ endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
2721
+ return endOfFirstMonth > /* @__PURE__ */ new Date();
2722
+ };
2723
+ var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
2724
+ import_tracking.default.event({ category: "deployments", action: "create" });
2725
+ if (!totalDeploymentCount) {
2726
+ if (!hasDeployments) {
2727
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
2728
+ if (isWithinFirstMonth(trial_expiration)) {
2729
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
2730
+ }
2731
+ }
2732
+ import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
2733
+ }
2734
+ };
2691
2735
  var MAX_PREVIOUS_PHASES_COUNT = 5;
2692
2736
  var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
2693
2737
  let request;
@@ -2698,6 +2742,9 @@ var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/cre
2698
2742
  } else {
2699
2743
  request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
2700
2744
  }
2745
+ const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
2746
+ const { hasDeployments } = getGlobalSettings(getState());
2747
+ const { trial_expiration } = getOrganization(getState());
2701
2748
  return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
2702
2749
  const lastslashindex = data.headers.location.lastIndexOf("/");
2703
2750
  const deploymentId = data.headers.location.substring(lastslashindex + 1);
@@ -2712,6 +2759,7 @@ var createDeployment = (0, import_toolkit17.createAsyncThunk)(`${sliceName2}/cre
2712
2759
  dispatch(getSingleDeployment(deploymentId)),
2713
2760
  dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
2714
2761
  ];
2762
+ trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
2715
2763
  const { canManageUsers } = getUserCapabilities(getState());
2716
2764
  if (canManageUsers) {
2717
2765
  const { phases, retries } = newDeployment;
@@ -3386,7 +3434,7 @@ var getDevicesByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/
3386
3434
  page = defaultPage2,
3387
3435
  perPage = defaultPerPage2,
3388
3436
  sortOptions = [],
3389
- selectedAttributes = []
3437
+ selectedAttributes = getSelectedDeviceAttribute(getState())
3390
3438
  } = options;
3391
3439
  const state = getState();
3392
3440
  const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
@@ -3499,7 +3547,6 @@ var getReportingLimits = (0, import_toolkit18.createAsyncThunk)(
3499
3547
  })
3500
3548
  );
3501
3549
  var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
3502
- var REPORT_CHART_SIZE_LIMIT = 6;
3503
3550
  var getSingleReportData = (reportConfig, groups) => {
3504
3551
  const { attribute, group, software = "" } = reportConfig;
3505
3552
  const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
@@ -3579,9 +3626,17 @@ var getDeviceConnect = (0, import_toolkit18.createAsyncThunk)(
3579
3626
  ({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
3580
3627
  )
3581
3628
  );
3629
+ var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
3630
+ var triggerDeviceUpdate = (0, import_toolkit18.createAsyncThunk)(
3631
+ `${sliceName3}/triggerDeviceUpdate`,
3632
+ ({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
3633
+ () => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
3634
+ )
3635
+ );
3582
3636
  var getSessionDetails = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
3583
- const createdAfter = startDate ? `&created_after=${Math.round(Date.parse(startDate) / 1e3)}` : "";
3584
- const createdBefore = endDate ? `&created_before=${Math.round(Date.parse(endDate) / 1e3)}` : "";
3637
+ const { start: startUnix, end: endUnix } = (0, import_helpers8.dateRangeToUnix)(startDate, endDate);
3638
+ const createdAfter = startDate ? `&created_after=${startUnix}` : "";
3639
+ const createdBefore = endDate ? `&created_before=${endUnix}` : "";
3585
3640
  const objectSearch = `&object_id=${deviceId}`;
3586
3641
  return general_api_default.get(`${auditLogsApiUrl}/logs?per_page=500${createdAfter}${createdBefore}&actor_id=${userId}${objectSearch}`).then(
3587
3642
  ({ data: auditLogEntries }) => {
@@ -3680,12 +3735,12 @@ var deleteAuthset = (0, import_toolkit18.createAsyncThunk)(
3680
3735
  );
3681
3736
  var preauthDevice = (0, import_toolkit18.createAsyncThunk)(
3682
3737
  `${sliceName3}/preauthDevice`,
3683
- (authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
3738
+ (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) => {
3684
3739
  if (err.response.status === 409) {
3685
- return Promise.reject("A device with a matching identity data set already exists");
3740
+ return rejectWithValue("A device with a matching identity data set already exists");
3686
3741
  }
3687
3742
  return commonErrorHandler(err, "The device could not be added:", dispatch);
3688
- }).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds))))
3743
+ })
3689
3744
  );
3690
3745
  var decommissionDevice = (0, import_toolkit18.createAsyncThunk)(
3691
3746
  `${sliceName3}/decommissionDevice`,
@@ -3912,6 +3967,9 @@ var changeNotificationSetting = (0, import_toolkit19.createAsyncThunk)(
3912
3967
  }
3913
3968
  );
3914
3969
 
3970
+ // src/usersSlice/thunks.ts
3971
+ var import_helptips = require("@northern.tech/common-ui/helptips");
3972
+
3915
3973
  // src/api/users-api.ts
3916
3974
  var import_axios3 = __toESM(require("axios"), 1);
3917
3975
  var Api2 = {
@@ -3945,7 +4003,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
3945
4003
  }
3946
4004
  const twoFAError = is2FABackend ? " and verification code" : "";
3947
4005
  const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
3948
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), null, "Copy to clipboard")));
4006
+ return Promise.reject(dispatch(setSnackbar4({ message: (0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
3949
4007
  };
3950
4008
  var loginUser = (0, import_toolkit20.createAsyncThunk)(
3951
4009
  `${sliceName8}/loginUser`,
@@ -3969,19 +4027,16 @@ var loginUser = (0, import_toolkit20.createAsyncThunk)(
3969
4027
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
3970
4028
  setSessionInfo({ token, expiresAt });
3971
4029
  cookies2.remove("JWT", { path: "/" });
3972
- return (
3973
- // @ts-ignore
3974
- Promise.resolve(dispatch(getUser(OWN_USER_ID))).unwrap().catch((e) => {
3975
- cleanUp();
3976
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.extractErrorMessage)(e))));
3977
- }).then(() => {
3978
- window.sessionStorage.removeItem("pendings-redirect");
3979
- if (window.location.pathname !== "/ui/") {
3980
- window.location.replace("/ui/");
3981
- }
3982
- return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
3983
- })
3984
- );
4030
+ return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
4031
+ cleanUp();
4032
+ return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.extractErrorMessage)(e))));
4033
+ }).then(() => {
4034
+ window.sessionStorage.removeItem("pendings-redirect");
4035
+ if (window.location.pathname !== "/ui/") {
4036
+ window.location.replace("/ui/");
4037
+ }
4038
+ return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
4039
+ });
3985
4040
  })
3986
4041
  );
3987
4042
  var logoutUser = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
@@ -3999,6 +4054,7 @@ var switchUserOrganization = (0, import_toolkit20.createAsyncThunk)(`${sliceName
3999
4054
  return Promise.reject();
4000
4055
  }
4001
4056
  return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
4057
+ window.sessionStorage.setItem("tenantChanged", "true");
4002
4058
  setSessionInfo({ ...getSessionInfo(), token });
4003
4059
  window.location.reload();
4004
4060
  });
@@ -4039,11 +4095,18 @@ var verify2FA = (0, import_toolkit20.createAsyncThunk)(
4039
4095
  );
4040
4096
  var getUserList = (0, import_toolkit20.createAsyncThunk)(
4041
4097
  `${sliceName8}/getUserList`,
4042
- (_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4043
- const users = res.data.reduce((accu, item) => {
4044
- accu[item.id] = item;
4045
- return accu;
4046
- }, {});
4098
+ (_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4099
+ const currentUsersById = getUsersById(getState());
4100
+ const users = res.data.reduce(
4101
+ (accu, item) => {
4102
+ accu[item.id] = {
4103
+ ...accu[item.id],
4104
+ ...item
4105
+ };
4106
+ return accu;
4107
+ },
4108
+ { ...currentUsersById }
4109
+ );
4047
4110
  return dispatch(actions8.receivedUserList(users));
4048
4111
  }).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
4049
4112
  );
@@ -4052,9 +4115,7 @@ var getUser = (0, import_toolkit20.createAsyncThunk)(
4052
4115
  (id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
4053
4116
  ({ data: user }) => Promise.all([
4054
4117
  dispatch(actions8.receivedUser(user)),
4055
- // @ts-ignore
4056
4118
  dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
4057
- // @ts-ignore
4058
4119
  dispatch(updateUserColumnSettings({ currentUserId: user.id })),
4059
4120
  user
4060
4121
  ])
@@ -4101,10 +4162,7 @@ var createUser = (0, import_toolkit20.createAsyncThunk)(
4101
4162
  );
4102
4163
  var removeUser = (0, import_toolkit20.createAsyncThunk)(
4103
4164
  `${sliceName8}/removeUser`,
4104
- (userId, { dispatch }) => (
4105
- // @ts-ignore
4106
- 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))
4107
- )
4165
+ (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))
4108
4166
  );
4109
4167
  var editUser = (0, import_toolkit20.createAsyncThunk)(
4110
4168
  `${sliceName8}/editUser`,
@@ -4125,7 +4183,7 @@ var enableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4125
4183
  );
4126
4184
  var disableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4127
4185
  `${sliceName8}/disableUser2fa`,
4128
- (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))))
4186
+ (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))]))
4129
4187
  );
4130
4188
  var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
4131
4189
  (accu, [area, definition]) => {
@@ -4278,7 +4336,6 @@ var getPermissionSets = (0, import_toolkit20.createAsyncThunk)(
4278
4336
  accu[permissionSet.name] = permissionSetObject;
4279
4337
  return accu;
4280
4338
  },
4281
- // @ts-ignore
4282
4339
  { ...getState().users.permissionSetsById }
4283
4340
  );
4284
4341
  return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
@@ -4371,7 +4428,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
4371
4428
  role: {
4372
4429
  ...emptyRole,
4373
4430
  name,
4374
- // @ts-ignore
4375
4431
  description: description ? description : roleState.description,
4376
4432
  uiPermissions: {
4377
4433
  ...emptyUiPermissions,
@@ -4414,10 +4470,7 @@ var editRole = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/editRole`,
4414
4470
  });
4415
4471
  var removeRole = (0, import_toolkit20.createAsyncThunk)(
4416
4472
  `${sliceName8}/removeRole`,
4417
- (roleId, { dispatch }) => (
4418
- // @ts-ignore
4419
- 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))
4420
- )
4473
+ (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))
4421
4474
  );
4422
4475
  var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4423
4476
  `${sliceName8}/getGlobalSettings`,
@@ -4428,7 +4481,6 @@ var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4428
4481
  );
4429
4482
  var saveGlobalSettings = (0, import_toolkit20.createAsyncThunk)(
4430
4483
  `${sliceName8}/saveGlobalSettings`,
4431
- // @ts-ignore
4432
4484
  ({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
4433
4485
  if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
4434
4486
  return;
@@ -4474,11 +4526,9 @@ var saveUserSettings = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/sav
4474
4526
  const tooltipState = getTooltipsState(getState());
4475
4527
  const updatedSettings = {
4476
4528
  ...userSettings,
4477
- // @ts-ignore
4478
4529
  ...settings,
4479
4530
  onboarding: {
4480
4531
  ...onboardingState,
4481
- // @ts-ignore
4482
4532
  ...settings.onboarding
4483
4533
  },
4484
4534
  tooltips: tooltipState
@@ -4522,10 +4572,7 @@ var generateToken = (0, import_toolkit20.createAsyncThunk)(
4522
4572
  );
4523
4573
  var revokeToken = (0, import_toolkit20.createAsyncThunk)(
4524
4574
  `${sliceName8}/revokeToken`,
4525
- (token, { dispatch }) => (
4526
- // @ts-ignore
4527
- general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4528
- )
4575
+ (token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4529
4576
  );
4530
4577
  var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
4531
4578
  let tasks = [dispatch(actions8.setTooltipState(remainder))];
@@ -4534,23 +4581,20 @@ var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/
4534
4581
  }
4535
4582
  return Promise.all(tasks);
4536
4583
  });
4537
- var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, ({ readState = READ_STATES.read, tooltips }, { dispatch }) => {
4538
- const updatedTips = tooltips.reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4584
+ var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
4585
+ const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
4539
4586
  return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
4540
4587
  });
4541
4588
  var submitFeedback = (0, import_toolkit20.createAsyncThunk)(
4542
4589
  `${sliceName8}/submitFeedback`,
4543
- // @ts-ignore
4544
- ({ satisfaction, feedback, ...meta }, { dispatch }) => {
4545
- return general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4546
- subject: "feedback submission",
4547
- body: JSON.stringify({ feedback, satisfaction, meta })
4548
- }).then(() => {
4549
- const today = /* @__PURE__ */ new Date();
4550
- dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4551
- setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4552
- });
4553
- }
4590
+ ({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4591
+ subject: "feedback submission",
4592
+ body: JSON.stringify({ feedback, satisfaction, meta })
4593
+ }).then(() => {
4594
+ const today = /* @__PURE__ */ new Date();
4595
+ dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4596
+ setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4597
+ })
4554
4598
  );
4555
4599
 
4556
4600
  // src/appSlice/thunks.ts