@northern.tech/store 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +140 -96
- 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-APHL4JZP.js → chunk-2JHFUQ6B.js} +141 -102
- 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 +146 -101
- 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 +140 -96
- 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 +142 -96
- 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 +149 -102
- 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 +1608 -1540
- 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 +222 -141
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +36 -24
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +199 -126
- 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 +138 -96
- 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-A6CT6GTI.js.map +0 -1
- package/dist/chunk-ANB5BM5J.js.map +0 -1
- package/dist/chunk-APHL4JZP.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
|
@@ -4,34 +4,34 @@ import {
|
|
|
4
4
|
getDeviceMonitorConfig,
|
|
5
5
|
getIssueCountsByType,
|
|
6
6
|
getLatestDeviceAlerts
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-LGNOTPUG.js";
|
|
8
8
|
import "../chunk-YT73QWCN.js";
|
|
9
9
|
import "../chunk-NMAXZ3ZY.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-DCK2DBOA.js";
|
|
11
|
+
import "../chunk-X7IEZBM4.js";
|
|
12
|
+
import "../chunk-WXL7PVI5.js";
|
|
13
|
+
import "../chunk-2CYOM4BK.js";
|
|
14
|
+
import "../chunk-7JKWI5FK.js";
|
|
14
15
|
import "../chunk-JIS4PA3R.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-XXHONFSQ.js";
|
|
16
|
+
import "../chunk-YDS36ALB.js";
|
|
17
17
|
import "../chunk-YO22XLHI.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-4XJMRVFI.js";
|
|
19
19
|
import "../chunk-LIJIIRON.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-LEMVXAYP.js";
|
|
21
|
+
import "../chunk-DAPAXWA5.js";
|
|
22
|
+
import "../chunk-TUACATJA.js";
|
|
23
|
+
import "../chunk-TI2RL5P2.js";
|
|
23
24
|
import "../chunk-CYV6632F.js";
|
|
24
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-HPBE6KYY.js";
|
|
25
26
|
import "../chunk-FGKMJS3B.js";
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-UEP36GCI.js";
|
|
27
|
+
import "../chunk-QRGTG4YB.js";
|
|
28
|
+
import "../chunk-VMNMD6KF.js";
|
|
29
29
|
import "../chunk-7PVGDMNM.js";
|
|
30
30
|
import "../chunk-AMGWP7A4.js";
|
|
31
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-C5NEDBJI.js";
|
|
32
32
|
import "../chunk-CK6YE6AN.js";
|
|
33
33
|
import "../chunk-MRCFLG45.js";
|
|
34
|
-
import "../chunk-
|
|
34
|
+
import "../chunk-UWMYZNUB.js";
|
|
35
35
|
import "../chunk-4B3IMP4I.js";
|
|
36
36
|
export {
|
|
37
37
|
changeNotificationSetting,
|
|
@@ -68,28 +68,28 @@ var PLANS = {
|
|
|
68
68
|
id: "os",
|
|
69
69
|
name: "Basic",
|
|
70
70
|
offer: true,
|
|
71
|
-
price: "$32/month",
|
|
71
|
+
price: "$32 / month",
|
|
72
72
|
deviceCount: startingDeviceCount.os,
|
|
73
|
-
offerprice: "$23/month for first 50 devices",
|
|
73
|
+
offerprice: "$23 / month for first 50 devices",
|
|
74
74
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
75
|
-
features: ["
|
|
75
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
76
76
|
},
|
|
77
77
|
professional: {
|
|
78
78
|
id: "professional",
|
|
79
79
|
name: "Professional",
|
|
80
80
|
offer: true,
|
|
81
|
-
price: "$269/month",
|
|
81
|
+
price: "$269 / month",
|
|
82
82
|
deviceCount: startingDeviceCount.professional,
|
|
83
|
-
offerprice: "$200/month for first 50 devices",
|
|
83
|
+
offerprice: "$200 / month for first 50 devices",
|
|
84
84
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
85
|
-
features: ["
|
|
85
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
86
86
|
},
|
|
87
87
|
enterprise: {
|
|
88
88
|
id: "enterprise",
|
|
89
89
|
name: "Enterprise",
|
|
90
90
|
price: "Custom pricing",
|
|
91
|
-
deviceCount: "
|
|
92
|
-
features: ["
|
|
91
|
+
deviceCount: "Unlimited devices",
|
|
92
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
93
93
|
}
|
|
94
94
|
};
|
|
95
95
|
var ADDONS = {
|
|
@@ -560,6 +560,7 @@ var DEVICE_STATES = {
|
|
|
560
560
|
rejected: "rejected"
|
|
561
561
|
};
|
|
562
562
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
563
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
563
564
|
|
|
564
565
|
// src/monitorSlice/constants.ts
|
|
565
566
|
var alertChannels = { email: "email" };
|
|
@@ -641,13 +642,16 @@ var SSO_TYPES = {
|
|
|
641
642
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
642
643
|
}
|
|
643
644
|
};
|
|
644
|
-
var
|
|
645
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
646
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
647
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
648
|
-
{ title: "
|
|
649
|
-
|
|
650
|
-
|
|
645
|
+
var auditlogTypes = {
|
|
646
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
647
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
648
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
649
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
650
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
651
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
652
|
+
};
|
|
653
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
654
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
651
655
|
var emptyWebhook = {
|
|
652
656
|
description: "",
|
|
653
657
|
enabled: true,
|
|
@@ -780,7 +784,7 @@ var uiPermissionsByArea = {
|
|
|
780
784
|
explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
|
|
781
785
|
key: "auditlog",
|
|
782
786
|
uiPermissions: [uiPermissionsById.read],
|
|
783
|
-
title: "System
|
|
787
|
+
title: "System Audit Log"
|
|
784
788
|
},
|
|
785
789
|
deployments: {
|
|
786
790
|
endpoints: [
|
|
@@ -931,7 +935,7 @@ var serviceProviderRolesById = {
|
|
|
931
935
|
},
|
|
932
936
|
readOnly: {
|
|
933
937
|
name: "Read access",
|
|
934
|
-
value: staticRolesByName.
|
|
938
|
+
value: staticRolesByName.readOnly,
|
|
935
939
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
936
940
|
permissions: [],
|
|
937
941
|
uiPermissions: {
|
|
@@ -1185,7 +1189,7 @@ var getGroups = (0, import_toolkit3.createSelector)([getGroupsById], (groupsById
|
|
|
1185
1189
|
(accu, [groupname, group]) => {
|
|
1186
1190
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
1187
1191
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
1188
|
-
if (group.filters
|
|
1192
|
+
if (group.filters?.length > 0) {
|
|
1189
1193
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
1190
1194
|
accu.dynamic.push(groupItem);
|
|
1191
1195
|
} else {
|
|
@@ -1258,14 +1262,15 @@ var getAuditLogEntry = (0, import_toolkit4.createSelector)([getAuditLog, getAudi
|
|
|
1258
1262
|
// src/utils.ts
|
|
1259
1263
|
var import_helpers3 = require("@northern.tech/utils/helpers");
|
|
1260
1264
|
var filterProcessors = {
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1265
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
1266
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
1267
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
1268
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
1269
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
1270
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
1271
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
1272
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers3.yes,
|
|
1273
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
1269
1274
|
};
|
|
1270
1275
|
var filterAliases = {
|
|
1271
1276
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -1389,8 +1394,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
1389
1394
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
1390
1395
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
1391
1396
|
var getUsersById = (state) => state.users.byId;
|
|
1397
|
+
var getUsersList = (0, import_toolkit6.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
1392
1398
|
var getCurrentUser = (0, import_toolkit6.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
1393
1399
|
var getUserSettings = (state) => state.users.userSettings;
|
|
1400
|
+
var getSelectedDeviceAttribute = (0, import_toolkit6.createSelector)(
|
|
1401
|
+
[getUserSettings],
|
|
1402
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
1403
|
+
);
|
|
1394
1404
|
var getIsDarkMode = (0, import_toolkit6.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
1395
1405
|
var getShowHelptips = (0, import_toolkit6.createSelector)(
|
|
1396
1406
|
[getTooltipsById],
|
|
@@ -1415,7 +1425,7 @@ var getOfflineThresholdSettings = (0, import_toolkit6.createSelector)([getGlobal
|
|
|
1415
1425
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
1416
1426
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
1417
1427
|
}));
|
|
1418
|
-
var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
1428
|
+
var getRolesList = (0, import_toolkit6.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
1419
1429
|
|
|
1420
1430
|
// src/commonSelectors.ts
|
|
1421
1431
|
var getIsEnterprise = (0, import_toolkit7.createSelector)(
|
|
@@ -1476,12 +1486,18 @@ var getUserCapabilities = (0, import_toolkit7.createSelector)([getUserRoles, get
|
|
|
1476
1486
|
});
|
|
1477
1487
|
var getTenantCapabilities = (0, import_toolkit7.createSelector)(
|
|
1478
1488
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
1479
|
-
({
|
|
1489
|
+
({
|
|
1490
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
1491
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
1492
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
1493
|
+
hasMonitor: isMonitorEnabled,
|
|
1494
|
+
isHosted
|
|
1495
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
1480
1496
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
1481
1497
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
1482
|
-
const hasDeviceConfig =
|
|
1483
|
-
const hasDeviceConnect =
|
|
1484
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
1498
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
1499
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
1500
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
1485
1501
|
return {
|
|
1486
1502
|
canDelta,
|
|
1487
1503
|
canRetry: canDelta,
|
|
@@ -1611,7 +1627,7 @@ var getAuditlogDevice = (0, import_toolkit7.createSelector)([getAuditLogEntry, g
|
|
|
1611
1627
|
var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
1612
1628
|
if (service_provider) {
|
|
1613
1629
|
return roles.reduce((accu, role) => {
|
|
1614
|
-
if (rolesById[role.
|
|
1630
|
+
if (rolesById[role.value]) {
|
|
1615
1631
|
return accu;
|
|
1616
1632
|
}
|
|
1617
1633
|
accu.push(role);
|
|
@@ -1619,7 +1635,7 @@ var getRelevantRoles = (0, import_toolkit7.createSelector)([getOrganization, get
|
|
|
1619
1635
|
}, Object.values(serviceProviderRolesById));
|
|
1620
1636
|
}
|
|
1621
1637
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
1622
|
-
const index = accu.findIndex(({
|
|
1638
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
1623
1639
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
1624
1640
|
return accu;
|
|
1625
1641
|
}, roles);
|
|
@@ -2687,13 +2703,12 @@ var actions_default = {
|
|
|
2687
2703
|
};
|
|
2688
2704
|
|
|
2689
2705
|
// src/store.ts
|
|
2706
|
+
var import_react_redux = require("react-redux");
|
|
2690
2707
|
var import_helpers7 = require("@northern.tech/utils/helpers");
|
|
2691
2708
|
var import_toolkit17 = require("@reduxjs/toolkit");
|
|
2692
2709
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2693
2710
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2694
|
-
var resetEnvironment = () =>
|
|
2695
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2696
|
-
};
|
|
2711
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2697
2712
|
resetEnvironment();
|
|
2698
2713
|
var commonErrorFallback = "Please check your connection.";
|
|
2699
2714
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2719,6 +2734,14 @@ var sessionReducer = (state, action) => {
|
|
|
2719
2734
|
}
|
|
2720
2735
|
return rootReducer(state, action);
|
|
2721
2736
|
};
|
|
2737
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2738
|
+
if (action.type.endsWith("/rejected")) {
|
|
2739
|
+
const { error } = action;
|
|
2740
|
+
console.error("Rejection in action:", action);
|
|
2741
|
+
console.error(error.stack);
|
|
2742
|
+
}
|
|
2743
|
+
return next(action);
|
|
2744
|
+
};
|
|
2722
2745
|
var getConfiguredStore = (options = {}) => {
|
|
2723
2746
|
const { preloadedState = {}, ...config } = options;
|
|
2724
2747
|
return (0, import_toolkit17.configureStore)({
|
|
@@ -2734,7 +2757,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2734
2757
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2735
2758
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2736
2759
|
}
|
|
2737
|
-
})
|
|
2760
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2738
2761
|
});
|
|
2739
2762
|
};
|
|
2740
2763
|
var store = getConfiguredStore({
|
|
@@ -2743,6 +2766,7 @@ var store = getConfiguredStore({
|
|
|
2743
2766
|
|
|
2744
2767
|
// src/deploymentsSlice/thunks.ts
|
|
2745
2768
|
var import_helpers8 = require("@northern.tech/utils/helpers");
|
|
2769
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
2746
2770
|
var import_toolkit18 = require("@reduxjs/toolkit");
|
|
2747
2771
|
var import_validator = require("validator");
|
|
2748
2772
|
var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
|
|
@@ -2799,6 +2823,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
|
|
|
2799
2823
|
return Promise.all(tasks);
|
|
2800
2824
|
});
|
|
2801
2825
|
});
|
|
2826
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
2827
|
+
if (!expirationDate) {
|
|
2828
|
+
return false;
|
|
2829
|
+
}
|
|
2830
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
2831
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
2832
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
2833
|
+
};
|
|
2834
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
2835
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
2836
|
+
if (!totalDeploymentCount) {
|
|
2837
|
+
if (!hasDeployments) {
|
|
2838
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
2839
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
2840
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
2841
|
+
}
|
|
2842
|
+
}
|
|
2843
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
2844
|
+
}
|
|
2845
|
+
};
|
|
2802
2846
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
2803
2847
|
var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
2804
2848
|
let request;
|
|
@@ -2809,6 +2853,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2809
2853
|
} else {
|
|
2810
2854
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
2811
2855
|
}
|
|
2856
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
2857
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
2858
|
+
const { trial_expiration } = getOrganization(getState());
|
|
2812
2859
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
2813
2860
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
2814
2861
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -2823,6 +2870,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2823
2870
|
dispatch(getSingleDeployment(deploymentId)),
|
|
2824
2871
|
dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
2825
2872
|
];
|
|
2873
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
2826
2874
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
2827
2875
|
if (canManageUsers) {
|
|
2828
2876
|
const { phases, retries } = newDeployment;
|
|
@@ -3497,7 +3545,7 @@ var getDevicesByStatus2 = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/
|
|
|
3497
3545
|
page = defaultPage2,
|
|
3498
3546
|
perPage = defaultPerPage2,
|
|
3499
3547
|
sortOptions = [],
|
|
3500
|
-
selectedAttributes =
|
|
3548
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
3501
3549
|
} = options;
|
|
3502
3550
|
const state = getState();
|
|
3503
3551
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -3610,7 +3658,6 @@ var getReportingLimits = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3610
3658
|
})
|
|
3611
3659
|
);
|
|
3612
3660
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
3613
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
3614
3661
|
var getSingleReportData = (reportConfig, groups) => {
|
|
3615
3662
|
const { attribute, group, software = "" } = reportConfig;
|
|
3616
3663
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -3690,9 +3737,17 @@ var getDeviceConnect = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3690
3737
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
3691
3738
|
)
|
|
3692
3739
|
);
|
|
3740
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
3741
|
+
var triggerDeviceUpdate = (0, import_toolkit19.createAsyncThunk)(
|
|
3742
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
3743
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
3744
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
3745
|
+
)
|
|
3746
|
+
);
|
|
3693
3747
|
var getSessionDetails = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
3694
|
-
const
|
|
3695
|
-
const
|
|
3748
|
+
const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
|
|
3749
|
+
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
3750
|
+
const createdBefore = endDate ? `&created_before=${endUnix}` : "";
|
|
3696
3751
|
const objectSearch = `&object_id=${deviceId}`;
|
|
3697
3752
|
return general_api_default.get(`${auditLogsApiUrl}/logs?per_page=500${createdAfter}${createdBefore}&actor_id=${userId}${objectSearch}`).then(
|
|
3698
3753
|
({ data: auditLogEntries }) => {
|
|
@@ -3791,12 +3846,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3791
3846
|
);
|
|
3792
3847
|
var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3793
3848
|
`${sliceName3}/preauthDevice`,
|
|
3794
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
3849
|
+
(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) => {
|
|
3795
3850
|
if (err.response.status === 409) {
|
|
3796
|
-
return
|
|
3851
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3797
3852
|
}
|
|
3798
3853
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3799
|
-
})
|
|
3854
|
+
})
|
|
3800
3855
|
);
|
|
3801
3856
|
var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3802
3857
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4023,6 +4078,9 @@ var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4023
4078
|
}
|
|
4024
4079
|
);
|
|
4025
4080
|
|
|
4081
|
+
// src/usersSlice/thunks.ts
|
|
4082
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
4083
|
+
|
|
4026
4084
|
// src/api/users-api.ts
|
|
4027
4085
|
var import_axios3 = __toESM(require("axios"), 1);
|
|
4028
4086
|
var Api2 = {
|
|
@@ -4056,7 +4114,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
4056
4114
|
}
|
|
4057
4115
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
4058
4116
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
4059
|
-
return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.preformatWithRequestID)(err.response, errorMessage),
|
|
4117
|
+
return Promise.reject(dispatch(setSnackbar4({ message: (0, import_helpers10.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
4060
4118
|
};
|
|
4061
4119
|
var loginUser = (0, import_toolkit21.createAsyncThunk)(
|
|
4062
4120
|
`${sliceName8}/loginUser`,
|
|
@@ -4080,19 +4138,16 @@ var loginUser = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4080
4138
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
4081
4139
|
setSessionInfo({ token, expiresAt });
|
|
4082
4140
|
cookies3.remove("JWT", { path: "/" });
|
|
4083
|
-
return (
|
|
4084
|
-
|
|
4085
|
-
Promise.
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
window.
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4094
|
-
})
|
|
4095
|
-
);
|
|
4141
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
4142
|
+
cleanUp();
|
|
4143
|
+
return Promise.reject(dispatch(setSnackbar4((0, import_helpers10.extractErrorMessage)(e))));
|
|
4144
|
+
}).then(() => {
|
|
4145
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
4146
|
+
if (window.location.pathname !== "/ui/") {
|
|
4147
|
+
window.location.replace("/ui/");
|
|
4148
|
+
}
|
|
4149
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4150
|
+
});
|
|
4096
4151
|
})
|
|
4097
4152
|
);
|
|
4098
4153
|
var logoutUser = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -4110,6 +4165,7 @@ var switchUserOrganization = (0, import_toolkit21.createAsyncThunk)(`${sliceName
|
|
|
4110
4165
|
return Promise.reject();
|
|
4111
4166
|
}
|
|
4112
4167
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
4168
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
4113
4169
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
4114
4170
|
window.location.reload();
|
|
4115
4171
|
});
|
|
@@ -4150,11 +4206,18 @@ var verify2FA = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4150
4206
|
);
|
|
4151
4207
|
var getUserList = (0, import_toolkit21.createAsyncThunk)(
|
|
4152
4208
|
`${sliceName8}/getUserList`,
|
|
4153
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4154
|
-
const
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4209
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4210
|
+
const currentUsersById = getUsersById(getState());
|
|
4211
|
+
const users = res.data.reduce(
|
|
4212
|
+
(accu, item) => {
|
|
4213
|
+
accu[item.id] = {
|
|
4214
|
+
...accu[item.id],
|
|
4215
|
+
...item
|
|
4216
|
+
};
|
|
4217
|
+
return accu;
|
|
4218
|
+
},
|
|
4219
|
+
{ ...currentUsersById }
|
|
4220
|
+
);
|
|
4158
4221
|
return dispatch(actions8.receivedUserList(users));
|
|
4159
4222
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
4160
4223
|
);
|
|
@@ -4163,9 +4226,7 @@ var getUser = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4163
4226
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
4164
4227
|
({ data: user }) => Promise.all([
|
|
4165
4228
|
dispatch(actions8.receivedUser(user)),
|
|
4166
|
-
// @ts-ignore
|
|
4167
4229
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
4168
|
-
// @ts-ignore
|
|
4169
4230
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
4170
4231
|
user
|
|
4171
4232
|
])
|
|
@@ -4212,10 +4273,7 @@ var createUser = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4212
4273
|
);
|
|
4213
4274
|
var removeUser = (0, import_toolkit21.createAsyncThunk)(
|
|
4214
4275
|
`${sliceName8}/removeUser`,
|
|
4215
|
-
(userId, { dispatch }) => (
|
|
4216
|
-
// @ts-ignore
|
|
4217
|
-
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))
|
|
4218
|
-
)
|
|
4276
|
+
(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))
|
|
4219
4277
|
);
|
|
4220
4278
|
var editUser = (0, import_toolkit21.createAsyncThunk)(
|
|
4221
4279
|
`${sliceName8}/editUser`,
|
|
@@ -4236,7 +4294,7 @@ var enableUser2fa = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4236
4294
|
);
|
|
4237
4295
|
var disableUser2fa = (0, import_toolkit21.createAsyncThunk)(
|
|
4238
4296
|
`${sliceName8}/disableUser2fa`,
|
|
4239
|
-
(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.
|
|
4297
|
+
(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))]))
|
|
4240
4298
|
);
|
|
4241
4299
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
4242
4300
|
(accu, [area, definition]) => {
|
|
@@ -4389,7 +4447,6 @@ var getPermissionSets = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4389
4447
|
accu[permissionSet.name] = permissionSetObject;
|
|
4390
4448
|
return accu;
|
|
4391
4449
|
},
|
|
4392
|
-
// @ts-ignore
|
|
4393
4450
|
{ ...getState().users.permissionSetsById }
|
|
4394
4451
|
);
|
|
4395
4452
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -4482,7 +4539,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
4482
4539
|
role: {
|
|
4483
4540
|
...emptyRole,
|
|
4484
4541
|
name,
|
|
4485
|
-
// @ts-ignore
|
|
4486
4542
|
description: description ? description : roleState.description,
|
|
4487
4543
|
uiPermissions: {
|
|
4488
4544
|
...emptyUiPermissions,
|
|
@@ -4525,10 +4581,7 @@ var editRole = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
4525
4581
|
});
|
|
4526
4582
|
var removeRole = (0, import_toolkit21.createAsyncThunk)(
|
|
4527
4583
|
`${sliceName8}/removeRole`,
|
|
4528
|
-
(roleId, { dispatch }) => (
|
|
4529
|
-
// @ts-ignore
|
|
4530
|
-
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))
|
|
4531
|
-
)
|
|
4584
|
+
(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))
|
|
4532
4585
|
);
|
|
4533
4586
|
var getGlobalSettings2 = (0, import_toolkit21.createAsyncThunk)(
|
|
4534
4587
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -4539,7 +4592,6 @@ var getGlobalSettings2 = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4539
4592
|
);
|
|
4540
4593
|
var saveGlobalSettings = (0, import_toolkit21.createAsyncThunk)(
|
|
4541
4594
|
`${sliceName8}/saveGlobalSettings`,
|
|
4542
|
-
// @ts-ignore
|
|
4543
4595
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
4544
4596
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
4545
4597
|
return;
|
|
@@ -4585,11 +4637,9 @@ var saveUserSettings = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/sav
|
|
|
4585
4637
|
const tooltipState = getTooltipsState(getState());
|
|
4586
4638
|
const updatedSettings = {
|
|
4587
4639
|
...userSettings,
|
|
4588
|
-
// @ts-ignore
|
|
4589
4640
|
...settings,
|
|
4590
4641
|
onboarding: {
|
|
4591
4642
|
...onboardingState,
|
|
4592
|
-
// @ts-ignore
|
|
4593
4643
|
...settings.onboarding
|
|
4594
4644
|
},
|
|
4595
4645
|
tooltips: tooltipState
|
|
@@ -4633,10 +4683,7 @@ var generateToken = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4633
4683
|
);
|
|
4634
4684
|
var revokeToken = (0, import_toolkit21.createAsyncThunk)(
|
|
4635
4685
|
`${sliceName8}/revokeToken`,
|
|
4636
|
-
(token, { dispatch }) => (
|
|
4637
|
-
// @ts-ignore
|
|
4638
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
4639
|
-
)
|
|
4686
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
4640
4687
|
);
|
|
4641
4688
|
var setTooltipReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
4642
4689
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -4645,39 +4692,38 @@ var setTooltipReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/
|
|
|
4645
4692
|
}
|
|
4646
4693
|
return Promise.all(tasks);
|
|
4647
4694
|
});
|
|
4648
|
-
var setAllTooltipsReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
4649
|
-
const updatedTips =
|
|
4695
|
+
var setAllTooltipsReadState = (0, import_toolkit21.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
4696
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
4650
4697
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
4651
4698
|
});
|
|
4652
4699
|
var submitFeedback = (0, import_toolkit21.createAsyncThunk)(
|
|
4653
4700
|
`${sliceName8}/submitFeedback`,
|
|
4654
|
-
|
|
4655
|
-
|
|
4656
|
-
|
|
4657
|
-
|
|
4658
|
-
|
|
4659
|
-
|
|
4660
|
-
|
|
4661
|
-
|
|
4662
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
4663
|
-
});
|
|
4664
|
-
}
|
|
4701
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
4702
|
+
subject: "feedback submission",
|
|
4703
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
4704
|
+
}).then(() => {
|
|
4705
|
+
const today = /* @__PURE__ */ new Date();
|
|
4706
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
4707
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
4708
|
+
})
|
|
4665
4709
|
);
|
|
4666
4710
|
|
|
4667
4711
|
// src/onboardingSlice/thunks.ts
|
|
4668
4712
|
var import_helpers11 = require("@northern.tech/utils/helpers");
|
|
4713
|
+
var import_onboardingManager = require("@northern.tech/utils/onboardingManager");
|
|
4714
|
+
var import_tracking2 = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
4669
4715
|
var import_toolkit22 = require("@reduxjs/toolkit");
|
|
4670
4716
|
var import_universal_cookie4 = __toESM(require("universal-cookie"), 1);
|
|
4671
4717
|
var cookies4 = new import_universal_cookie4.default();
|
|
4672
4718
|
var applyOnboardingFallbacks = (progress2) => {
|
|
4673
|
-
const step =
|
|
4719
|
+
const step = import_onboardingManager.onboardingSteps[progress2];
|
|
4674
4720
|
if (step && step.fallbackStep) {
|
|
4675
4721
|
return step.fallbackStep;
|
|
4676
4722
|
}
|
|
4677
4723
|
return progress2;
|
|
4678
4724
|
};
|
|
4679
4725
|
var determineProgress = (acceptedDevices, pendingDevices, releases, pastDeployments) => {
|
|
4680
|
-
const steps =
|
|
4726
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4681
4727
|
let progress2 = -1;
|
|
4682
4728
|
progress2 = pendingDevices.length > 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_PENDING_ACCEPTING_ONBOARDING) : progress2;
|
|
4683
4729
|
progress2 = acceptedDevices.length >= 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_ACCEPTED_ONBOARDING) : progress2;
|
|
@@ -4694,7 +4740,7 @@ var deductOnboardingState = ({ devicesById, devicesByStatus, onboardingState, pa
|
|
|
4694
4740
|
const progress2 = applyOnboardingFallbacks(onboardingState.progress || determineProgress(acceptedDevices, pendingDevices, releases, pastDeployments));
|
|
4695
4741
|
return {
|
|
4696
4742
|
...onboardingState,
|
|
4697
|
-
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 ||
|
|
4743
|
+
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)),
|
|
4698
4744
|
showTips: onboardingState.showTips != null ? onboardingState.showTips : true,
|
|
4699
4745
|
deviceType,
|
|
4700
4746
|
approach: onboardingState.approach || (deviceType.some((type) => type.startsWith("qemu")) ? "virtual" : "physical"),
|
|
@@ -4747,10 +4793,10 @@ var setOnboardingCanceled = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4747
4793
|
Promise.resolve(dispatch(actions5.setShowOnboardingHelp(false))),
|
|
4748
4794
|
Promise.resolve(dispatch(actions5.setShowDismissOnboardingTipsDialog(false))),
|
|
4749
4795
|
Promise.resolve(dispatch(actions5.setOnboardingComplete(true)))
|
|
4750
|
-
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE)))
|
|
4796
|
+
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE))).then(() => import_tracking2.default.event({ category: "onboarding", action: import_onboardingManager.onboardingSteps.ONBOARDING_CANCELED }))
|
|
4751
4797
|
);
|
|
4752
4798
|
var advanceOnboarding = (0, import_toolkit22.createAsyncThunk)(`${sliceName5}/advanceOnboarding`, (stepId, { dispatch, getState }) => {
|
|
4753
|
-
const steps =
|
|
4799
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4754
4800
|
const progress2 = steps.findIndex((step) => step === getState().onboarding.progress);
|
|
4755
4801
|
const stepIndex = steps.findIndex((step) => step === stepId);
|
|
4756
4802
|
if (progress2 > stepIndex || getState().onboarding.progress === null) {
|
|
@@ -4758,7 +4804,8 @@ var advanceOnboarding = (0, import_toolkit22.createAsyncThunk)(`${sliceName5}/ad
|
|
|
4758
4804
|
}
|
|
4759
4805
|
const madeProgress = steps[stepIndex + 1];
|
|
4760
4806
|
const state = { ...getOnboardingState(getState()), progress: madeProgress };
|
|
4761
|
-
state.complete = stepIndex + 1 >=
|
|
4807
|
+
state.complete = stepIndex + 1 >= Object.keys(import_onboardingManager.onboardingSteps).findIndex((step) => step === onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE) ? true : state.complete;
|
|
4808
|
+
import_tracking2.default.event({ category: "onboarding", action: stepId });
|
|
4762
4809
|
return Promise.all([dispatch(actions5.setOnboardingProgress(madeProgress)), dispatch(saveUserSettings({ onboarding: state }))]);
|
|
4763
4810
|
});
|
|
4764
4811
|
// Annotate the CommonJS export names for ESM import in node:
|