@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/storehooks.cjs
CHANGED
|
@@ -35,14 +35,23 @@ __export(storehooks_exports, {
|
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(storehooks_exports);
|
|
37
37
|
var import_react = require("react");
|
|
38
|
-
var
|
|
38
|
+
var import_react_redux2 = require("react-redux");
|
|
39
39
|
var import_helpers14 = require("@northern.tech/utils/helpers");
|
|
40
|
+
var import_onboardingManager2 = require("@northern.tech/utils/onboardingManager");
|
|
40
41
|
var import_dayjs = __toESM(require("dayjs"), 1);
|
|
41
|
-
var import_duration = __toESM(require("dayjs/plugin/duration
|
|
42
|
+
var import_duration = __toESM(require("dayjs/plugin/duration"), 1);
|
|
42
43
|
var import_universal_cookie6 = __toESM(require("universal-cookie"), 1);
|
|
43
44
|
|
|
44
45
|
// src/appSlice/constants.ts
|
|
45
46
|
var import_icons_material = require("@mui/icons-material");
|
|
47
|
+
|
|
48
|
+
// ../../assets/img/flag-eu.svg
|
|
49
|
+
var flag_eu_default = "./flag-eu-5477R2P4.svg";
|
|
50
|
+
|
|
51
|
+
// ../../assets/img/flag-us.svg
|
|
52
|
+
var flag_us_default = "./flag-us-HNQAF66I.svg";
|
|
53
|
+
|
|
54
|
+
// src/appSlice/constants.ts
|
|
46
55
|
var startingDeviceCount = {
|
|
47
56
|
os: "for first 50 devices",
|
|
48
57
|
professional: "for first 250 devices"
|
|
@@ -65,36 +74,36 @@ var emptyChartSelection = { software: "", group: "", chartType: chartTypes.bar.k
|
|
|
65
74
|
var defaultReportType = "distribution";
|
|
66
75
|
var defaultReports = [{ ...emptyChartSelection, group: null, attribute: "artifact_name", type: defaultReportType }];
|
|
67
76
|
var locations = {
|
|
68
|
-
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io" },
|
|
69
|
-
us: { key: "us", title: "US", location: "hosted.mender.io" }
|
|
77
|
+
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io", icon: flag_eu_default },
|
|
78
|
+
us: { key: "us", title: "US", location: "hosted.mender.io", icon: flag_us_default }
|
|
70
79
|
};
|
|
71
80
|
var PLANS = {
|
|
72
81
|
os: {
|
|
73
82
|
id: "os",
|
|
74
83
|
name: "Basic",
|
|
75
84
|
offer: true,
|
|
76
|
-
price: "$32/month",
|
|
85
|
+
price: "$32 / month",
|
|
77
86
|
deviceCount: startingDeviceCount.os,
|
|
78
|
-
offerprice: "$23/month for first 50 devices",
|
|
87
|
+
offerprice: "$23 / month for first 50 devices",
|
|
79
88
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
80
|
-
features: ["
|
|
89
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
81
90
|
},
|
|
82
91
|
professional: {
|
|
83
92
|
id: "professional",
|
|
84
93
|
name: "Professional",
|
|
85
94
|
offer: true,
|
|
86
|
-
price: "$269/month",
|
|
95
|
+
price: "$269 / month",
|
|
87
96
|
deviceCount: startingDeviceCount.professional,
|
|
88
|
-
offerprice: "$200/month for first 50 devices",
|
|
97
|
+
offerprice: "$200 / month for first 50 devices",
|
|
89
98
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
90
|
-
features: ["
|
|
99
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
91
100
|
},
|
|
92
101
|
enterprise: {
|
|
93
102
|
id: "enterprise",
|
|
94
103
|
name: "Enterprise",
|
|
95
104
|
price: "Custom pricing",
|
|
96
|
-
deviceCount: "
|
|
97
|
-
features: ["
|
|
105
|
+
deviceCount: "Unlimited devices",
|
|
106
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
98
107
|
}
|
|
99
108
|
};
|
|
100
109
|
var ADDONS = {
|
|
@@ -565,6 +574,7 @@ var DEVICE_STATES = {
|
|
|
565
574
|
rejected: "rejected"
|
|
566
575
|
};
|
|
567
576
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
577
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
568
578
|
|
|
569
579
|
// src/monitorSlice/constants.ts
|
|
570
580
|
var alertChannels = { email: "email" };
|
|
@@ -646,13 +656,16 @@ var SSO_TYPES = {
|
|
|
646
656
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
647
657
|
}
|
|
648
658
|
};
|
|
649
|
-
var
|
|
650
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
651
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
652
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
653
|
-
{ title: "
|
|
654
|
-
|
|
655
|
-
|
|
659
|
+
var auditlogTypes = {
|
|
660
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
661
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
662
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
663
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
664
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
665
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
666
|
+
};
|
|
667
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
668
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
656
669
|
var emptyWebhook = {
|
|
657
670
|
description: "",
|
|
658
671
|
enabled: true,
|
|
@@ -786,7 +799,7 @@ var uiPermissionsByArea = {
|
|
|
786
799
|
explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
|
|
787
800
|
key: "auditlog",
|
|
788
801
|
uiPermissions: [uiPermissionsById.read],
|
|
789
|
-
title: "System
|
|
802
|
+
title: "System Audit Log"
|
|
790
803
|
},
|
|
791
804
|
deployments: {
|
|
792
805
|
endpoints: [
|
|
@@ -937,7 +950,7 @@ var serviceProviderRolesById = {
|
|
|
937
950
|
},
|
|
938
951
|
readOnly: {
|
|
939
952
|
name: "Read access",
|
|
940
|
-
value: staticRolesByName.
|
|
953
|
+
value: staticRolesByName.readOnly,
|
|
941
954
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
942
955
|
permissions: [],
|
|
943
956
|
uiPermissions: {
|
|
@@ -2102,7 +2115,7 @@ var getGroups = (0, import_toolkit11.createSelector)([getGroupsById], (groupsByI
|
|
|
2102
2115
|
(accu, [groupname, group]) => {
|
|
2103
2116
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
2104
2117
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
2105
|
-
if (group.filters
|
|
2118
|
+
if (group.filters?.length > 0) {
|
|
2106
2119
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
2107
2120
|
accu.dynamic.push(groupItem);
|
|
2108
2121
|
} else {
|
|
@@ -2177,14 +2190,15 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
|
|
|
2177
2190
|
// src/utils.ts
|
|
2178
2191
|
var import_helpers4 = require("@northern.tech/utils/helpers");
|
|
2179
2192
|
var filterProcessors = {
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2193
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
2194
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
2195
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
2196
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
2197
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
2198
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2199
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2200
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers4.yes,
|
|
2201
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
2188
2202
|
};
|
|
2189
2203
|
var filterAliases = {
|
|
2190
2204
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -2327,8 +2341,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
2327
2341
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
2328
2342
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
2329
2343
|
var getUsersById = (state) => state.users.byId;
|
|
2344
|
+
var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
2330
2345
|
var getCurrentUser = (0, import_toolkit14.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
2331
2346
|
var getUserSettings = (state) => state.users.userSettings;
|
|
2347
|
+
var getSelectedDeviceAttribute = (0, import_toolkit14.createSelector)(
|
|
2348
|
+
[getUserSettings],
|
|
2349
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
2350
|
+
);
|
|
2332
2351
|
var getIsDarkMode = (0, import_toolkit14.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
2333
2352
|
var getShowHelptips = (0, import_toolkit14.createSelector)(
|
|
2334
2353
|
[getTooltipsById],
|
|
@@ -2353,7 +2372,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
|
|
|
2353
2372
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
2354
2373
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
2355
2374
|
}));
|
|
2356
|
-
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
2375
|
+
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
2357
2376
|
var getCurrentSession = (state) => state.users.currentSession;
|
|
2358
2377
|
|
|
2359
2378
|
// src/commonSelectors.ts
|
|
@@ -2415,12 +2434,18 @@ var getUserCapabilities = (0, import_toolkit15.createSelector)([getUserRoles, ge
|
|
|
2415
2434
|
});
|
|
2416
2435
|
var getTenantCapabilities = (0, import_toolkit15.createSelector)(
|
|
2417
2436
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
2418
|
-
({
|
|
2437
|
+
({
|
|
2438
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
2439
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
2440
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
2441
|
+
hasMonitor: isMonitorEnabled,
|
|
2442
|
+
isHosted
|
|
2443
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
2419
2444
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
2420
2445
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
2421
|
-
const hasDeviceConfig =
|
|
2422
|
-
const hasDeviceConnect =
|
|
2423
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
2446
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
2447
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
2448
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
2424
2449
|
return {
|
|
2425
2450
|
canDelta,
|
|
2426
2451
|
canRetry: canDelta,
|
|
@@ -2550,7 +2575,7 @@ var getAuditlogDevice = (0, import_toolkit15.createSelector)([getAuditLogEntry,
|
|
|
2550
2575
|
var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
2551
2576
|
if (service_provider) {
|
|
2552
2577
|
return roles.reduce((accu, role) => {
|
|
2553
|
-
if (rolesById[role.
|
|
2578
|
+
if (rolesById[role.value]) {
|
|
2554
2579
|
return accu;
|
|
2555
2580
|
}
|
|
2556
2581
|
accu.push(role);
|
|
@@ -2558,7 +2583,7 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
|
|
|
2558
2583
|
}, Object.values(serviceProviderRolesById));
|
|
2559
2584
|
}
|
|
2560
2585
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
2561
|
-
const index = accu.findIndex(({
|
|
2586
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
2562
2587
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
2563
2588
|
return accu;
|
|
2564
2589
|
}, roles);
|
|
@@ -2711,13 +2736,12 @@ var setSearchState = (0, import_toolkit16.createAsyncThunk)(`${sliceName}/setSea
|
|
|
2711
2736
|
});
|
|
2712
2737
|
|
|
2713
2738
|
// src/store.ts
|
|
2739
|
+
var import_react_redux = require("react-redux");
|
|
2714
2740
|
var import_helpers7 = require("@northern.tech/utils/helpers");
|
|
2715
2741
|
var import_toolkit17 = require("@reduxjs/toolkit");
|
|
2716
2742
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2717
2743
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2718
|
-
var resetEnvironment = () =>
|
|
2719
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2720
|
-
};
|
|
2744
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2721
2745
|
resetEnvironment();
|
|
2722
2746
|
var commonErrorFallback = "Please check your connection.";
|
|
2723
2747
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2743,6 +2767,14 @@ var sessionReducer = (state, action) => {
|
|
|
2743
2767
|
}
|
|
2744
2768
|
return rootReducer(state, action);
|
|
2745
2769
|
};
|
|
2770
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2771
|
+
if (action.type.endsWith("/rejected")) {
|
|
2772
|
+
const { error } = action;
|
|
2773
|
+
console.error("Rejection in action:", action);
|
|
2774
|
+
console.error(error.stack);
|
|
2775
|
+
}
|
|
2776
|
+
return next(action);
|
|
2777
|
+
};
|
|
2746
2778
|
var getConfiguredStore = (options = {}) => {
|
|
2747
2779
|
const { preloadedState = {}, ...config } = options;
|
|
2748
2780
|
return (0, import_toolkit17.configureStore)({
|
|
@@ -2758,7 +2790,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2758
2790
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2759
2791
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2760
2792
|
}
|
|
2761
|
-
})
|
|
2793
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2762
2794
|
});
|
|
2763
2795
|
};
|
|
2764
2796
|
var store = getConfiguredStore({
|
|
@@ -2767,6 +2799,7 @@ var store = getConfiguredStore({
|
|
|
2767
2799
|
|
|
2768
2800
|
// src/deploymentsSlice/thunks.ts
|
|
2769
2801
|
var import_helpers8 = require("@northern.tech/utils/helpers");
|
|
2802
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
2770
2803
|
var import_toolkit18 = require("@reduxjs/toolkit");
|
|
2771
2804
|
var import_validator = require("validator");
|
|
2772
2805
|
var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
|
|
@@ -2823,6 +2856,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
|
|
|
2823
2856
|
return Promise.all(tasks);
|
|
2824
2857
|
});
|
|
2825
2858
|
});
|
|
2859
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
2860
|
+
if (!expirationDate) {
|
|
2861
|
+
return false;
|
|
2862
|
+
}
|
|
2863
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
2864
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
2865
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
2866
|
+
};
|
|
2867
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
2868
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
2869
|
+
if (!totalDeploymentCount) {
|
|
2870
|
+
if (!hasDeployments) {
|
|
2871
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
2872
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
2873
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
2874
|
+
}
|
|
2875
|
+
}
|
|
2876
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
2877
|
+
}
|
|
2878
|
+
};
|
|
2826
2879
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
2827
2880
|
var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
2828
2881
|
let request;
|
|
@@ -2833,6 +2886,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2833
2886
|
} else {
|
|
2834
2887
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
2835
2888
|
}
|
|
2889
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
2890
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
2891
|
+
const { trial_expiration } = getOrganization(getState());
|
|
2836
2892
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
2837
2893
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
2838
2894
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -2847,6 +2903,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2847
2903
|
dispatch(getSingleDeployment(deploymentId)),
|
|
2848
2904
|
dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
2849
2905
|
];
|
|
2906
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
2850
2907
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
2851
2908
|
if (canManageUsers) {
|
|
2852
2909
|
const { phases, retries } = newDeployment;
|
|
@@ -3521,7 +3578,7 @@ var getDevicesByStatus2 = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/
|
|
|
3521
3578
|
page = defaultPage2,
|
|
3522
3579
|
perPage = defaultPerPage2,
|
|
3523
3580
|
sortOptions = [],
|
|
3524
|
-
selectedAttributes =
|
|
3581
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
3525
3582
|
} = options;
|
|
3526
3583
|
const state = getState();
|
|
3527
3584
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -3634,7 +3691,6 @@ var getReportingLimits = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3634
3691
|
})
|
|
3635
3692
|
);
|
|
3636
3693
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
3637
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
3638
3694
|
var getSingleReportData = (reportConfig, groups) => {
|
|
3639
3695
|
const { attribute, group, software = "" } = reportConfig;
|
|
3640
3696
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -3714,6 +3770,13 @@ var getDeviceConnect = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3714
3770
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
3715
3771
|
)
|
|
3716
3772
|
);
|
|
3773
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
3774
|
+
var triggerDeviceUpdate = (0, import_toolkit19.createAsyncThunk)(
|
|
3775
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
3776
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
3777
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
3778
|
+
)
|
|
3779
|
+
);
|
|
3717
3780
|
var getSessionDetails = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
3718
3781
|
const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
|
|
3719
3782
|
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
@@ -3816,12 +3879,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3816
3879
|
);
|
|
3817
3880
|
var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3818
3881
|
`${sliceName3}/preauthDevice`,
|
|
3819
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
3882
|
+
(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) => {
|
|
3820
3883
|
if (err.response.status === 409) {
|
|
3821
|
-
return
|
|
3884
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3822
3885
|
}
|
|
3823
3886
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3824
|
-
})
|
|
3887
|
+
})
|
|
3825
3888
|
);
|
|
3826
3889
|
var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3827
3890
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4050,18 +4113,20 @@ var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4050
4113
|
|
|
4051
4114
|
// src/onboardingSlice/thunks.ts
|
|
4052
4115
|
var import_helpers10 = require("@northern.tech/utils/helpers");
|
|
4116
|
+
var import_onboardingManager = require("@northern.tech/utils/onboardingManager");
|
|
4117
|
+
var import_tracking2 = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
4053
4118
|
var import_toolkit21 = require("@reduxjs/toolkit");
|
|
4054
4119
|
var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
|
|
4055
4120
|
var cookies3 = new import_universal_cookie3.default();
|
|
4056
4121
|
var applyOnboardingFallbacks = (progress2) => {
|
|
4057
|
-
const step =
|
|
4122
|
+
const step = import_onboardingManager.onboardingSteps[progress2];
|
|
4058
4123
|
if (step && step.fallbackStep) {
|
|
4059
4124
|
return step.fallbackStep;
|
|
4060
4125
|
}
|
|
4061
4126
|
return progress2;
|
|
4062
4127
|
};
|
|
4063
4128
|
var determineProgress = (acceptedDevices, pendingDevices, releases, pastDeployments) => {
|
|
4064
|
-
const steps =
|
|
4129
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4065
4130
|
let progress2 = -1;
|
|
4066
4131
|
progress2 = pendingDevices.length > 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_PENDING_ACCEPTING_ONBOARDING) : progress2;
|
|
4067
4132
|
progress2 = acceptedDevices.length >= 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_ACCEPTED_ONBOARDING) : progress2;
|
|
@@ -4078,7 +4143,7 @@ var deductOnboardingState = ({ devicesById, devicesByStatus, onboardingState, pa
|
|
|
4078
4143
|
const progress2 = applyOnboardingFallbacks(onboardingState.progress || determineProgress(acceptedDevices, pendingDevices, releases, pastDeployments));
|
|
4079
4144
|
return {
|
|
4080
4145
|
...onboardingState,
|
|
4081
|
-
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 ||
|
|
4146
|
+
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)),
|
|
4082
4147
|
showTips: onboardingState.showTips != null ? onboardingState.showTips : true,
|
|
4083
4148
|
deviceType,
|
|
4084
4149
|
approach: onboardingState.approach || (deviceType.some((type) => type.startsWith("qemu")) ? "virtual" : "physical"),
|
|
@@ -4131,10 +4196,10 @@ var setOnboardingCanceled = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4131
4196
|
Promise.resolve(dispatch(actions5.setShowOnboardingHelp(false))),
|
|
4132
4197
|
Promise.resolve(dispatch(actions5.setShowDismissOnboardingTipsDialog(false))),
|
|
4133
4198
|
Promise.resolve(dispatch(actions5.setOnboardingComplete(true)))
|
|
4134
|
-
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE)))
|
|
4199
|
+
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE))).then(() => import_tracking2.default.event({ category: "onboarding", action: import_onboardingManager.onboardingSteps.ONBOARDING_CANCELED }))
|
|
4135
4200
|
);
|
|
4136
4201
|
var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/advanceOnboarding`, (stepId, { dispatch, getState }) => {
|
|
4137
|
-
const steps =
|
|
4202
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4138
4203
|
const progress2 = steps.findIndex((step) => step === getState().onboarding.progress);
|
|
4139
4204
|
const stepIndex = steps.findIndex((step) => step === stepId);
|
|
4140
4205
|
if (progress2 > stepIndex || getState().onboarding.progress === null) {
|
|
@@ -4142,7 +4207,8 @@ var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/ad
|
|
|
4142
4207
|
}
|
|
4143
4208
|
const madeProgress = steps[stepIndex + 1];
|
|
4144
4209
|
const state = { ...getOnboardingState(getState()), progress: madeProgress };
|
|
4145
|
-
state.complete = stepIndex + 1 >=
|
|
4210
|
+
state.complete = stepIndex + 1 >= Object.keys(import_onboardingManager.onboardingSteps).findIndex((step) => step === onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE) ? true : state.complete;
|
|
4211
|
+
import_tracking2.default.event({ category: "onboarding", action: stepId });
|
|
4146
4212
|
return Promise.all([dispatch(actions5.setOnboardingProgress(madeProgress)), dispatch(saveUserSettings({ onboarding: state }))]);
|
|
4147
4213
|
});
|
|
4148
4214
|
|
|
@@ -4221,7 +4287,7 @@ var startUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4221
4287
|
var cancelUpgrade = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/cancelUpgrade`, (tenantId) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/cancel`));
|
|
4222
4288
|
var completeUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
4223
4289
|
`${sliceName6}/completeUpgrade`,
|
|
4224
|
-
({ 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.
|
|
4290
|
+
({ 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())]))
|
|
4225
4291
|
);
|
|
4226
4292
|
var prepareAuditlogQuery = ({ startDate, endDate, user: userFilter, type, detail: detailFilter, sort = {} }) => {
|
|
4227
4293
|
const userId = userFilter?.id || userFilter;
|
|
@@ -4270,7 +4336,12 @@ var setAuditlogsState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/se
|
|
|
4270
4336
|
});
|
|
4271
4337
|
var tenantDataDivergedMessage = "The system detected there is a change in your plan or purchased add-ons. Please log out and log in again";
|
|
4272
4338
|
var addTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/createTenant`, (selectionState, { dispatch }) => {
|
|
4273
|
-
return general_api_default.post(`${tenantadmApiUrlv2}/tenants`, selectionState).then(
|
|
4339
|
+
return general_api_default.post(`${tenantadmApiUrlv2}/tenants`, selectionState).then(
|
|
4340
|
+
() => Promise.all([
|
|
4341
|
+
dispatch(setSnackbar4("Tenant was created successfully.")),
|
|
4342
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4343
|
+
])
|
|
4344
|
+
).catch((err) => commonErrorHandler(err, "There was an error creating tenant", dispatch, commonErrorFallback));
|
|
4274
4345
|
});
|
|
4275
4346
|
var tenantListRetrieval = async (config) => {
|
|
4276
4347
|
const { page, perPage } = config;
|
|
@@ -4298,15 +4369,20 @@ var setTenantsListState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/
|
|
|
4298
4369
|
});
|
|
4299
4370
|
var editTenantDeviceLimit = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ newLimit, id, name }, { dispatch }) => {
|
|
4300
4371
|
return general_api_default.put(`${tenantadmApiUrlv2}/tenants/${id}/child`, { device_limit: newLimit, name }).catch((err) => commonErrorHandler(err, `Device Limit cannot be changed`, dispatch)).then(() => {
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4372
|
+
return Promise.all([
|
|
4373
|
+
dispatch(setSnackbar4("Device Limit was changed successfully")),
|
|
4374
|
+
dispatch(getUserOrganization()),
|
|
4375
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4376
|
+
]);
|
|
4305
4377
|
});
|
|
4306
4378
|
});
|
|
4307
4379
|
var removeTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ id }, { dispatch }) => {
|
|
4308
4380
|
return general_api_default.post(`${tenantadmApiUrlv2}/tenants/${id}/remove/start`).catch((err) => commonErrorHandler(err, `There was an error removing the tenant`, dispatch)).then(
|
|
4309
|
-
() => Promise.all([
|
|
4381
|
+
() => Promise.all([
|
|
4382
|
+
dispatch(setSnackbar4("The tenant was removed successfully")),
|
|
4383
|
+
dispatch(getUserOrganization()),
|
|
4384
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4385
|
+
])
|
|
4310
4386
|
);
|
|
4311
4387
|
});
|
|
4312
4388
|
var getUserOrganization = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/getUserOrganization`, (_, { dispatch, getState }) => {
|
|
@@ -4330,7 +4406,10 @@ var sendSupportMessage = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4330
4406
|
);
|
|
4331
4407
|
var requestPlanChange = (0, import_toolkit22.createAsyncThunk)(
|
|
4332
4408
|
`${sliceName6}/requestPlanChange`,
|
|
4333
|
-
({ content, tenantId }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(
|
|
4409
|
+
({ content, tenantId }, { dispatch, rejectWithValue }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(async (err) => {
|
|
4410
|
+
await commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback);
|
|
4411
|
+
rejectWithValue(err);
|
|
4412
|
+
}).then(() => Promise.resolve(dispatch(setSnackbar4({ message: "Your request was sent successfully", autoHideDuration: TIMEOUTS.fiveSeconds }))))
|
|
4334
4413
|
);
|
|
4335
4414
|
var downloadLicenseReport = (0, import_toolkit22.createAsyncThunk)(
|
|
4336
4415
|
`${sliceName6}/downloadLicenseReport`,
|
|
@@ -4588,9 +4667,12 @@ var editArtifact = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4588
4667
|
if (!release || index === -1) {
|
|
4589
4668
|
return dispatch(getReleases());
|
|
4590
4669
|
}
|
|
4591
|
-
|
|
4670
|
+
const updatedRelease = {
|
|
4671
|
+
...release,
|
|
4672
|
+
artifacts: release.artifacts.map((artifact, i) => i === index ? { ...artifact, description: body.description } : artifact)
|
|
4673
|
+
};
|
|
4592
4674
|
return Promise.all([
|
|
4593
|
-
dispatch(actions7.receiveRelease(
|
|
4675
|
+
dispatch(actions7.receiveRelease(updatedRelease)),
|
|
4594
4676
|
dispatch(setSnackbar5("Artifact details were updated successfully.", TIMEOUTS.fiveSeconds, "")),
|
|
4595
4677
|
dispatch(getRelease(release.name)),
|
|
4596
4678
|
dispatch(selectRelease(release.name))
|
|
@@ -4691,16 +4773,15 @@ var getReleases = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getRelea
|
|
|
4691
4773
|
return Promise.all(tasks);
|
|
4692
4774
|
}).catch((err) => commonErrorHandler(err, `Please check your connection`, dispatch));
|
|
4693
4775
|
});
|
|
4694
|
-
var getRelease = (0, import_toolkit23.createAsyncThunk)(
|
|
4695
|
-
`${
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
);
|
|
4776
|
+
var getRelease = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getReleases`, async (name, { dispatch, getState }) => {
|
|
4777
|
+
const releaseResponse = await general_api_default.get(`${deploymentsApiUrlV2}/deployments/releases/${name}`);
|
|
4778
|
+
const { data: release } = releaseResponse;
|
|
4779
|
+
if (release) {
|
|
4780
|
+
const stateRelease = getReleasesById(getState())[release.name] || {};
|
|
4781
|
+
await dispatch(actions7.receiveRelease(flattenRelease(release, stateRelease)));
|
|
4782
|
+
}
|
|
4783
|
+
return Promise.resolve(null);
|
|
4784
|
+
});
|
|
4704
4785
|
var updateReleaseInfo = (0, import_toolkit23.createAsyncThunk)(
|
|
4705
4786
|
`${sliceName7}/updateReleaseInfo`,
|
|
4706
4787
|
({ 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(() => {
|
|
@@ -4728,6 +4809,9 @@ var getUpdateTypes = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4728
4809
|
(_, { 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))))
|
|
4729
4810
|
);
|
|
4730
4811
|
|
|
4812
|
+
// src/usersSlice/thunks.ts
|
|
4813
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
4814
|
+
|
|
4731
4815
|
// src/api/users-api.ts
|
|
4732
4816
|
var import_axios4 = __toESM(require("axios"), 1);
|
|
4733
4817
|
var Api2 = {
|
|
@@ -4761,7 +4845,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
4761
4845
|
}
|
|
4762
4846
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
4763
4847
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
4764
|
-
return Promise.reject(dispatch(setSnackbar6((0, import_helpers13.preformatWithRequestID)(err.response, errorMessage),
|
|
4848
|
+
return Promise.reject(dispatch(setSnackbar6({ message: (0, import_helpers13.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
4765
4849
|
};
|
|
4766
4850
|
var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4767
4851
|
`${sliceName8}/loginUser`,
|
|
@@ -4785,19 +4869,16 @@ var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4785
4869
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
4786
4870
|
setSessionInfo({ token, expiresAt });
|
|
4787
4871
|
cookies5.remove("JWT", { path: "/" });
|
|
4788
|
-
return (
|
|
4789
|
-
|
|
4790
|
-
Promise.
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
window.
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4799
|
-
})
|
|
4800
|
-
);
|
|
4872
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
4873
|
+
cleanUp();
|
|
4874
|
+
return Promise.reject(dispatch(setSnackbar6((0, import_helpers13.extractErrorMessage)(e))));
|
|
4875
|
+
}).then(() => {
|
|
4876
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
4877
|
+
if (window.location.pathname !== "/ui/") {
|
|
4878
|
+
window.location.replace("/ui/");
|
|
4879
|
+
}
|
|
4880
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4881
|
+
});
|
|
4801
4882
|
})
|
|
4802
4883
|
);
|
|
4803
4884
|
var logoutUser = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -4815,6 +4896,7 @@ var switchUserOrganization = (0, import_toolkit24.createAsyncThunk)(`${sliceName
|
|
|
4815
4896
|
return Promise.reject();
|
|
4816
4897
|
}
|
|
4817
4898
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
4899
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
4818
4900
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
4819
4901
|
window.location.reload();
|
|
4820
4902
|
});
|
|
@@ -4855,11 +4937,18 @@ var verify2FA = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4855
4937
|
);
|
|
4856
4938
|
var getUserList = (0, import_toolkit24.createAsyncThunk)(
|
|
4857
4939
|
`${sliceName8}/getUserList`,
|
|
4858
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4859
|
-
const
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4940
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4941
|
+
const currentUsersById = getUsersById(getState());
|
|
4942
|
+
const users = res.data.reduce(
|
|
4943
|
+
(accu, item) => {
|
|
4944
|
+
accu[item.id] = {
|
|
4945
|
+
...accu[item.id],
|
|
4946
|
+
...item
|
|
4947
|
+
};
|
|
4948
|
+
return accu;
|
|
4949
|
+
},
|
|
4950
|
+
{ ...currentUsersById }
|
|
4951
|
+
);
|
|
4863
4952
|
return dispatch(actions8.receivedUserList(users));
|
|
4864
4953
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
4865
4954
|
);
|
|
@@ -4868,9 +4957,7 @@ var getUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4868
4957
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
4869
4958
|
({ data: user }) => Promise.all([
|
|
4870
4959
|
dispatch(actions8.receivedUser(user)),
|
|
4871
|
-
// @ts-ignore
|
|
4872
4960
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
4873
|
-
// @ts-ignore
|
|
4874
4961
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
4875
4962
|
user
|
|
4876
4963
|
])
|
|
@@ -4917,10 +5004,7 @@ var createUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4917
5004
|
);
|
|
4918
5005
|
var removeUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4919
5006
|
`${sliceName8}/removeUser`,
|
|
4920
|
-
(userId, { dispatch }) => (
|
|
4921
|
-
// @ts-ignore
|
|
4922
|
-
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))
|
|
4923
|
-
)
|
|
5007
|
+
(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))
|
|
4924
5008
|
);
|
|
4925
5009
|
var editUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4926
5010
|
`${sliceName8}/editUser`,
|
|
@@ -4941,7 +5025,7 @@ var enableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4941
5025
|
);
|
|
4942
5026
|
var disableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
4943
5027
|
`${sliceName8}/disableUser2fa`,
|
|
4944
|
-
(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.
|
|
5028
|
+
(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))]))
|
|
4945
5029
|
);
|
|
4946
5030
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
4947
5031
|
(accu, [area, definition]) => {
|
|
@@ -5094,7 +5178,6 @@ var getPermissionSets = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5094
5178
|
accu[permissionSet.name] = permissionSetObject;
|
|
5095
5179
|
return accu;
|
|
5096
5180
|
},
|
|
5097
|
-
// @ts-ignore
|
|
5098
5181
|
{ ...getState().users.permissionSetsById }
|
|
5099
5182
|
);
|
|
5100
5183
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -5187,7 +5270,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
5187
5270
|
role: {
|
|
5188
5271
|
...emptyRole,
|
|
5189
5272
|
name,
|
|
5190
|
-
// @ts-ignore
|
|
5191
5273
|
description: description ? description : roleState.description,
|
|
5192
5274
|
uiPermissions: {
|
|
5193
5275
|
...emptyUiPermissions,
|
|
@@ -5230,10 +5312,7 @@ var editRole = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
5230
5312
|
});
|
|
5231
5313
|
var removeRole = (0, import_toolkit24.createAsyncThunk)(
|
|
5232
5314
|
`${sliceName8}/removeRole`,
|
|
5233
|
-
(roleId, { dispatch }) => (
|
|
5234
|
-
// @ts-ignore
|
|
5235
|
-
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))
|
|
5236
|
-
)
|
|
5315
|
+
(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))
|
|
5237
5316
|
);
|
|
5238
5317
|
var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
5239
5318
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -5244,7 +5323,6 @@ var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5244
5323
|
);
|
|
5245
5324
|
var saveGlobalSettings = (0, import_toolkit24.createAsyncThunk)(
|
|
5246
5325
|
`${sliceName8}/saveGlobalSettings`,
|
|
5247
|
-
// @ts-ignore
|
|
5248
5326
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
5249
5327
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
5250
5328
|
return;
|
|
@@ -5290,11 +5368,9 @@ var saveUserSettings = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/sav
|
|
|
5290
5368
|
const tooltipState = getTooltipsState(getState());
|
|
5291
5369
|
const updatedSettings = {
|
|
5292
5370
|
...userSettings,
|
|
5293
|
-
// @ts-ignore
|
|
5294
5371
|
...settings,
|
|
5295
5372
|
onboarding: {
|
|
5296
5373
|
...onboardingState,
|
|
5297
|
-
// @ts-ignore
|
|
5298
5374
|
...settings.onboarding
|
|
5299
5375
|
},
|
|
5300
5376
|
tooltips: tooltipState
|
|
@@ -5338,10 +5414,7 @@ var generateToken = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5338
5414
|
);
|
|
5339
5415
|
var revokeToken = (0, import_toolkit24.createAsyncThunk)(
|
|
5340
5416
|
`${sliceName8}/revokeToken`,
|
|
5341
|
-
(token, { dispatch }) => (
|
|
5342
|
-
// @ts-ignore
|
|
5343
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5344
|
-
)
|
|
5417
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5345
5418
|
);
|
|
5346
5419
|
var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
5347
5420
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -5350,29 +5423,26 @@ var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/
|
|
|
5350
5423
|
}
|
|
5351
5424
|
return Promise.all(tasks);
|
|
5352
5425
|
});
|
|
5353
|
-
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
5354
|
-
const updatedTips =
|
|
5426
|
+
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
5427
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
5355
5428
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
5356
5429
|
});
|
|
5357
5430
|
var submitFeedback = (0, import_toolkit24.createAsyncThunk)(
|
|
5358
5431
|
`${sliceName8}/submitFeedback`,
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5368
|
-
});
|
|
5369
|
-
}
|
|
5432
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
5433
|
+
subject: "feedback submission",
|
|
5434
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
5435
|
+
}).then(() => {
|
|
5436
|
+
const today = /* @__PURE__ */ new Date();
|
|
5437
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
5438
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5439
|
+
})
|
|
5370
5440
|
);
|
|
5371
5441
|
|
|
5372
5442
|
// src/storehooks.ts
|
|
5373
5443
|
var cookies6 = new import_universal_cookie6.default();
|
|
5374
5444
|
import_dayjs.default.extend(import_duration.default);
|
|
5375
|
-
var { setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
|
|
5445
|
+
var { setSnackbar: setSnackbar7, setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
|
|
5376
5446
|
var featureFlags = [
|
|
5377
5447
|
"hasAuditlogs",
|
|
5378
5448
|
"hasMultitenancy",
|
|
@@ -5404,7 +5474,6 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5404
5474
|
metaMenderVersion,
|
|
5405
5475
|
services = {}
|
|
5406
5476
|
} = mender_environment;
|
|
5407
|
-
onboardingComplete = stringToBoolean(features.isEnterprise) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5408
5477
|
demoArtifactPort = port || demoArtifactPort;
|
|
5409
5478
|
environmentData = environmentDatas.reduce((accu, flag) => ({ ...accu, [flag]: mender_environment[flag] || state.app[flag] }), {});
|
|
5410
5479
|
environmentFeatures = {
|
|
@@ -5412,6 +5481,7 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5412
5481
|
isHosted: features.isHosted || window.location.hostname.includes("hosted.mender.io"),
|
|
5413
5482
|
isDemoMode: stringToBoolean(isDemoMode || features.isDemoMode)
|
|
5414
5483
|
};
|
|
5484
|
+
onboardingComplete = !stringToBoolean(features.isHosted) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5415
5485
|
versionInfo = {
|
|
5416
5486
|
docs: isNaN(integrationVersion.charAt(0)) ? "" : integrationVersion.split(".").slice(0, 2).join("."),
|
|
5417
5487
|
remainder: {
|
|
@@ -5440,24 +5510,33 @@ var maybeAddOnboardingTasks = ({ devicesByStatus, dispatch, onboardingState, tas
|
|
|
5440
5510
|
if (!onboardingState.showTips || onboardingState.complete) {
|
|
5441
5511
|
return tasks;
|
|
5442
5512
|
}
|
|
5513
|
+
const welcomeTip = (0, import_onboardingManager2.getOnboardingComponentFor)(onboardingSteps.ONBOARDING_START, {
|
|
5514
|
+
progress: onboardingState.progress,
|
|
5515
|
+
complete: onboardingState.complete,
|
|
5516
|
+
showTips: onboardingState.showTips
|
|
5517
|
+
});
|
|
5518
|
+
if (welcomeTip) {
|
|
5519
|
+
tasks.push(dispatch(setSnackbar7({ message: "open", autoHideDuration: TIMEOUTS.refreshDefault, children: welcomeTip, onClick: () => {
|
|
5520
|
+
}, onClose: true })));
|
|
5521
|
+
}
|
|
5443
5522
|
return devicesByStatus[DEVICE_STATES.accepted].deviceIds.reduce((accu, id) => {
|
|
5444
5523
|
accu.push(dispatch(getDeviceById2(id)));
|
|
5445
5524
|
return accu;
|
|
5446
5525
|
}, tasks);
|
|
5447
5526
|
};
|
|
5448
5527
|
var useAppInit = (userId) => {
|
|
5449
|
-
const dispatch = (0,
|
|
5528
|
+
const dispatch = (0, import_react_redux2.useDispatch)();
|
|
5450
5529
|
const [coreInitDone, setCoreInitDone] = (0, import_react.useState)(false);
|
|
5451
|
-
const isEnterprise = (0,
|
|
5452
|
-
const { hasMultitenancy, isHosted } = (0,
|
|
5453
|
-
const devicesByStatus = (0,
|
|
5454
|
-
const onboardingState = (0,
|
|
5455
|
-
let { columnSelection = [], trackingConsentGiven: hasTrackingEnabled, tooltips = {} } = (0,
|
|
5456
|
-
const { canManageUsers } = (0,
|
|
5457
|
-
const { interval, intervalUnit } = (0,
|
|
5458
|
-
const { id_attribute } = (0,
|
|
5459
|
-
const { identityAttributes } = (0,
|
|
5460
|
-
const isServiceProvider = (0,
|
|
5530
|
+
const isEnterprise = (0, import_react_redux2.useSelector)(getIsEnterprise);
|
|
5531
|
+
const { hasMultitenancy, isHosted } = (0, import_react_redux2.useSelector)(getFeatures);
|
|
5532
|
+
const devicesByStatus = (0, import_react_redux2.useSelector)(getDevicesByStatus);
|
|
5533
|
+
const onboardingState = (0, import_react_redux2.useSelector)(getOnboardingState);
|
|
5534
|
+
let { columnSelection = [], trackingConsentGiven: hasTrackingEnabled, tooltips = {} } = (0, import_react_redux2.useSelector)(getUserSettings);
|
|
5535
|
+
const { canManageUsers } = (0, import_react_redux2.useSelector)(getUserCapabilities);
|
|
5536
|
+
const { interval, intervalUnit } = (0, import_react_redux2.useSelector)(getOfflineThresholdSettings);
|
|
5537
|
+
const { id_attribute } = (0, import_react_redux2.useSelector)(getGlobalSettings);
|
|
5538
|
+
const { identityAttributes } = (0, import_react_redux2.useSelector)(getSortedFilteringAttributes);
|
|
5539
|
+
const isServiceProvider = (0, import_react_redux2.useSelector)(getIsServiceProvider);
|
|
5461
5540
|
const coreInitRunning = (0, import_react.useRef)(false);
|
|
5462
5541
|
const fullInitRunning = (0, import_react.useRef)(false);
|
|
5463
5542
|
const retrieveCoreData = (0, import_react.useCallback)(() => {
|