@northern.tech/store 0.3.2 → 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 +137 -94
  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-74OJIKXF.js → chunk-2JHFUQ6B.js} +133 -96
  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 +143 -99
  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 +137 -94
  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 +139 -94
  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 +146 -100
  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 +1605 -1539
  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 +216 -137
  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 +193 -122
  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 +135 -94
  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-74OJIKXF.js.map +0 -1
  183. package/dist/chunk-A6CT6GTI.js.map +0 -1
  184. package/dist/chunk-ANB5BM5J.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,6 +3626,13 @@ 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
3637
  const { start: startUnix, end: endUnix } = (0, import_helpers8.dateRangeToUnix)(startDate, endDate);
3584
3638
  const createdAfter = startDate ? `&created_after=${startUnix}` : "";
@@ -3681,12 +3735,12 @@ var deleteAuthset = (0, import_toolkit18.createAsyncThunk)(
3681
3735
  );
3682
3736
  var preauthDevice = (0, import_toolkit18.createAsyncThunk)(
3683
3737
  `${sliceName3}/preauthDevice`,
3684
- (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) => {
3685
3739
  if (err.response.status === 409) {
3686
- 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");
3687
3741
  }
3688
3742
  return commonErrorHandler(err, "The device could not be added:", dispatch);
3689
- }).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds))))
3743
+ })
3690
3744
  );
3691
3745
  var decommissionDevice = (0, import_toolkit18.createAsyncThunk)(
3692
3746
  `${sliceName3}/decommissionDevice`,
@@ -3913,6 +3967,9 @@ var changeNotificationSetting = (0, import_toolkit19.createAsyncThunk)(
3913
3967
  }
3914
3968
  );
3915
3969
 
3970
+ // src/usersSlice/thunks.ts
3971
+ var import_helptips = require("@northern.tech/common-ui/helptips");
3972
+
3916
3973
  // src/api/users-api.ts
3917
3974
  var import_axios3 = __toESM(require("axios"), 1);
3918
3975
  var Api2 = {
@@ -3946,7 +4003,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
3946
4003
  }
3947
4004
  const twoFAError = is2FABackend ? " and verification code" : "";
3948
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.`;
3949
- 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" })));
3950
4007
  };
3951
4008
  var loginUser = (0, import_toolkit20.createAsyncThunk)(
3952
4009
  `${sliceName8}/loginUser`,
@@ -3970,19 +4027,16 @@ var loginUser = (0, import_toolkit20.createAsyncThunk)(
3970
4027
  const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
3971
4028
  setSessionInfo({ token, expiresAt });
3972
4029
  cookies2.remove("JWT", { path: "/" });
3973
- return (
3974
- // @ts-ignore
3975
- Promise.resolve(dispatch(getUser(OWN_USER_ID))).unwrap().catch((e) => {
3976
- cleanUp();
3977
- return Promise.reject(dispatch(setSnackbar4((0, import_helpers9.extractErrorMessage)(e))));
3978
- }).then(() => {
3979
- window.sessionStorage.removeItem("pendings-redirect");
3980
- if (window.location.pathname !== "/ui/") {
3981
- window.location.replace("/ui/");
3982
- }
3983
- return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
3984
- })
3985
- );
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
+ });
3986
4040
  })
3987
4041
  );
3988
4042
  var logoutUser = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
@@ -4000,6 +4054,7 @@ var switchUserOrganization = (0, import_toolkit20.createAsyncThunk)(`${sliceName
4000
4054
  return Promise.reject();
4001
4055
  }
4002
4056
  return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
4057
+ window.sessionStorage.setItem("tenantChanged", "true");
4003
4058
  setSessionInfo({ ...getSessionInfo(), token });
4004
4059
  window.location.reload();
4005
4060
  });
@@ -4040,11 +4095,18 @@ var verify2FA = (0, import_toolkit20.createAsyncThunk)(
4040
4095
  );
4041
4096
  var getUserList = (0, import_toolkit20.createAsyncThunk)(
4042
4097
  `${sliceName8}/getUserList`,
4043
- (_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
4044
- const users = res.data.reduce((accu, item) => {
4045
- accu[item.id] = item;
4046
- return accu;
4047
- }, {});
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
+ );
4048
4110
  return dispatch(actions8.receivedUserList(users));
4049
4111
  }).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
4050
4112
  );
