@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.
- package/dist/actions.cjs +20 -17
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.js +8 -8
- package/dist/api/general-api.js +2 -2
- package/dist/api/types/Tenant.ts +17 -12
- package/dist/api/users-api.js +2 -2
- package/dist/appSlice/constants.cjs +18 -10
- package/dist/appSlice/constants.cjs.map +1 -1
- package/dist/appSlice/constants.d.cts +41 -84
- package/dist/appSlice/constants.d.ts +41 -84
- package/dist/appSlice/constants.js +1 -1
- package/dist/appSlice/index.js +2 -2
- package/dist/appSlice/thunks.cjs +137 -94
- package/dist/appSlice/thunks.cjs.map +1 -1
- package/dist/appSlice/thunks.js +19 -19
- package/dist/auth.js +2 -2
- package/dist/{chunk-Q6M5TTDQ.js → chunk-2CYOM4BK.js} +1 -1
- package/dist/chunk-2CYOM4BK.js.map +1 -0
- package/dist/{chunk-74OJIKXF.js → chunk-2JHFUQ6B.js} +133 -96
- package/dist/chunk-2JHFUQ6B.js.map +1 -0
- package/dist/{chunk-YETZPQFR.js → chunk-4XJMRVFI.js} +12 -11
- package/dist/chunk-4XJMRVFI.js.map +1 -0
- package/dist/{chunk-RX55KAKX.js → chunk-7JKWI5FK.js} +2 -2
- package/dist/{chunk-A6CT6GTI.js → chunk-C5NEDBJI.js} +17 -11
- package/dist/chunk-C5NEDBJI.js.map +1 -0
- package/dist/{chunk-NNADGHSL.js → chunk-DAPAXWA5.js} +8 -8
- package/dist/{chunk-ANB5BM5J.js → chunk-DCK2DBOA.js} +27 -20
- package/dist/chunk-DCK2DBOA.js.map +1 -0
- package/dist/{chunk-E5LEU5PF.js → chunk-HPBE6KYY.js} +2 -2
- package/dist/{chunk-2RJIDREZ.js → chunk-LEMVXAYP.js} +25 -16
- package/dist/chunk-LEMVXAYP.js.map +1 -0
- package/dist/{chunk-NI4SZOCF.js → chunk-LGNOTPUG.js} +9 -9
- package/dist/{chunk-MDC7Y3EX.js → chunk-LTKOV26W.js} +22 -20
- package/dist/chunk-LTKOV26W.js.map +1 -0
- package/dist/{chunk-YTQUNAZP.js → chunk-QRGTG4YB.js} +2 -2
- package/dist/{chunk-XTRPX7JZ.js → chunk-TI2RL5P2.js} +2 -2
- package/dist/chunk-TI2RL5P2.js.map +1 -0
- package/dist/{chunk-YGBFDXXA.js → chunk-TUACATJA.js} +2 -2
- package/dist/{chunk-25AKG5HH.js → chunk-UWMYZNUB.js} +19 -11
- package/dist/chunk-UWMYZNUB.js.map +1 -0
- package/dist/{chunk-UEP36GCI.js → chunk-VMNMD6KF.js} +2 -2
- package/dist/{chunk-KAQJH2YL.js → chunk-WXL7PVI5.js} +12 -4
- package/dist/chunk-WXL7PVI5.js.map +1 -0
- package/dist/{chunk-VOCOFE4I.js → chunk-X7IEZBM4.js} +2 -2
- package/dist/{chunk-XXHONFSQ.js → chunk-YDS36ALB.js} +3 -3
- package/dist/{chunk-XXHONFSQ.js.map → chunk-YDS36ALB.js.map} +1 -1
- package/dist/commonSelectors.cjs +40 -18
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +54 -46
- package/dist/commonSelectors.d.ts +54 -46
- package/dist/commonSelectors.js +9 -9
- package/dist/constants.cjs +35 -19
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +3 -3
- package/dist/constants.d.ts +3 -3
- package/dist/constants.js +6 -2
- package/dist/deploymentdevicehook.cjs +143 -99
- package/dist/deploymentdevicehook.cjs.map +1 -1
- package/dist/deploymentdevicehook.d.cts +1 -1
- package/dist/deploymentdevicehook.d.ts +1 -1
- package/dist/deploymentdevicehook.js +24 -22
- package/dist/deploymentdevicehook.js.map +1 -1
- package/dist/deploymentsSlice/constants.cjs +8 -8
- package/dist/deploymentsSlice/constants.cjs.map +1 -1
- package/dist/deploymentsSlice/constants.js +2 -2
- package/dist/deploymentsSlice/index.cjs +8 -8
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.js +3 -3
- package/dist/deploymentsSlice/selectors.cjs +8 -8
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.js +3 -3
- package/dist/deploymentsSlice/thunks.cjs +137 -94
- package/dist/deploymentsSlice/thunks.cjs.map +1 -1
- package/dist/deploymentsSlice/thunks.js +19 -19
- package/dist/devicesSlice/constants.cjs +11 -8
- package/dist/devicesSlice/constants.cjs.map +1 -1
- package/dist/devicesSlice/constants.d.cts +2 -1
- package/dist/devicesSlice/constants.d.ts +2 -1
- package/dist/devicesSlice/constants.js +4 -2
- package/dist/devicesSlice/index.cjs +8 -8
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.js +3 -3
- package/dist/devicesSlice/selectors.cjs +9 -9
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.js +3 -3
- package/dist/devicesSlice/thunks.cjs +139 -94
- package/dist/devicesSlice/thunks.cjs.map +1 -1
- package/dist/devicesSlice/thunks.d.cts +12 -2
- package/dist/devicesSlice/thunks.d.ts +12 -2
- package/dist/devicesSlice/thunks.js +21 -19
- package/dist/flag-eu-5477R2P4.svg +130 -0
- package/dist/flag-us-HNQAF66I.svg +63 -0
- package/dist/monitorSlice/constants.cjs +8 -8
- package/dist/monitorSlice/constants.cjs.map +1 -1
- package/dist/monitorSlice/constants.js +2 -2
- package/dist/monitorSlice/index.cjs +8 -8
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.js +3 -3
- package/dist/monitorSlice/thunks.cjs +59 -37
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.js +17 -17
- package/dist/onboardingSlice/thunks.cjs +146 -100
- package/dist/onboardingSlice/thunks.cjs.map +1 -1
- package/dist/onboardingSlice/thunks.d.cts +1 -32
- package/dist/onboardingSlice/thunks.d.ts +1 -32
- package/dist/onboardingSlice/thunks.js +19 -19
- package/dist/organizationSlice/constants.cjs +22 -17
- package/dist/organizationSlice/constants.cjs.map +1 -1
- package/dist/organizationSlice/constants.d.cts +33 -1
- package/dist/organizationSlice/constants.d.ts +33 -1
- package/dist/organizationSlice/constants.js +4 -2
- package/dist/organizationSlice/index.cjs +18 -15
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +26 -1012
- package/dist/organizationSlice/index.d.ts +26 -1012
- package/dist/organizationSlice/index.js +3 -3
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +9 -1
- package/dist/organizationSlice/selectors.d.ts +9 -1
- package/dist/organizationSlice/selectors.js +3 -3
- package/dist/organizationSlice/thunks.cjs +1605 -1539
- package/dist/organizationSlice/thunks.cjs.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +61 -36
- package/dist/organizationSlice/thunks.d.ts +61 -36
- package/dist/organizationSlice/thunks.js +19 -19
- package/dist/organizationSlice/types.cjs +19 -0
- package/dist/organizationSlice/types.cjs.map +1 -0
- package/dist/organizationSlice/types.d.cts +114 -0
- package/dist/organizationSlice/types.d.ts +114 -0
- package/dist/organizationSlice/types.js +1 -0
- package/dist/organizationSlice/types.js.map +1 -0
- package/dist/releasesSlice/index.js +2 -2
- package/dist/releasesSlice/selectors.cjs +11 -0
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.js +4 -4
- package/dist/releasesSlice/thunks.cjs +73 -49
- package/dist/releasesSlice/thunks.cjs.map +1 -1
- package/dist/releasesSlice/thunks.d.cts +1 -4
- package/dist/releasesSlice/thunks.d.ts +1 -4
- package/dist/releasesSlice/thunks.js +17 -17
- package/dist/selectors.cjs +46 -18
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +9 -1
- package/dist/selectors.d.ts +9 -1
- package/dist/selectors.js +36 -30
- package/dist/store.cjs +36 -23
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +12 -231
- package/dist/store.d.ts +12 -231
- package/dist/store.js +13 -11
- package/dist/storehooks.cjs +216 -137
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +36 -24
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +193 -122
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +5 -1
- package/dist/thunks.d.ts +5 -1
- package/dist/thunks.js +21 -19
- package/dist/usersSlice/constants.cjs +10 -10
- package/dist/usersSlice/constants.cjs.map +1 -1
- package/dist/usersSlice/constants.js +2 -2
- package/dist/usersSlice/index.cjs +10 -10
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.js +3 -3
- package/dist/usersSlice/selectors.cjs +35 -13
- package/dist/usersSlice/selectors.cjs.map +1 -1
- package/dist/usersSlice/selectors.d.cts +44 -1
- package/dist/usersSlice/selectors.d.ts +44 -1
- package/dist/usersSlice/selectors.js +12 -6
- package/dist/usersSlice/thunks.cjs +135 -94
- package/dist/usersSlice/thunks.cjs.map +1 -1
- package/dist/usersSlice/thunks.d.cts +10 -9
- package/dist/usersSlice/thunks.d.ts +10 -9
- package/dist/usersSlice/thunks.js +19 -19
- package/dist/utils.cjs +17 -16
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +3 -3
- package/package.json +7 -7
- package/dist/chunk-25AKG5HH.js.map +0 -1
- package/dist/chunk-2RJIDREZ.js.map +0 -1
- package/dist/chunk-74OJIKXF.js.map +0 -1
- package/dist/chunk-A6CT6GTI.js.map +0 -1
- package/dist/chunk-ANB5BM5J.js.map +0 -1
- package/dist/chunk-KAQJH2YL.js.map +0 -1
- package/dist/chunk-MDC7Y3EX.js.map +0 -1
- package/dist/chunk-Q6M5TTDQ.js.map +0 -1
- package/dist/chunk-XTRPX7JZ.js.map +0 -1
- package/dist/chunk-YETZPQFR.js.map +0 -1
- /package/dist/{chunk-RX55KAKX.js.map → chunk-7JKWI5FK.js.map} +0 -0
- /package/dist/{chunk-NNADGHSL.js.map → chunk-DAPAXWA5.js.map} +0 -0
- /package/dist/{chunk-E5LEU5PF.js.map → chunk-HPBE6KYY.js.map} +0 -0
- /package/dist/{chunk-NI4SZOCF.js.map → chunk-LGNOTPUG.js.map} +0 -0
- /package/dist/{chunk-YTQUNAZP.js.map → chunk-QRGTG4YB.js.map} +0 -0
- /package/dist/{chunk-YGBFDXXA.js.map → chunk-TUACATJA.js.map} +0 -0
- /package/dist/{chunk-UEP36GCI.js.map → chunk-VMNMD6KF.js.map} +0 -0
- /package/dist/{chunk-VOCOFE4I.js.map → chunk-X7IEZBM4.js.map} +0 -0
package/dist/thunks.cjs
CHANGED
|
@@ -182,6 +182,7 @@ __export(thunks_exports, {
|
|
|
182
182
|
submitFeedback: () => submitFeedback,
|
|
183
183
|
switchUserOrganization: () => switchUserOrganization,
|
|
184
184
|
tenantDataDivergedMessage: () => tenantDataDivergedMessage,
|
|
185
|
+
triggerDeviceUpdate: () => triggerDeviceUpdate,
|
|
185
186
|
updateDeploymentControlMap: () => updateDeploymentControlMap,
|
|
186
187
|
updateDeviceAuth: () => updateDeviceAuth,
|
|
187
188
|
updateDevicesAuth: () => updateDevicesAuth,
|
|
@@ -203,6 +204,14 @@ var import_universal_cookie = __toESM(require("universal-cookie"), 1);
|
|
|
203
204
|
|
|
204
205
|
// src/appSlice/constants.ts
|
|
205
206
|
var import_icons_material = require("@mui/icons-material");
|
|
207
|
+
|
|
208
|
+
// ../../assets/img/flag-eu.svg
|
|
209
|
+
var flag_eu_default = "./flag-eu-5477R2P4.svg";
|
|
210
|
+
|
|
211
|
+
// ../../assets/img/flag-us.svg
|
|
212
|
+
var flag_us_default = "./flag-us-HNQAF66I.svg";
|
|
213
|
+
|
|
214
|
+
// src/appSlice/constants.ts
|
|
206
215
|
var startingDeviceCount = {
|
|
207
216
|
os: "for first 50 devices",
|
|
208
217
|
professional: "for first 250 devices"
|
|
@@ -225,36 +234,36 @@ var emptyChartSelection = { software: "", group: "", chartType: chartTypes.bar.k
|
|
|
225
234
|
var defaultReportType = "distribution";
|
|
226
235
|
var defaultReports = [{ ...emptyChartSelection, group: null, attribute: "artifact_name", type: defaultReportType }];
|
|
227
236
|
var locations = {
|
|
228
|
-
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io" },
|
|
229
|
-
us: { key: "us", title: "US", location: "hosted.mender.io" }
|
|
237
|
+
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io", icon: flag_eu_default },
|
|
238
|
+
us: { key: "us", title: "US", location: "hosted.mender.io", icon: flag_us_default }
|
|
230
239
|
};
|
|
231
240
|
var PLANS = {
|
|
232
241
|
os: {
|
|
233
242
|
id: "os",
|
|
234
243
|
name: "Basic",
|
|
235
244
|
offer: true,
|
|
236
|
-
price: "$32/month",
|
|
245
|
+
price: "$32 / month",
|
|
237
246
|
deviceCount: startingDeviceCount.os,
|
|
238
|
-
offerprice: "$23/month for first 50 devices",
|
|
247
|
+
offerprice: "$23 / month for first 50 devices",
|
|
239
248
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
240
|
-
features: ["
|
|
249
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
241
250
|
},
|
|
242
251
|
professional: {
|
|
243
252
|
id: "professional",
|
|
244
253
|
name: "Professional",
|
|
245
254
|
offer: true,
|
|
246
|
-
price: "$269/month",
|
|
255
|
+
price: "$269 / month",
|
|
247
256
|
deviceCount: startingDeviceCount.professional,
|
|
248
|
-
offerprice: "$200/month for first 50 devices",
|
|
257
|
+
offerprice: "$200 / month for first 50 devices",
|
|
249
258
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
250
|
-
features: ["
|
|
259
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
251
260
|
},
|
|
252
261
|
enterprise: {
|
|
253
262
|
id: "enterprise",
|
|
254
263
|
name: "Enterprise",
|
|
255
264
|
price: "Custom pricing",
|
|
256
|
-
deviceCount: "
|
|
257
|
-
features: ["
|
|
265
|
+
deviceCount: "Unlimited devices",
|
|
266
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
258
267
|
}
|
|
259
268
|
};
|
|
260
269
|
var ADDONS = {
|
|
@@ -725,6 +734,7 @@ var DEVICE_STATES = {
|
|
|
725
734
|
rejected: "rejected"
|
|
726
735
|
};
|
|
727
736
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
737
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
728
738
|
|
|
729
739
|
// src/monitorSlice/constants.ts
|
|
730
740
|
var alertChannels = { email: "email" };
|
|
@@ -806,13 +816,16 @@ var SSO_TYPES = {
|
|
|
806
816
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
807
817
|
}
|
|
808
818
|
};
|
|
809
|
-
var
|
|
810
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
811
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
812
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
813
|
-
{ title: "
|
|
814
|
-
|
|
815
|
-
|
|
819
|
+
var auditlogTypes = {
|
|
820
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
821
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
822
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
823
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
824
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
825
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
826
|
+
};
|
|
827
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
828
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
816
829
|
var emptyWebhook = {
|
|
817
830
|
description: "",
|
|
818
831
|
enabled: true,
|
|
@@ -946,7 +959,7 @@ var uiPermissionsByArea = {
|
|
|
946
959
|
explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
|
|
947
960
|
key: "auditlog",
|
|
948
961
|
uiPermissions: [uiPermissionsById.read],
|
|
949
|
-
title: "System
|
|
962
|
+
title: "System Audit Log"
|
|
950
963
|
},
|
|
951
964
|
deployments: {
|
|
952
965
|
endpoints: [
|
|
@@ -1097,7 +1110,7 @@ var serviceProviderRolesById = {
|
|
|
1097
1110
|
},
|
|
1098
1111
|
readOnly: {
|
|
1099
1112
|
name: "Read access",
|
|
1100
|
-
value: staticRolesByName.
|
|
1113
|
+
value: staticRolesByName.readOnly,
|
|
1101
1114
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
1102
1115
|
permissions: [],
|
|
1103
1116
|
uiPermissions: {
|
|
@@ -1429,7 +1442,7 @@ var getGroups = (0, import_toolkit3.createSelector)([getGroupsById], (groupsById
|
|
|
1429
1442
|
(accu, [groupname, group]) => {
|
|
1430
1443
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
1431
1444
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
1432
|
-
if (group.filters
|
|
1445
|
+
if (group.filters?.length > 0) {
|
|
1433
1446
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
1434
1447
|
accu.dynamic.push(groupItem);
|
|
1435
1448
|
} else {
|
|
@@ -1504,14 +1517,15 @@ var getAuditLogEntry = (0, import_toolkit4.createSelector)([getAuditLog, getAudi
|
|
|
1504
1517
|
// src/utils.ts
|
|
1505
1518
|
var import_helpers3 = require("@northern.tech/utils/helpers");
|
|
1506
1519
|
var filterProcessors = {
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1520
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
1521
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
1522
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
1523
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
1524
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
1525
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
1526
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
1527
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers3.yes,
|
|
1528
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
1515
1529
|
};
|
|
1516
1530
|
var filterAliases = {
|
|
1517
1531
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -1635,8 +1649,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
1635
1649
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
1636
1650
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
1637
1651
|
var getUsersById = (state) => state.users.byId;
|
|
1652
|
+
var getUsersList = (0, import_toolkit6.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
1638
1653
|
var getCurrentUser = (0, import_toolkit6.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
1639
1654
|
var getUserSettings = (state) => state.users.userSettings;
|
|
1655
|
+
var getSelectedDeviceAttribute = (0, import_toolkit6.createSelector)(
|
|
1656
|
+
[getUserSettings],
|
|
1657
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
1658
|
+
);
|
|
1640
1659
|
var getIsDarkMode = (0, import_toolkit6.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
1641
1660
|
var getShowHelptips = (0, import_toolkit6.createSelector)(
|
|
1642
1661
|
[getTooltipsById],
|
|
@@ -1661,7 +1680,7 @@ var getOfflineThresholdSettings = (0, import_toolkit6.createSelector)([getGlobal
|
|
|
1661
1680
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
1662
1681
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
1663
1682
|
}));
|
|
1664
|
-
var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
1683
|
+
var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
1665
1684
|
var getCurrentSession = (state) => state.users.currentSession;
|
|
1666
1685
|
|
|
1667
1686
|
// src/commonSelectors.ts
|
|
@@ -1723,12 +1742,18 @@ var getUserCapabilities = (0, import_toolkit7.createSelector)([getUserRoles, get
|
|
|
1723
1742
|
});
|
|
1724
1743
|
var getTenantCapabilities = (0, import_toolkit7.createSelector)(
|
|
1725
1744
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
1726
|
-
({
|
|
1745
|
+
({
|
|
1746
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
1747
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
1748
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
1749
|
+
hasMonitor: isMonitorEnabled,
|
|
1750
|
+
isHosted
|
|
1751
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
1727
1752
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
1728
1753
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
1729
|
-
const hasDeviceConfig =
|
|
1730
|
-
const hasDeviceConnect =
|
|
1731
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
1754
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
1755
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
1756
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
1732
1757
|
return {
|
|
1733
1758
|
canDelta,
|
|
1734
1759
|
canRetry: canDelta,
|
|
@@ -1858,7 +1883,7 @@ var getAuditlogDevice = (0, import_toolkit7.createSelector)([getAuditLogEntry, g
|
|
|
1858
1883
|
var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
1859
1884
|
if (service_provider) {
|
|
1860
1885
|
return roles.reduce((accu, role) => {
|
|
1861
|
-
if (rolesById[role.
|
|
1886
|
+
if (rolesById[role.value]) {
|
|
1862
1887
|
return accu;
|
|
1863
1888
|
}
|
|
1864
1889
|
accu.push(role);
|
|
@@ -1866,7 +1891,7 @@ var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, get
|
|
|
1866
1891
|
}, Object.values(serviceProviderRolesById));
|
|
1867
1892
|
}
|
|
1868
1893
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
1869
|
-
const index = accu.findIndex(({
|
|
1894
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
1870
1895
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
1871
1896
|
return accu;
|
|
1872
1897
|
}, roles);
|
|
@@ -2852,13 +2877,12 @@ var actions_default = {
|
|
|
2852
2877
|
};
|
|
2853
2878
|
|
|
2854
2879
|
// src/store.ts
|
|
2880
|
+
var import_react_redux = require("react-redux");
|
|
2855
2881
|
var import_helpers7 = require("@northern.tech/utils/helpers");
|
|
2856
2882
|
var import_toolkit17 = require("@reduxjs/toolkit");
|
|
2857
2883
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2858
2884
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2859
|
-
var resetEnvironment = () =>
|
|
2860
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2861
|
-
};
|
|
2885
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2862
2886
|
resetEnvironment();
|
|
2863
2887
|
var commonErrorFallback = "Please check your connection.";
|
|
2864
2888
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2884,6 +2908,14 @@ var sessionReducer = (state, action) => {
|
|
|
2884
2908
|
}
|
|
2885
2909
|
return rootReducer(state, action);
|
|
2886
2910
|
};
|
|
2911
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2912
|
+
if (action.type.endsWith("/rejected")) {
|
|
2913
|
+
const { error } = action;
|
|
2914
|
+
console.error("Rejection in action:", action);
|
|
2915
|
+
console.error(error.stack);
|
|
2916
|
+
}
|
|
2917
|
+
return next(action);
|
|
2918
|
+
};
|
|
2887
2919
|
var getConfiguredStore = (options = {}) => {
|
|
2888
2920
|
const { preloadedState = {}, ...config } = options;
|
|
2889
2921
|
return (0, import_toolkit17.configureStore)({
|
|
@@ -2899,7 +2931,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2899
2931
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2900
2932
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2901
2933
|
}
|
|
2902
|
-
})
|
|
2934
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2903
2935
|
});
|
|
2904
2936
|
};
|
|
2905
2937
|
var store = getConfiguredStore({
|
|
@@ -2908,6 +2940,7 @@ var store = getConfiguredStore({
|
|
|
2908
2940
|
|
|
2909
2941
|
// src/deploymentsSlice/thunks.ts
|
|
2910
2942
|
var import_helpers8 = require("@northern.tech/utils/helpers");
|
|
2943
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
2911
2944
|
var import_toolkit18 = require("@reduxjs/toolkit");
|
|
2912
2945
|
var import_validator = require("validator");
|
|
2913
2946
|
var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
|
|
@@ -2964,6 +2997,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
|
|
|
2964
2997
|
return Promise.all(tasks);
|
|
2965
2998
|
});
|
|
2966
2999
|
});
|
|
3000
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
3001
|
+
if (!expirationDate) {
|
|
3002
|
+
return false;
|
|
3003
|
+
}
|
|
3004
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
3005
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
3006
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
3007
|
+
};
|
|
3008
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
3009
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
3010
|
+
if (!totalDeploymentCount) {
|
|
3011
|
+
if (!hasDeployments) {
|
|
3012
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
3013
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
3014
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
3018
|
+
}
|
|
3019
|
+
};
|
|
2967
3020
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
2968
3021
|
var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
2969
3022
|
let request;
|
|
@@ -2974,6 +3027,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2974
3027
|
} else {
|
|
2975
3028
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
2976
3029
|
}
|
|
3030
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
3031
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
3032
|
+
const { trial_expiration } = getOrganization(getState());
|
|
2977
3033
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
2978
3034
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
2979
3035
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -2988,6 +3044,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2988
3044
|
dispatch(getSingleDeployment(deploymentId)),
|
|
2989
3045
|
dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
2990
3046
|
];
|
|
3047
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
2991
3048
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
2992
3049
|
if (canManageUsers) {
|
|
2993
3050
|
const { phases, retries } = newDeployment;
|
|
@@ -3662,7 +3719,7 @@ var getDevicesByStatus2 = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/
|
|
|
3662
3719
|
page = defaultPage2,
|
|
3663
3720
|
perPage = defaultPerPage2,
|
|
3664
3721
|
sortOptions = [],
|
|
3665
|
-
selectedAttributes =
|
|
3722
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
3666
3723
|
} = options;
|
|
3667
3724
|
const state = getState();
|
|
3668
3725
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -3775,7 +3832,6 @@ var getReportingLimits = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3775
3832
|
})
|
|
3776
3833
|
);
|
|
3777
3834
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
3778
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
3779
3835
|
var getSingleReportData = (reportConfig, groups) => {
|
|
3780
3836
|
const { attribute, group, software = "" } = reportConfig;
|
|
3781
3837
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -3855,6 +3911,13 @@ var getDeviceConnect = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3855
3911
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
3856
3912
|
)
|
|
3857
3913
|
);
|
|
3914
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
3915
|
+
var triggerDeviceUpdate = (0, import_toolkit19.createAsyncThunk)(
|
|
3916
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
3917
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
3918
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
3919
|
+
)
|
|
3920
|
+
);
|
|
3858
3921
|
var getSessionDetails = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
3859
3922
|
const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
|
|
3860
3923
|
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
@@ -3957,12 +4020,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3957
4020
|
);
|
|
3958
4021
|
var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3959
4022
|
`${sliceName3}/preauthDevice`,
|
|
3960
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
4023
|
+
(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) => {
|
|
3961
4024
|
if (err.response.status === 409) {
|
|
3962
|
-
return
|
|
4025
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3963
4026
|
}
|
|
3964
4027
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3965
|
-
})
|
|
4028
|
+
})
|
|
3966
4029
|
);
|
|
3967
4030
|
var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3968
4031
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4191,18 +4254,20 @@ var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4191
4254
|
|
|
4192
4255
|
// src/onboardingSlice/thunks.ts
|
|
4193
4256
|
var import_helpers10 = require("@northern.tech/utils/helpers");
|
|
4257
|
+
var import_onboardingManager = require("@northern.tech/utils/onboardingManager");
|
|
4258
|
+
var import_tracking2 = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
4194
4259
|
var import_toolkit21 = require("@reduxjs/toolkit");
|
|
4195
4260
|
var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
|
|
4196
4261
|
var cookies3 = new import_universal_cookie3.default();
|
|
4197
4262
|
var applyOnboardingFallbacks = (progress2) => {
|
|
4198
|
-
const step =
|
|
4263
|
+
const step = import_onboardingManager.onboardingSteps[progress2];
|
|
4199
4264
|
if (step && step.fallbackStep) {
|
|
4200
4265
|
return step.fallbackStep;
|
|
4201
4266
|
}
|
|
4202
4267
|
return progress2;
|
|
4203
4268
|
};
|
|
4204
4269
|
var determineProgress = (acceptedDevices, pendingDevices, releases, pastDeployments) => {
|
|
4205
|
-
const steps =
|
|
4270
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4206
4271
|
let progress2 = -1;
|
|
4207
4272
|
progress2 = pendingDevices.length > 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_PENDING_ACCEPTING_ONBOARDING) : progress2;
|
|
4208
4273
|
progress2 = acceptedDevices.length >= 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_ACCEPTED_ONBOARDING) : progress2;
|
|
@@ -4219,7 +4284,7 @@ var deductOnboardingState = ({ devicesById, devicesByStatus, onboardingState, pa
|
|
|
4219
4284
|
const progress2 = applyOnboardingFallbacks(onboardingState.progress || determineProgress(acceptedDevices, pendingDevices, releases, pastDeployments));
|
|
4220
4285
|
return {
|
|
4221
4286
|
...onboardingState,
|
|
4222
|
-
complete: !!(Boolean(userCookie) || onboardingState.complete || acceptedDevices.length > 1 && pendingDevices.length > 0 && releases.length > 1 && pastDeployments.length > 1 || acceptedDevices.length >= 1 && releases.length >= 2 && pastDeployments.length > 2 || acceptedDevices.length >= 1 && pendingDevices.length > 0 && releases.length >= 2 && pastDeployments.length >= 2 ||
|
|
4287
|
+
complete: !!(Boolean(userCookie) || onboardingState.complete || acceptedDevices.length > 1 && pendingDevices.length > 0 && releases.length > 1 && pastDeployments.length > 1 || acceptedDevices.length >= 1 && releases.length >= 2 && pastDeployments.length > 2 || acceptedDevices.length >= 1 && pendingDevices.length > 0 && releases.length >= 2 && pastDeployments.length >= 2 || Object.keys(import_onboardingManager.onboardingSteps).findIndex((step) => step === progress2) >= Object.keys(import_onboardingManager.onboardingSteps).length - 1 || onboardingState.disable || ![canDeploy, canManageDevices, canReadDeployments, canReadDevices, canReadReleases, canUploadReleases].every((i) => i)),
|
|
4223
4288
|
showTips: onboardingState.showTips != null ? onboardingState.showTips : true,
|
|
4224
4289
|
deviceType,
|
|
4225
4290
|
approach: onboardingState.approach || (deviceType.some((type) => type.startsWith("qemu")) ? "virtual" : "physical"),
|
|
@@ -4272,10 +4337,10 @@ var setOnboardingCanceled = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4272
4337
|
Promise.resolve(dispatch(actions5.setShowOnboardingHelp(false))),
|
|
4273
4338
|
Promise.resolve(dispatch(actions5.setShowDismissOnboardingTipsDialog(false))),
|
|
4274
4339
|
Promise.resolve(dispatch(actions5.setOnboardingComplete(true)))
|
|
4275
|
-
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE)))
|
|
4340
|
+
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE))).then(() => import_tracking2.default.event({ category: "onboarding", action: import_onboardingManager.onboardingSteps.ONBOARDING_CANCELED }))
|
|
4276
4341
|
);
|
|
4277
4342
|
var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/advanceOnboarding`, (stepId, { dispatch, getState }) => {
|
|
4278
|
-
const steps =
|
|
4343
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4279
4344
|
const progress2 = steps.findIndex((step) => step === getState().onboarding.progress);
|
|
4280
4345
|
const stepIndex = steps.findIndex((step) => step === stepId);
|
|
4281
4346
|
if (progress2 > stepIndex || getState().onboarding.progress === null) {
|
|
@@ -4283,7 +4348,8 @@ var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/ad
|
|
|
4283
4348
|
}
|
|
4284
4349
|
const madeProgress = steps[stepIndex + 1];
|
|
4285
4350
|
const state = { ...getOnboardingState(getState()), progress: madeProgress };
|
|
4286
|
-
state.complete = stepIndex + 1 >=
|
|
4351
|
+
state.complete = stepIndex + 1 >= Object.keys(import_onboardingManager.onboardingSteps).findIndex((step) => step === onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE) ? true : state.complete;
|
|
4352
|
+
import_tracking2.default.event({ category: "onboarding", action: stepId });
|
|
4287
4353
|
return Promise.all([dispatch(actions5.setOnboardingProgress(madeProgress)), dispatch(saveUserSettings({ onboarding: state }))]);
|
|
4288
4354
|
});
|
|
4289
4355
|
|
|
@@ -4362,7 +4428,7 @@ var startUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4362
4428
|
var cancelUpgrade = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/cancelUpgrade`, (tenantId) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/cancel`));
|
|
4363
4429
|
var completeUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
4364
4430
|
`${sliceName6}/completeUpgrade`,
|
|
4365
|
-
({ tenantId, plan }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/complete`, { plan }).catch((err) => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch)).then(() => Promise.
|
|
4431
|
+
({ tenantId, plan, billing_profile }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/complete`, { plan, billing_profile }).catch((err) => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch)).then(() => Promise.all([dispatch(getDeviceLimit2()), dispatch(getUserOrganization())]))
|
|
4366
4432
|
);
|
|
4367
4433
|
var prepareAuditlogQuery = ({ startDate, endDate, user: userFilter, type, detail: detailFilter, sort = {} }) => {
|
|
4368
4434
|
const userId = userFilter?.id || userFilter;
|
|
@@ -4411,7 +4477,12 @@ var setAuditlogsState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/se
|
|
|
4411
4477
|
});
|
|
4412
4478
|
var tenantDataDivergedMessage = "The system detected there is a change in your plan or purchased add-ons. Please log out and log in again";
|
|
4413
4479
|
var addTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/createTenant`, (selectionState, { dispatch }) => {
|
|
4414
|
-
return general_api_default.post(`${tenantadmApiUrlv2}/tenants`, selectionState).then(
|
|
4480
|
+
return general_api_default.post(`${tenantadmApiUrlv2}/tenants`, selectionState).then(
|
|
4481
|
+
() => Promise.all([
|
|
4482
|
+
dispatch(setSnackbar4("Tenant was created successfully.")),
|
|
4483
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4484
|
+
])
|
|
4485
|
+
).catch((err) => commonErrorHandler(err, "There was an error creating tenant", dispatch, commonErrorFallback));
|
|
4415
4486
|
});
|
|
4416
4487
|
var tenantListRetrieval = async (config) => {
|
|
4417
4488
|
const { page, perPage } = config;
|
|
@@ -4439,15 +4510,20 @@ var setTenantsListState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/
|
|
|
4439
4510
|
});
|
|
4440
4511
|
var editTenantDeviceLimit = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ newLimit, id, name }, { dispatch }) => {
|
|
4441
4512
|
return general_api_default.put(`${tenantadmApiUrlv2}/tenants/${id}/child`, { device_limit: newLimit, name }).catch((err) => commonErrorHandler(err, `Device Limit cannot be changed`, dispatch)).then(() => {
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4513
|
+
return Promise.all([
|
|
4514
|
+
dispatch(setSnackbar4("Device Limit was changed successfully")),
|
|
4515
|
+
dispatch(getUserOrganization()),
|
|
4516
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4517
|
+
]);
|
|
4446
4518
|
});
|
|
4447
4519
|
});
|
|
4448
4520
|
var removeTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ id }, { dispatch }) => {
|
|
4449
4521
|
return general_api_default.post(`${tenantadmApiUrlv2}/tenants/${id}/remove/start`).catch((err) => commonErrorHandler(err, `There was an error removing the tenant`, dispatch)).then(
|
|
4450
|
-
() => Promise.all([
|
|
4522
|
+
() => Promise.all([
|
|
4523
|
+
dispatch(setSnackbar4("The tenant was removed successfully")),
|
|
4524
|
+
dispatch(getUserOrganization()),
|
|
4525
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4526
|
+
])
|
|
4451
4527
|
);
|
|
4452
4528
|
});
|
|
4453
4529
|
var getUserOrganization = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/getUserOrganization`, (_, { dispatch, getState }) => {
|
|
@@ -4471,7 +4547,10 @@ var sendSupportMessage = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4471
4547
|
);
|
|
4472
4548
|
var requestPlanChange = (0, import_toolkit22.createAsyncThunk)(
|
|
4473
4549
|
`${sliceName6}/requestPlanChange`,
|
|
4474
|
-
({ content, tenantId }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(
|
|
4550
|
+
({ content, tenantId }, { dispatch, rejectWithValue }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(async (err) => {
|
|
4551
|
+
await commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback);
|
|
4552
|
+
rejectWithValue(err);
|
|
4553
|
+
}).then(() => Promise.resolve(dispatch(setSnackbar4({ message: "Your request was sent successfully", autoHideDuration: TIMEOUTS.fiveSeconds }))))
|
|
4475
4554
|
);
|
|
4476
4555
|
var downloadLicenseReport = (0, import_toolkit22.createAsyncThunk)(
|
|
4477
4556
|
`${sliceName6}/downloadLicenseReport`,
|
|
@@ -4729,9 +4808,12 @@ var editArtifact = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4729
4808
|
if (!release || index === -1) {
|
|
4730
4809
|
return dispatch(getReleases());
|
|
4731
4810
|
}
|
|
4732
|
-
|
|
4811
|
+
const updatedRelease = {
|
|
4812
|
+
...release,
|
|
4813
|
+
artifacts: release.artifacts.map((artifact, i) => i === index ? { ...artifact, description: body.description } : artifact)
|
|
4814
|
+
};
|
|
4733
4815
|
return Promise.all([
|
|
4734
|
-
dispatch(actions7.receiveRelease(
|
|
4816
|
+
dispatch(actions7.receiveRelease(updatedRelease)),
|
|
4735
4817
|
dispatch(setSnackbar5("Artifact details were updated successfully.", TIMEOUTS.fiveSeconds, "")),
|
|
4736
4818
|
dispatch(getRelease(release.name)),
|
|
4737
4819
|
dispatch(selectRelease(release.name))
|
|
@@ -4832,16 +4914,15 @@ var getReleases = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getRelea
|
|
|
4832
4914
|
return Promise.all(tasks);
|
|
4833
4915
|
}).catch((err) => commonErrorHandler(err, `Please check your connection`, dispatch));
|
|
4834
4916
|
});
|
|
4835
|
-
var getRelease = (0, import_toolkit23.createAsyncThunk)(
|
|
4836
|
-
`${
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
4842
|
-
|
|
4843
|
-
|
|
4844
|
-
);
|
|
4917
|
+
var getRelease = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getReleases`, async (name, { dispatch, getState }) => {
|
|
4918
|
+
const releaseResponse = await general_api_default.get(`${deploymentsApiUrlV2}/deployments/releases/${name}`);
|
|
4919
|
+
const { data: release } = releaseResponse;
|
|
4920
|
+
if (release) {
|
|
4921
|
+
const stateRelease = getReleasesById(getState())[release.name] || {};
|
|
4922
|
+
await dispatch(actions7.receiveRelease(flattenRelease(release, stateRelease)));
|
|
4923
|
+
}
|
|
4924
|
+
return Promise.resolve(null);
|
|
4925
|
+
});
|
|
4845
4926
|
var updateReleaseInfo = (0, import_toolkit23.createAsyncThunk)(
|
|
4846
4927
|
`${sliceName7}/updateReleaseInfo`,
|
|
4847
4928
|
({ name, info }, { dispatch, getState }) => general_api_default.patch(`${deploymentsApiUrlV2}/deployments/releases/${name}`, info).catch((err) => commonErrorHandler(err, `Release details couldn't be updated.`, dispatch)).then(() => {
|
|
@@ -4869,6 +4950,9 @@ var getUpdateTypes = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4869
4950
|
(_, { dispatch }) => general_api_default.get(`${deploymentsApiUrlV2}/releases/all/types`).catch((err) => commonErrorHandler(err, `Existing update types couldn't be retrieved.`, dispatch)).then(({ data: types }) => Promise.resolve(dispatch(actions7.receiveReleaseTypes(types))))
|
|
4870
4951
|
);
|
|
4871
4952
|
|
|
4953
|
+
// src/usersSlice/thunks.ts
|
|
4954
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
4955
|
+
|
|
4872
4956
|
// src/api/users-api.ts
|
|
4873
4957
|
var import_axios4 = __toESM(require("axios"), 1);
|
|
4874
4958
|
var Api2 = {
|
|
@@ -4902,7 +4986,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
4902
4986
|
}
|
|
4903
4987
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
4904
4988
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
4905
|
-
return Promise.reject(dispatch(setSnackbar6((0, import_helpers13.preformatWithRequestID)(err.response, errorMessage),
|
|
4989
|
+
return Promise.reject(dispatch(setSnackbar6({ message: (0, import_helpers13.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
4906
4990
|
};
|
|
4907
4991
|
var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4908
4992
|
`${sliceName8}/loginUser`,
|
|
@@ -4926,19 +5010,16 @@ var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4926
5010
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
4927
5011
|
setSessionInfo({ token, expiresAt });
|
|
4928
5012
|
cookies5.remove("JWT", { path: "/" });
|
|
4929
|
-
return (
|
|
4930
|
-
|
|
4931
|
-
Promise.
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
window.
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4940
|
-
})
|
|
4941
|
-
);
|
|
5013
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
5014
|
+
cleanUp();
|
|
5015
|
+
return Promise.reject(dispatch(setSnackbar6((0, import_helpers13.extractErrorMessage)(e))));
|
|
5016
|
+
}).then(() => {
|
|
5017
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
5018
|
+
if (window.location.pathname !== "/ui/") {
|
|
5019
|
+
window.location.replace("/ui/");
|
|
5020
|
+
}
|
|
5021
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
5022
|
+
});
|
|
4942
5023
|
})
|
|
4943
5024
|
);
|
|
4944
5025
|
var logoutUser = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -4956,6 +5037,7 @@ var switchUserOrganization = (0, import_toolkit24.createAsyncThunk)(`${sliceName
|
|
|
4956
5037
|
return Promise.reject();
|
|
4957
5038
|
}
|
|
4958
5039
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
5040
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
4959
5041
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
4960
5042
|
window.location.reload();
|
|
4961
5043
|
});
|
|
@@ -4996,11 +5078,18 @@ var verify2FA = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4996
5078
|
);
|
|
4997
5079
|
var getUserList = (0, import_toolkit24.createAsyncThunk)(
|
|
4998
5080
|
`${sliceName8}/getUserList`,
|
|
4999
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
5000
|
-
const
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5081
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
5082
|
+
const currentUsersById = getUsersById(getState());
|
|
5083
|
+
const users = res.data.reduce(
|
|
5084
|
+
(accu, item) => {
|
|
5085
|
+
accu[item.id] = {
|
|
5086
|
+
...accu[item.id],
|
|
5087
|
+
...item
|
|
5088
|
+
};
|
|
5089
|
+
return accu;
|
|
5090
|
+
},
|
|
5091
|
+
{ ...currentUsersById }
|
|
5092
|
+
);
|
|
5004
5093
|
return dispatch(actions8.receivedUserList(users));
|
|
5005
5094
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
5006
5095
|
);
|
|
@@ -5009,9 +5098,7 @@ var getUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5009
5098
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
5010
5099
|
({ data: user }) => Promise.all([
|
|
5011
5100
|
dispatch(actions8.receivedUser(user)),
|
|
5012
|
-
// @ts-ignore
|
|
5013
5101
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
5014
|
-
// @ts-ignore
|
|
5015
5102
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
5016
5103
|
user
|
|
5017
5104
|
])
|
|
@@ -5058,10 +5145,7 @@ var createUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5058
5145
|
);
|
|
5059
5146
|
var removeUser = (0, import_toolkit24.createAsyncThunk)(
|
|
5060
5147
|
`${sliceName8}/removeUser`,
|
|
5061
|
-
(userId, { dispatch }) => (
|
|
5062
|
-
// @ts-ignore
|
|
5063
|
-
general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar6(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
5064
|
-
)
|
|
5148
|
+
(userId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar6(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
5065
5149
|
);
|
|
5066
5150
|
var editUser = (0, import_toolkit24.createAsyncThunk)(
|
|
5067
5151
|
`${sliceName8}/editUser`,
|
|
@@ -5082,7 +5166,7 @@ var enableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5082
5166
|
);
|
|
5083
5167
|
var disableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
5084
5168
|
`${sliceName8}/disableUser2fa`,
|
|
5085
|
-
(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.
|
|
5169
|
+
(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))]))
|
|
5086
5170
|
);
|
|
5087
5171
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
5088
5172
|
(accu, [area, definition]) => {
|
|
@@ -5235,7 +5319,6 @@ var getPermissionSets = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5235
5319
|
accu[permissionSet.name] = permissionSetObject;
|
|
5236
5320
|
return accu;
|
|
5237
5321
|
},
|
|
5238
|
-
// @ts-ignore
|
|
5239
5322
|
{ ...getState().users.permissionSetsById }
|
|
5240
5323
|
);
|
|
5241
5324
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -5328,7 +5411,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
5328
5411
|
role: {
|
|
5329
5412
|
...emptyRole,
|
|
5330
5413
|
name,
|
|
5331
|
-
// @ts-ignore
|
|
5332
5414
|
description: description ? description : roleState.description,
|
|
5333
5415
|
uiPermissions: {
|
|
5334
5416
|
...emptyUiPermissions,
|
|
@@ -5371,10 +5453,7 @@ var editRole = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
5371
5453
|
});
|
|
5372
5454
|
var removeRole = (0, import_toolkit24.createAsyncThunk)(
|
|
5373
5455
|
`${sliceName8}/removeRole`,
|
|
5374
|
-
(roleId, { dispatch }) => (
|
|
5375
|
-
// @ts-ignore
|
|
5376
|
-
general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar6(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
5377
|
-
)
|
|
5456
|
+
(roleId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar6(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
5378
5457
|
);
|
|
5379
5458
|
var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
5380
5459
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -5385,7 +5464,6 @@ var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5385
5464
|
);
|
|
5386
5465
|
var saveGlobalSettings = (0, import_toolkit24.createAsyncThunk)(
|
|
5387
5466
|
`${sliceName8}/saveGlobalSettings`,
|
|
5388
|
-
// @ts-ignore
|
|
5389
5467
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
5390
5468
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
5391
5469
|
return;
|
|
@@ -5431,11 +5509,9 @@ var saveUserSettings = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/sav
|
|
|
5431
5509
|
const tooltipState = getTooltipsState(getState());
|
|
5432
5510
|
const updatedSettings = {
|
|
5433
5511
|
...userSettings,
|
|
5434
|
-
// @ts-ignore
|
|
5435
5512
|
...settings,
|
|
5436
5513
|
onboarding: {
|
|
5437
5514
|
...onboardingState,
|
|
5438
|
-
// @ts-ignore
|
|
5439
5515
|
...settings.onboarding
|
|
5440
5516
|
},
|
|
5441
5517
|
tooltips: tooltipState
|
|
@@ -5479,10 +5555,7 @@ var generateToken = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5479
5555
|
);
|
|
5480
5556
|
var revokeToken = (0, import_toolkit24.createAsyncThunk)(
|
|
5481
5557
|
`${sliceName8}/revokeToken`,
|
|
5482
|
-
(token, { dispatch }) => (
|
|
5483
|
-
// @ts-ignore
|
|
5484
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5485
|
-
)
|
|
5558
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5486
5559
|
);
|
|
5487
5560
|
var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
5488
5561
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -5491,23 +5564,20 @@ var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/
|
|
|
5491
5564
|
}
|
|
5492
5565
|
return Promise.all(tasks);
|
|
5493
5566
|
});
|
|
5494
|
-
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
5495
|
-
const updatedTips =
|
|
5567
|
+
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
5568
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
5496
5569
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
5497
5570
|
});
|
|
5498
5571
|
var submitFeedback = (0, import_toolkit24.createAsyncThunk)(
|
|
5499
5572
|
`${sliceName8}/submitFeedback`,
|
|
5500
|
-
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5509
|
-
});
|
|
5510
|
-
}
|
|
5573
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
5574
|
+
subject: "feedback submission",
|
|
5575
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
5576
|
+
}).then(() => {
|
|
5577
|
+
const today = /* @__PURE__ */ new Date();
|
|
5578
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
5579
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5580
|
+
})
|
|
5511
5581
|
);
|
|
5512
5582
|
// Annotate the CommonJS export names for ESM import in node:
|
|
5513
5583
|
0 && (module.exports = {
|
|
@@ -5663,6 +5733,7 @@ var submitFeedback = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5663
5733
|
submitFeedback,
|
|
5664
5734
|
switchUserOrganization,
|
|
5665
5735
|
tenantDataDivergedMessage,
|
|
5736
|
+
triggerDeviceUpdate,
|
|
5666
5737
|
updateDeploymentControlMap,
|
|
5667
5738
|
updateDeviceAuth,
|
|
5668
5739
|
updateDevicesAuth,
|