@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
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,9 +3770,17 @@ 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
|
-
const
|
|
3719
|
-
const
|
|
3781
|
+
const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
|
|
3782
|
+
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
3783
|
+
const createdBefore = endDate ? `&created_before=${endUnix}` : "";
|
|
3720
3784
|
const objectSearch = `&object_id=${deviceId}`;
|
|
3721
3785
|
return general_api_default.get(`${auditLogsApiUrl}/logs?per_page=500${createdAfter}${createdBefore}&actor_id=${userId}${objectSearch}`).then(
|
|
3722
3786
|
({ data: auditLogEntries }) => {
|
|
@@ -3815,12 +3879,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3815
3879
|
);
|
|
3816
3880
|
var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3817
3881
|
`${sliceName3}/preauthDevice`,
|
|
3818
|
-
(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) => {
|
|
3819
3883
|
if (err.response.status === 409) {
|
|
3820
|
-
return
|
|
3884
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3821
3885
|
}
|
|
3822
3886
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3823
|
-
})
|
|
3887
|
+
})
|
|
3824
3888
|
);
|
|
3825
3889
|
var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3826
3890
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4049,18 +4113,20 @@ var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4049
4113
|
|
|
4050
4114
|
// src/onboardingSlice/thunks.ts
|
|
4051
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);
|
|
4052
4118
|
var import_toolkit21 = require("@reduxjs/toolkit");
|
|
4053
4119
|
var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
|
|
4054
4120
|
var cookies3 = new import_universal_cookie3.default();
|
|
4055
4121
|
var applyOnboardingFallbacks = (progress2) => {
|
|
4056
|
-
const step =
|
|
4122
|
+
const step = import_onboardingManager.onboardingSteps[progress2];
|
|
4057
4123
|
if (step && step.fallbackStep) {
|
|
4058
4124
|
return step.fallbackStep;
|
|
4059
4125
|
}
|
|
4060
4126
|
return progress2;
|
|
4061
4127
|
};
|
|
4062
4128
|
var determineProgress = (acceptedDevices, pendingDevices, releases, pastDeployments) => {
|
|
4063
|
-
const steps =
|
|
4129
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4064
4130
|
let progress2 = -1;
|
|
4065
4131
|
progress2 = pendingDevices.length > 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_PENDING_ACCEPTING_ONBOARDING) : progress2;
|
|
4066
4132
|
progress2 = acceptedDevices.length >= 1 ? steps.findIndex((step) => step === onboardingSteps.DEVICES_ACCEPTED_ONBOARDING) : progress2;
|
|
@@ -4077,7 +4143,7 @@ var deductOnboardingState = ({ devicesById, devicesByStatus, onboardingState, pa
|
|
|
4077
4143
|
const progress2 = applyOnboardingFallbacks(onboardingState.progress || determineProgress(acceptedDevices, pendingDevices, releases, pastDeployments));
|
|
4078
4144
|
return {
|
|
4079
4145
|
...onboardingState,
|
|
4080
|
-
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)),
|
|
4081
4147
|
showTips: onboardingState.showTips != null ? onboardingState.showTips : true,
|
|
4082
4148
|
deviceType,
|
|
4083
4149
|
approach: onboardingState.approach || (deviceType.some((type) => type.startsWith("qemu")) ? "virtual" : "physical"),
|
|
@@ -4130,10 +4196,10 @@ var setOnboardingCanceled = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4130
4196
|
Promise.resolve(dispatch(actions5.setShowOnboardingHelp(false))),
|
|
4131
4197
|
Promise.resolve(dispatch(actions5.setShowDismissOnboardingTipsDialog(false))),
|
|
4132
4198
|
Promise.resolve(dispatch(actions5.setOnboardingComplete(true)))
|
|
4133
|
-
]).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 }))
|
|
4134
4200
|
);
|
|
4135
4201
|
var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/advanceOnboarding`, (stepId, { dispatch, getState }) => {
|
|
4136
|
-
const steps =
|
|
4202
|
+
const steps = Object.keys(import_onboardingManager.onboardingSteps);
|
|
4137
4203
|
const progress2 = steps.findIndex((step) => step === getState().onboarding.progress);
|
|
4138
4204
|
const stepIndex = steps.findIndex((step) => step === stepId);
|
|
4139
4205
|
if (progress2 > stepIndex || getState().onboarding.progress === null) {
|
|
@@ -4141,7 +4207,8 @@ var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/ad
|
|
|
4141
4207
|
}
|
|
4142
4208
|
const madeProgress = steps[stepIndex + 1];
|
|
4143
4209
|
const state = { ...getOnboardingState(getState()), progress: madeProgress };
|
|
4144
|
-
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 });
|
|
4145
4212
|
return Promise.all([dispatch(actions5.setOnboardingProgress(madeProgress)), dispatch(saveUserSettings({ onboarding: state }))]);
|
|
4146
4213
|
});
|
|
4147
4214
|
|
|
@@ -4220,13 +4287,14 @@ var startUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4220
4287
|
var cancelUpgrade = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/cancelUpgrade`, (tenantId) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/cancel`));
|
|
4221
4288
|
var completeUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
4222
4289
|
`${sliceName6}/completeUpgrade`,
|
|
4223
|
-
({ 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())]))
|
|
4224
4291
|
);
|
|
4225
4292
|
var prepareAuditlogQuery = ({ startDate, endDate, user: userFilter, type, detail: detailFilter, sort = {} }) => {
|
|
4226
4293
|
const userId = userFilter?.id || userFilter;
|
|
4227
4294
|
const detail = detailFilter?.id || detailFilter;
|
|
4228
|
-
const
|
|
4229
|
-
const
|
|
4295
|
+
const { start: startUnix, end: endUnix } = (0, import_helpers11.dateRangeToUnix)(startDate, endDate);
|
|
4296
|
+
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
4297
|
+
const createdBefore = endDate ? `&created_before=${endUnix}` : "";
|
|
4230
4298
|
const typeSearch = type ? `&object_type=${type.value}`.toLowerCase() : "";
|
|
4231
4299
|
const userSearch = userId ? `&actor_id=${userId}` : "";
|
|
4232
4300
|
const objectSearch = type && detail ? `&${type.queryParameter}=${encodeURIComponent(detail)}` : "";
|
|
@@ -4268,7 +4336,12 @@ var setAuditlogsState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/se
|
|
|
4268
4336
|
});
|
|
4269
4337
|
var tenantDataDivergedMessage = "The system detected there is a change in your plan or purchased add-ons. Please log out and log in again";
|
|
4270
4338
|
var addTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/createTenant`, (selectionState, { dispatch }) => {
|
|
4271
|
-
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));
|
|
4272
4345
|
});
|
|
4273
4346
|
var tenantListRetrieval = async (config) => {
|
|
4274
4347
|
const { page, perPage } = config;
|
|
@@ -4296,15 +4369,20 @@ var setTenantsListState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/
|
|
|
4296
4369
|
});
|
|
4297
4370
|
var editTenantDeviceLimit = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ newLimit, id, name }, { dispatch }) => {
|
|
4298
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(() => {
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
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
|
+
]);
|
|
4303
4377
|
});
|
|
4304
4378
|
});
|
|
4305
4379
|
var removeTenant = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/editDeviceLimit`, ({ id }, { dispatch }) => {
|
|
4306
4380
|
return general_api_default.post(`${tenantadmApiUrlv2}/tenants/${id}/remove/start`).catch((err) => commonErrorHandler(err, `There was an error removing the tenant`, dispatch)).then(
|
|
4307
|
-
() => 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
|
+
])
|
|
4308
4386
|
);
|
|
4309
4387
|
});
|
|
4310
4388
|
var getUserOrganization = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/getUserOrganization`, (_, { dispatch, getState }) => {
|
|
@@ -4328,7 +4406,10 @@ var sendSupportMessage = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4328
4406
|
);
|
|
4329
4407
|
var requestPlanChange = (0, import_toolkit22.createAsyncThunk)(
|
|
4330
4408
|
`${sliceName6}/requestPlanChange`,
|
|
4331
|
-
({ 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 }))))
|
|
4332
4413
|
);
|
|
4333
4414
|
var downloadLicenseReport = (0, import_toolkit22.createAsyncThunk)(
|
|
4334
4415
|
`${sliceName6}/downloadLicenseReport`,
|
|
@@ -4586,9 +4667,12 @@ var editArtifact = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4586
4667
|
if (!release || index === -1) {
|
|
4587
4668
|
return dispatch(getReleases());
|
|
4588
4669
|
}
|
|
4589
|
-
|
|
4670
|
+
const updatedRelease = {
|
|
4671
|
+
...release,
|
|
4672
|
+
artifacts: release.artifacts.map((artifact, i) => i === index ? { ...artifact, description: body.description } : artifact)
|
|
4673
|
+
};
|
|
4590
4674
|
return Promise.all([
|
|
4591
|
-
dispatch(actions7.receiveRelease(
|
|
4675
|
+
dispatch(actions7.receiveRelease(updatedRelease)),
|
|
4592
4676
|
dispatch(setSnackbar5("Artifact details were updated successfully.", TIMEOUTS.fiveSeconds, "")),
|
|
4593
4677
|
dispatch(getRelease(release.name)),
|
|
4594
4678
|
dispatch(selectRelease(release.name))
|
|
@@ -4689,16 +4773,15 @@ var getReleases = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getRelea
|
|
|
4689
4773
|
return Promise.all(tasks);
|
|
4690
4774
|
}).catch((err) => commonErrorHandler(err, `Please check your connection`, dispatch));
|
|
4691
4775
|
});
|
|
4692
|
-
var getRelease = (0, import_toolkit23.createAsyncThunk)(
|
|
4693
|
-
`${
|
|
4694
|
-
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
);
|
|
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
|
+
});
|
|
4702
4785
|
var updateReleaseInfo = (0, import_toolkit23.createAsyncThunk)(
|
|
4703
4786
|
`${sliceName7}/updateReleaseInfo`,
|
|
4704
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(() => {
|
|
@@ -4726,6 +4809,9 @@ var getUpdateTypes = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4726
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))))
|
|
4727
4810
|
);
|
|
4728
4811
|
|
|
4812
|
+
// src/usersSlice/thunks.ts
|
|
4813
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
4814
|
+
|
|
4729
4815
|
// src/api/users-api.ts
|
|
4730
4816
|
var import_axios4 = __toESM(require("axios"), 1);
|
|
4731
4817
|
var Api2 = {
|
|
@@ -4759,7 +4845,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
4759
4845
|
}
|
|
4760
4846
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
4761
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.`;
|
|
4762
|
-
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" })));
|
|
4763
4849
|
};
|
|
4764
4850
|
var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4765
4851
|
`${sliceName8}/loginUser`,
|
|
@@ -4783,19 +4869,16 @@ var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4783
4869
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
4784
4870
|
setSessionInfo({ token, expiresAt });
|
|
4785
4871
|
cookies5.remove("JWT", { path: "/" });
|
|
4786
|
-
return (
|
|
4787
|
-
|
|
4788
|
-
Promise.
|
|
4789
|
-
|
|
4790
|
-
|
|
4791
|
-
|
|
4792
|
-
window.
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4797
|
-
})
|
|
4798
|
-
);
|
|
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
|
+
});
|
|
4799
4882
|
})
|
|
4800
4883
|
);
|
|
4801
4884
|
var logoutUser = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -4813,6 +4896,7 @@ var switchUserOrganization = (0, import_toolkit24.createAsyncThunk)(`${sliceName
|
|
|
4813
4896
|
return Promise.reject();
|
|
4814
4897
|
}
|
|
4815
4898
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
4899
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
4816
4900
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
4817
4901
|
window.location.reload();
|
|
4818
4902
|
});
|
|
@@ -4853,11 +4937,18 @@ var verify2FA = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4853
4937
|
);
|
|
4854
4938
|
var getUserList = (0, import_toolkit24.createAsyncThunk)(
|
|
4855
4939
|
`${sliceName8}/getUserList`,
|
|
4856
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4857
|
-
const
|
|
4858
|
-
|
|
4859
|
-
|
|
4860
|
-
|
|
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
|
+
);
|
|
4861
4952
|
return dispatch(actions8.receivedUserList(users));
|
|
4862
4953
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
4863
4954
|
);
|
|
@@ -4866,9 +4957,7 @@ var getUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4866
4957
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
4867
4958
|
({ data: user }) => Promise.all([
|
|
4868
4959
|
dispatch(actions8.receivedUser(user)),
|
|
4869
|
-
// @ts-ignore
|
|
4870
4960
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
4871
|
-
// @ts-ignore
|
|
4872
4961
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
4873
4962
|
user
|
|
4874
4963
|
])
|
|
@@ -4915,10 +5004,7 @@ var createUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4915
5004
|
);
|
|
4916
5005
|
var removeUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4917
5006
|
`${sliceName8}/removeUser`,
|
|
4918
|
-
(userId, { dispatch }) => (
|
|
4919
|
-
// @ts-ignore
|
|
4920
|
-
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))
|
|
4921
|
-
)
|
|
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))
|
|
4922
5008
|
);
|
|
4923
5009
|
var editUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4924
5010
|
`${sliceName8}/editUser`,
|
|
@@ -4939,7 +5025,7 @@ var enableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4939
5025
|
);
|
|
4940
5026
|
var disableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
4941
5027
|
`${sliceName8}/disableUser2fa`,
|
|
4942
|
-
(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))]))
|
|
4943
5029
|
);
|
|
4944
5030
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
4945
5031
|
(accu, [area, definition]) => {
|
|
@@ -5092,7 +5178,6 @@ var getPermissionSets = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5092
5178
|
accu[permissionSet.name] = permissionSetObject;
|
|
5093
5179
|
return accu;
|
|
5094
5180
|
},
|
|
5095
|
-
// @ts-ignore
|
|
5096
5181
|
{ ...getState().users.permissionSetsById }
|
|
5097
5182
|
);
|
|
5098
5183
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -5185,7 +5270,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
5185
5270
|
role: {
|
|
5186
5271
|
...emptyRole,
|
|
5187
5272
|
name,
|
|
5188
|
-
// @ts-ignore
|
|
5189
5273
|
description: description ? description : roleState.description,
|
|
5190
5274
|
uiPermissions: {
|
|
5191
5275
|
...emptyUiPermissions,
|
|
@@ -5228,10 +5312,7 @@ var editRole = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
5228
5312
|
});
|
|
5229
5313
|
var removeRole = (0, import_toolkit24.createAsyncThunk)(
|
|
5230
5314
|
`${sliceName8}/removeRole`,
|
|
5231
|
-
(roleId, { dispatch }) => (
|
|
5232
|
-
// @ts-ignore
|
|
5233
|
-
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))
|
|
5234
|
-
)
|
|
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))
|
|
5235
5316
|
);
|
|
5236
5317
|
var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
5237
5318
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -5242,7 +5323,6 @@ var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5242
5323
|
);
|
|
5243
5324
|
var saveGlobalSettings = (0, import_toolkit24.createAsyncThunk)(
|
|
5244
5325
|
`${sliceName8}/saveGlobalSettings`,
|
|
5245
|
-
// @ts-ignore
|
|
5246
5326
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
5247
5327
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
5248
5328
|
return;
|
|
@@ -5288,11 +5368,9 @@ var saveUserSettings = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/sav
|
|
|
5288
5368
|
const tooltipState = getTooltipsState(getState());
|
|
5289
5369
|
const updatedSettings = {
|
|
5290
5370
|
...userSettings,
|
|
5291
|
-
// @ts-ignore
|
|
5292
5371
|
...settings,
|
|
5293
5372
|
onboarding: {
|
|
5294
5373
|
...onboardingState,
|
|
5295
|
-
// @ts-ignore
|
|
5296
5374
|
...settings.onboarding
|
|
5297
5375
|
},
|
|
5298
5376
|
tooltips: tooltipState
|
|
@@ -5336,10 +5414,7 @@ var generateToken = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5336
5414
|
);
|
|
5337
5415
|
var revokeToken = (0, import_toolkit24.createAsyncThunk)(
|
|
5338
5416
|
`${sliceName8}/revokeToken`,
|
|
5339
|
-
(token, { dispatch }) => (
|
|
5340
|
-
// @ts-ignore
|
|
5341
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5342
|
-
)
|
|
5417
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5343
5418
|
);
|
|
5344
5419
|
var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
5345
5420
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -5348,29 +5423,26 @@ var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/
|
|
|
5348
5423
|
}
|
|
5349
5424
|
return Promise.all(tasks);
|
|
5350
5425
|
});
|
|
5351
|
-
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
5352
|
-
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 } }), {});
|
|
5353
5428
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
5354
5429
|
});
|
|
5355
5430
|
var submitFeedback = (0, import_toolkit24.createAsyncThunk)(
|
|
5356
5431
|
`${sliceName8}/submitFeedback`,
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5365
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5366
|
-
});
|
|
5367
|
-
}
|
|
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
|
+
})
|
|
5368
5440
|
);
|
|
5369
5441
|
|
|
5370
5442
|
// src/storehooks.ts
|
|
5371
5443
|
var cookies6 = new import_universal_cookie6.default();
|
|
5372
5444
|
import_dayjs.default.extend(import_duration.default);
|
|
5373
|
-
var { setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
|
|
5445
|
+
var { setSnackbar: setSnackbar7, setDeviceListState: setDeviceListState2, setFirstLoginAfterSignup: setFirstLoginAfterSignup2, setTooltipsState, setShowStartupNotification } = actions_default;
|
|
5374
5446
|
var featureFlags = [
|
|
5375
5447
|
"hasAuditlogs",
|
|
5376
5448
|
"hasMultitenancy",
|
|
@@ -5402,7 +5474,6 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5402
5474
|
metaMenderVersion,
|
|
5403
5475
|
services = {}
|
|
5404
5476
|
} = mender_environment;
|
|
5405
|
-
onboardingComplete = stringToBoolean(features.isEnterprise) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5406
5477
|
demoArtifactPort = port || demoArtifactPort;
|
|
5407
5478
|
environmentData = environmentDatas.reduce((accu, flag) => ({ ...accu, [flag]: mender_environment[flag] || state.app[flag] }), {});
|
|
5408
5479
|
environmentFeatures = {
|
|
@@ -5410,6 +5481,7 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5410
5481
|
isHosted: features.isHosted || window.location.hostname.includes("hosted.mender.io"),
|
|
5411
5482
|
isDemoMode: stringToBoolean(isDemoMode || features.isDemoMode)
|
|
5412
5483
|
};
|
|
5484
|
+
onboardingComplete = !stringToBoolean(features.isHosted) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5413
5485
|
versionInfo = {
|
|
5414
5486
|
docs: isNaN(integrationVersion.charAt(0)) ? "" : integrationVersion.split(".").slice(0, 2).join("."),
|
|
5415
5487
|
remainder: {
|
|
@@ -5438,24 +5510,33 @@ var maybeAddOnboardingTasks = ({ devicesByStatus, dispatch, onboardingState, tas
|
|
|
5438
5510
|
if (!onboardingState.showTips || onboardingState.complete) {
|
|
5439
5511
|
return tasks;
|
|
5440
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
|
+
}
|
|
5441
5522
|
return devicesByStatus[DEVICE_STATES.accepted].deviceIds.reduce((accu, id) => {
|
|
5442
5523
|
accu.push(dispatch(getDeviceById2(id)));
|
|
5443
5524
|
return accu;
|
|
5444
5525
|
}, tasks);
|
|
5445
5526
|
};
|
|
5446
5527
|
var useAppInit = (userId) => {
|
|
5447
|
-
const dispatch = (0,
|
|
5528
|
+
const dispatch = (0, import_react_redux2.useDispatch)();
|
|
5448
5529
|
const [coreInitDone, setCoreInitDone] = (0, import_react.useState)(false);
|
|
5449
|
-
const isEnterprise = (0,
|
|
5450
|
-
const { hasMultitenancy, isHosted } = (0,
|
|
5451
|
-
const devicesByStatus = (0,
|
|
5452
|
-
const onboardingState = (0,
|
|
5453
|
-
let { columnSelection = [], trackingConsentGiven: hasTrackingEnabled, tooltips = {} } = (0,
|
|
5454
|
-
const { canManageUsers } = (0,
|
|
5455
|
-
const { interval, intervalUnit } = (0,
|
|
5456
|
-
const { id_attribute } = (0,
|
|
5457
|
-
const { identityAttributes } = (0,
|
|
5458
|
-
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);
|
|
5459
5540
|
const coreInitRunning = (0, import_react.useRef)(false);
|
|
5460
5541
|
const fullInitRunning = (0, import_react.useRef)(false);
|
|
5461
5542
|
const retrieveCoreData = (0, import_react.useCallback)(() => {
|