@@ -4053,9 +4115,7 @@ var getUser = (0, import_toolkit20.createAsyncThunk)(
4053
4115
  (id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
4054
4116
  ({ data: user }) => Promise.all([
4055
4117
  dispatch(actions8.receivedUser(user)),
4056
- // @ts-ignore
4057
4118
  dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
4058
- // @ts-ignore
4059
4119
  dispatch(updateUserColumnSettings({ currentUserId: user.id })),
4060
4120
  user
4061
4121
  ])
@@ -4102,10 +4162,7 @@ var createUser = (0, import_toolkit20.createAsyncThunk)(
4102
4162
  );
4103
4163
  var removeUser = (0, import_toolkit20.createAsyncThunk)(
4104
4164
  `${sliceName8}/removeUser`,
4105
- (userId, { dispatch }) => (
4106
- // @ts-ignore
4107
- general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar4(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
4108
- )
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))
4109
4166
  );
4110
4167
  var editUser = (0, import_toolkit20.createAsyncThunk)(
4111
4168
  `${sliceName8}/editUser`,
@@ -4126,7 +4183,7 @@ var enableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4126
4183
  );
4127
4184
  var disableUser2fa = (0, import_toolkit20.createAsyncThunk)(
4128
4185
  `${sliceName8}/disableUser2fa`,
4129
- (userId = OWN_USER_ID, { dispatch }) => general_api_default.post(`${useradmApiUrlv1}/users/${userId}/2fa/disable`).catch((err) => commonErrorHandler(err, `There was an error disabling Two Factor authentication for the user.`, dispatch)).then(() => Promise.resolve(dispatch(getUser(userId))))
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))]))
4130
4187
  );
4131
4188
  var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
4132
4189
  (accu, [area, definition]) => {
@@ -4279,7 +4336,6 @@ var getPermissionSets = (0, import_toolkit20.createAsyncThunk)(
4279
4336
  accu[permissionSet.name] = permissionSetObject;
4280
4337
  return accu;
4281
4338
  },
4282
- // @ts-ignore
4283
4339
  { ...getState().users.permissionSetsById }
4284
4340
  );
4285
4341
  return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
@@ -4372,7 +4428,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
4372
4428
  role: {
4373
4429
  ...emptyRole,
4374
4430
  name,
4375
- // @ts-ignore
4376
4431
  description: description ? description : roleState.description,
4377
4432
  uiPermissions: {
4378
4433
  ...emptyUiPermissions,
@@ -4415,10 +4470,7 @@ var editRole = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/editRole`,
4415
4470
  });
4416
4471
  var removeRole = (0, import_toolkit20.createAsyncThunk)(
4417
4472
  `${sliceName8}/removeRole`,
4418
- (roleId, { dispatch }) => (
4419
- // @ts-ignore
4420
- general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar4(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
4421
- )
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))
4422
4474
  );
4423
4475
  var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4424
4476
  `${sliceName8}/getGlobalSettings`,
@@ -4429,7 +4481,6 @@ var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
4429
4481
  );
4430
4482
  var saveGlobalSettings = (0, import_toolkit20.createAsyncThunk)(
4431
4483
  `${sliceName8}/saveGlobalSettings`,
4432
- // @ts-ignore
4433
4484
  ({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
4434
4485
  if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
4435
4486
  return;
@@ -4475,11 +4526,9 @@ var saveUserSettings = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/sav
4475
4526
  const tooltipState = getTooltipsState(getState());
4476
4527
  const updatedSettings = {
4477
4528
  ...userSettings,
4478
- // @ts-ignore
4479
4529
  ...settings,
4480
4530
  onboarding: {
4481
4531
  ...onboardingState,
4482
- // @ts-ignore
4483
4532
  ...settings.onboarding
4484
4533
  },
4485
4534
  tooltips: tooltipState
@@ -4523,10 +4572,7 @@ var generateToken = (0, import_toolkit20.createAsyncThunk)(
4523
4572
  );
4524
4573
  var revokeToken = (0, import_toolkit20.createAsyncThunk)(
4525
4574
  `${sliceName8}/revokeToken`,
4526
- (token, { dispatch }) => (
4527
- // @ts-ignore
4528
- general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4529
- )
4575
+ (token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
4530
4576
  );
4531
4577
  var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
4532
4578
  let tasks = [dispatch(actions8.setTooltipState(remainder))];
@@ -4535,23 +4581,20 @@ var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/
4535
4581
  }
4536
4582
  return Promise.all(tasks);
4537
4583
  });
4538
- var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, ({ readState = READ_STATES.read, tooltips }, { dispatch }) => {
4539
- const updatedTips = tooltips.reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
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 } }), {});
4540
4586
  return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
4541
4587
  });
4542
4588
  var submitFeedback = (0, import_toolkit20.createAsyncThunk)(
4543
4589
  `${sliceName8}/submitFeedback`,
4544
- // @ts-ignore
4545
- ({ satisfaction, feedback, ...meta }, { dispatch }) => {
4546
- return general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
4547
- subject: "feedback submission",
4548
- body: JSON.stringify({ feedback, satisfaction, meta })
4549
- }).then(() => {
4550
- const today = /* @__PURE__ */ new Date();
4551
- dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
4552
- setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
4553
- });
4554
- }
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
+ })
4555
4598
  );
4556
4599
 
4557
4600
  // src/appSlice/thunks.ts