@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
|
@@ -76,6 +76,7 @@ __export(thunks_exports, {
|
|
|
76
76
|
setDeviceListState: () => setDeviceListState,
|
|
77
77
|
setDeviceTags: () => setDeviceTags,
|
|
78
78
|
setDeviceTwin: () => setDeviceTwin,
|
|
79
|
+
triggerDeviceUpdate: () => triggerDeviceUpdate,
|
|
79
80
|
updateDeviceAuth: () => updateDeviceAuth,
|
|
80
81
|
updateDevicesAuth: () => updateDevicesAuth,
|
|
81
82
|
updateDynamicGroup: () => updateDynamicGroup
|
|
@@ -111,28 +112,28 @@ var PLANS = {
|
|
|
111
112
|
id: "os",
|
|
112
113
|
name: "Basic",
|
|
113
114
|
offer: true,
|
|
114
|
-
price: "$32/month",
|
|
115
|
+
price: "$32 / month",
|
|
115
116
|
deviceCount: startingDeviceCount.os,
|
|
116
|
-
offerprice: "$23/month for first 50 devices",
|
|
117
|
+
offerprice: "$23 / month for first 50 devices",
|
|
117
118
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
118
|
-
features: ["
|
|
119
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
119
120
|
},
|
|
120
121
|
professional: {
|
|
121
122
|
id: "professional",
|
|
122
123
|
name: "Professional",
|
|
123
124
|
offer: true,
|
|
124
|
-
price: "$269/month",
|
|
125
|
+
price: "$269 / month",
|
|
125
126
|
deviceCount: startingDeviceCount.professional,
|
|
126
|
-
offerprice: "$200/month for first 50 devices",
|
|
127
|
+
offerprice: "$200 / month for first 50 devices",
|
|
127
128
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
128
|
-
features: ["
|
|
129
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
129
130
|
},
|
|
130
131
|
enterprise: {
|
|
131
132
|
id: "enterprise",
|
|
132
133
|
name: "Enterprise",
|
|
133
134
|
price: "Custom pricing",
|
|
134
|
-
deviceCount: "
|
|
135
|
-
features: ["
|
|
135
|
+
deviceCount: "Unlimited devices",
|
|
136
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
136
137
|
}
|
|
137
138
|
};
|
|
138
139
|
var ADDONS = {
|
|
@@ -603,6 +604,7 @@ var DEVICE_STATES = {
|
|
|
603
604
|
rejected: "rejected"
|
|
604
605
|
};
|
|
605
606
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
607
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
606
608
|
|
|
607
609
|
// src/monitorSlice/constants.ts
|
|
608
610
|
var alertChannels = { email: "email" };
|
|
@@ -684,13 +686,16 @@ var SSO_TYPES = {
|
|
|
684
686
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
685
687
|
}
|
|
686
688
|
};
|
|
687
|
-
var
|
|
688
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
689
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
690
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
691
|
-
{ title: "
|
|
692
|
-
|
|
693
|
-
|
|
689
|
+
var auditlogTypes = {
|
|
690
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
691
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
692
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
693
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
694
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
695
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
696
|
+
};
|
|
697
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
698
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
694
699
|
var emptyWebhook = {
|
|
695
700
|
description: "",
|
|
696
701
|
enabled: true,
|
|
@@ -823,7 +828,7 @@ var uiPermissionsByArea = {
|
|
|
823
828
|
explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
|
|
824
829
|
key: "auditlog",
|
|
825
830
|
uiPermissions: [uiPermissionsById.read],
|
|
826
|
-
title: "System
|
|
831
|
+
title: "System Audit Log"
|
|
827
832
|
},
|
|
828
833
|
deployments: {
|
|
829
834
|
endpoints: [
|
|
@@ -974,7 +979,7 @@ var serviceProviderRolesById = {
|
|
|
974
979
|
},
|
|
975
980
|
readOnly: {
|
|
976
981
|
name: "Read access",
|
|
977
|
-
value: staticRolesByName.
|
|
982
|
+
value: staticRolesByName.readOnly,
|
|
978
983
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
979
984
|
permissions: [],
|
|
980
985
|
uiPermissions: {
|
|
@@ -2179,7 +2184,7 @@ var getGroups = (0, import_toolkit11.createSelector)([getGroupsById], (groupsByI
|
|
|
2179
2184
|
(accu, [groupname, group]) => {
|
|
2180
2185
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
2181
2186
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
2182
|
-
if (group.filters
|
|
2187
|
+
if (group.filters?.length > 0) {
|
|
2183
2188
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
2184
2189
|
accu.dynamic.push(groupItem);
|
|
2185
2190
|
} else {
|
|
@@ -2252,14 +2257,15 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
|
|
|
2252
2257
|
// src/utils.ts
|
|
2253
2258
|
var import_helpers4 = require("@northern.tech/utils/helpers");
|
|
2254
2259
|
var filterProcessors = {
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2260
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
2261
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
2262
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
2263
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
2264
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
2265
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2266
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2267
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers4.yes,
|
|
2268
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
2263
2269
|
};
|
|
2264
2270
|
var filterAliases = {
|
|
2265
2271
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -2383,8 +2389,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
2383
2389
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
2384
2390
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
2385
2391
|
var getUsersById = (state) => state.users.byId;
|
|
2392
|
+
var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
2386
2393
|
var getCurrentUser = (0, import_toolkit14.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
2387
2394
|
var getUserSettings = (state) => state.users.userSettings;
|
|
2395
|
+
var getSelectedDeviceAttribute = (0, import_toolkit14.createSelector)(
|
|
2396
|
+
[getUserSettings],
|
|
2397
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
2398
|
+
);
|
|
2388
2399
|
var getIsDarkMode = (0, import_toolkit14.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
2389
2400
|
var getShowHelptips = (0, import_toolkit14.createSelector)(
|
|
2390
2401
|
[getTooltipsById],
|
|
@@ -2409,7 +2420,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
|
|
|
2409
2420
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
2410
2421
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
2411
2422
|
}));
|
|
2412
|
-
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
2423
|
+
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
2413
2424
|
|
|
2414
2425
|
// src/commonSelectors.ts
|
|
2415
2426
|
var getIsEnterprise = (0, import_toolkit15.createSelector)(
|
|
@@ -2470,12 +2481,18 @@ var getUserCapabilities = (0, import_toolkit15.createSelector)([getUserRoles, ge
|
|
|
2470
2481
|
});
|
|
2471
2482
|
var getTenantCapabilities = (0, import_toolkit15.createSelector)(
|
|
2472
2483
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
2473
|
-
({
|
|
2484
|
+
({
|
|
2485
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
2486
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
2487
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
2488
|
+
hasMonitor: isMonitorEnabled,
|
|
2489
|
+
isHosted
|
|
2490
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
2474
2491
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
2475
2492
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
2476
|
-
const hasDeviceConfig =
|
|
2477
|
-
const hasDeviceConnect =
|
|
2478
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
2493
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
2494
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
2495
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
2479
2496
|
return {
|
|
2480
2497
|
canDelta,
|
|
2481
2498
|
canRetry: canDelta,
|
|
@@ -2605,7 +2622,7 @@ var getAuditlogDevice = (0, import_toolkit15.createSelector)([getAuditLogEntry,
|
|
|
2605
2622
|
var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
2606
2623
|
if (service_provider) {
|
|
2607
2624
|
return roles.reduce((accu, role) => {
|
|
2608
|
-
if (rolesById[role.
|
|
2625
|
+
if (rolesById[role.value]) {
|
|
2609
2626
|
return accu;
|
|
2610
2627
|
}
|
|
2611
2628
|
accu.push(role);
|
|
@@ -2613,20 +2630,19 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
|
|
|
2613
2630
|
}, Object.values(serviceProviderRolesById));
|
|
2614
2631
|
}
|
|
2615
2632
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
2616
|
-
const index = accu.findIndex(({
|
|
2633
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
2617
2634
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
2618
2635
|
return accu;
|
|
2619
2636
|
}, roles);
|
|
2620
2637
|
});
|
|
2621
2638
|
|
|
2622
2639
|
// src/store.ts
|
|
2640
|
+
var import_react_redux = require("react-redux");
|
|
2623
2641
|
var import_helpers6 = require("@northern.tech/utils/helpers");
|
|
2624
2642
|
var import_toolkit16 = require("@reduxjs/toolkit");
|
|
2625
2643
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2626
2644
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2627
|
-
var resetEnvironment = () =>
|
|
2628
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2629
|
-
};
|
|
2645
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2630
2646
|
resetEnvironment();
|
|
2631
2647
|
var commonErrorFallback = "Please check your connection.";
|
|
2632
2648
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2652,6 +2668,14 @@ var sessionReducer = (state, action) => {
|
|
|
2652
2668
|
}
|
|
2653
2669
|
return rootReducer(state, action);
|
|
2654
2670
|
};
|
|
2671
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2672
|
+
if (action.type.endsWith("/rejected")) {
|
|
2673
|
+
const { error } = action;
|
|
2674
|
+
console.error("Rejection in action:", action);
|
|
2675
|
+
console.error(error.stack);
|
|
2676
|
+
}
|
|
2677
|
+
return next(action);
|
|
2678
|
+
};
|
|
2655
2679
|
var getConfiguredStore = (options = {}) => {
|
|
2656
2680
|
const { preloadedState = {}, ...config } = options;
|
|
2657
2681
|
return (0, import_toolkit16.configureStore)({
|
|
@@ -2667,7 +2691,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2667
2691
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2668
2692
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2669
2693
|
}
|
|
2670
|
-
})
|
|
2694
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2671
2695
|
});
|
|
2672
2696
|
};
|
|
2673
2697
|
var store = getConfiguredStore({
|
|
@@ -2784,6 +2808,7 @@ var setSearchState = (0, import_toolkit17.createAsyncThunk)(`${sliceName}/setSea
|
|
|
2784
2808
|
|
|
2785
2809
|
// src/deploymentsSlice/thunks.ts
|
|
2786
2810
|
var import_helpers8 = require("@northern.tech/utils/helpers");
|
|
2811
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
2787
2812
|
var import_toolkit18 = require("@reduxjs/toolkit");
|
|
2788
2813
|
var import_validator = require("validator");
|
|
2789
2814
|
var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
|
|
@@ -2840,6 +2865,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
|
|
|
2840
2865
|
return Promise.all(tasks);
|
|
2841
2866
|
});
|
|
2842
2867
|
});
|
|
2868
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
2869
|
+
if (!expirationDate) {
|
|
2870
|
+
return false;
|
|
2871
|
+
}
|
|
2872
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
2873
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
2874
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
2875
|
+
};
|
|
2876
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
2877
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
2878
|
+
if (!totalDeploymentCount) {
|
|
2879
|
+
if (!hasDeployments) {
|
|
2880
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
2881
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
2882
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
2883
|
+
}
|
|
2884
|
+
}
|
|
2885
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
2886
|
+
}
|
|
2887
|
+
};
|
|
2843
2888
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
2844
2889
|
var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
2845
2890
|
let request;
|
|
@@ -2850,6 +2895,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2850
2895
|
} else {
|
|
2851
2896
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
2852
2897
|
}
|
|
2898
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
2899
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
2900
|
+
const { trial_expiration } = getOrganization(getState());
|
|
2853
2901
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
2854
2902
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
2855
2903
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -2864,6 +2912,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2864
2912
|
dispatch(getSingleDeployment(deploymentId)),
|
|
2865
2913
|
dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
2866
2914
|
];
|
|
2915
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
2867
2916
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
2868
2917
|
if (canManageUsers) {
|
|
2869
2918
|
const { phases, retries } = newDeployment;
|
|
@@ -3164,6 +3213,9 @@ var changeNotificationSetting = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3164
3213
|
}
|
|
3165
3214
|
);
|
|
3166
3215
|
|
|
3216
|
+
// src/usersSlice/thunks.ts
|
|
3217
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
3218
|
+
|
|
3167
3219
|
// src/api/users-api.ts
|
|
3168
3220
|
var import_axios2 = __toESM(require("axios"), 1);
|
|
3169
3221
|
var Api2 = {
|
|
@@ -3197,7 +3249,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
3197
3249
|
}
|
|
3198
3250
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
3199
3251
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
3200
|
-
return Promise.reject(dispatch(setSnackbar3((0, import_helpers9.preformatWithRequestID)(err.response, errorMessage),
|
|
3252
|
+
return Promise.reject(dispatch(setSnackbar3({ message: (0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
3201
3253
|
};
|
|
3202
3254
|
var loginUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3203
3255
|
`${sliceName8}/loginUser`,
|
|
@@ -3221,19 +3273,16 @@ var loginUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3221
3273
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
3222
3274
|
setSessionInfo({ token, expiresAt });
|
|
3223
3275
|
cookies3.remove("JWT", { path: "/" });
|
|
3224
|
-
return (
|
|
3225
|
-
|
|
3226
|
-
Promise.
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
window.
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
3235
|
-
})
|
|
3236
|
-
);
|
|
3276
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
3277
|
+
cleanUp();
|
|
3278
|
+
return Promise.reject(dispatch(setSnackbar3((0, import_helpers9.extractErrorMessage)(e))));
|
|
3279
|
+
}).then(() => {
|
|
3280
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
3281
|
+
if (window.location.pathname !== "/ui/") {
|
|
3282
|
+
window.location.replace("/ui/");
|
|
3283
|
+
}
|
|
3284
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
3285
|
+
});
|
|
3237
3286
|
})
|
|
3238
3287
|
);
|
|
3239
3288
|
var logoutUser = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -3251,6 +3300,7 @@ var switchUserOrganization = (0, import_toolkit20.createAsyncThunk)(`${sliceName
|
|
|
3251
3300
|
return Promise.reject();
|
|
3252
3301
|
}
|
|
3253
3302
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
3303
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
3254
3304
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
3255
3305
|
window.location.reload();
|
|
3256
3306
|
});
|
|
@@ -3291,11 +3341,18 @@ var verify2FA = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3291
3341
|
);
|
|
3292
3342
|
var getUserList = (0, import_toolkit20.createAsyncThunk)(
|
|
3293
3343
|
`${sliceName8}/getUserList`,
|
|
3294
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
3295
|
-
const
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3344
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
3345
|
+
const currentUsersById = getUsersById(getState());
|
|
3346
|
+
const users = res.data.reduce(
|
|
3347
|
+
(accu, item) => {
|
|
3348
|
+
accu[item.id] = {
|
|
3349
|
+
...accu[item.id],
|
|
3350
|
+
...item
|
|
3351
|
+
};
|
|
3352
|
+
return accu;
|
|
3353
|
+
},
|
|
3354
|
+
{ ...currentUsersById }
|
|
3355
|
+
);
|
|
3299
3356
|
return dispatch(actions8.receivedUserList(users));
|
|
3300
3357
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
3301
3358
|
);
|
|
@@ -3304,9 +3361,7 @@ var getUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3304
3361
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
3305
3362
|
({ data: user }) => Promise.all([
|
|
3306
3363
|
dispatch(actions8.receivedUser(user)),
|
|
3307
|
-
// @ts-ignore
|
|
3308
3364
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
3309
|
-
// @ts-ignore
|
|
3310
3365
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
3311
3366
|
user
|
|
3312
3367
|
])
|
|
@@ -3353,10 +3408,7 @@ var createUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3353
3408
|
);
|
|
3354
3409
|
var removeUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3355
3410
|
`${sliceName8}/removeUser`,
|
|
3356
|
-
(userId, { dispatch }) => (
|
|
3357
|
-
// @ts-ignore
|
|
3358
|
-
general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar3(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
3359
|
-
)
|
|
3411
|
+
(userId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar3(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
3360
3412
|
);
|
|
3361
3413
|
var editUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3362
3414
|
`${sliceName8}/editUser`,
|
|
@@ -3377,7 +3429,7 @@ var enableUser2fa = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3377
3429
|
);
|
|
3378
3430
|
var disableUser2fa = (0, import_toolkit20.createAsyncThunk)(
|
|
3379
3431
|
`${sliceName8}/disableUser2fa`,
|
|
3380
|
-
(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.
|
|
3432
|
+
(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))]))
|
|
3381
3433
|
);
|
|
3382
3434
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
3383
3435
|
(accu, [area, definition]) => {
|
|
@@ -3530,7 +3582,6 @@ var getPermissionSets = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3530
3582
|
accu[permissionSet.name] = permissionSetObject;
|
|
3531
3583
|
return accu;
|
|
3532
3584
|
},
|
|
3533
|
-
// @ts-ignore
|
|
3534
3585
|
{ ...getState().users.permissionSetsById }
|
|
3535
3586
|
);
|
|
3536
3587
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -3623,7 +3674,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
3623
3674
|
role: {
|
|
3624
3675
|
...emptyRole,
|
|
3625
3676
|
name,
|
|
3626
|
-
// @ts-ignore
|
|
3627
3677
|
description: description ? description : roleState.description,
|
|
3628
3678
|
uiPermissions: {
|
|
3629
3679
|
...emptyUiPermissions,
|
|
@@ -3666,10 +3716,7 @@ var editRole = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
3666
3716
|
});
|
|
3667
3717
|
var removeRole = (0, import_toolkit20.createAsyncThunk)(
|
|
3668
3718
|
`${sliceName8}/removeRole`,
|
|
3669
|
-
(roleId, { dispatch }) => (
|
|
3670
|
-
// @ts-ignore
|
|
3671
|
-
general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar3(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
3672
|
-
)
|
|
3719
|
+
(roleId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar3(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
3673
3720
|
);
|
|
3674
3721
|
var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
|
|
3675
3722
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -3680,7 +3727,6 @@ var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3680
3727
|
);
|
|
3681
3728
|
var saveGlobalSettings = (0, import_toolkit20.createAsyncThunk)(
|
|
3682
3729
|
`${sliceName8}/saveGlobalSettings`,
|
|
3683
|
-
// @ts-ignore
|
|
3684
3730
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
3685
3731
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
3686
3732
|
return;
|
|
@@ -3726,11 +3772,9 @@ var saveUserSettings = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/sav
|
|
|
3726
3772
|
const tooltipState = getTooltipsState(getState());
|
|
3727
3773
|
const updatedSettings = {
|
|
3728
3774
|
...userSettings,
|
|
3729
|
-
// @ts-ignore
|
|
3730
3775
|
...settings,
|
|
3731
3776
|
onboarding: {
|
|
3732
3777
|
...onboardingState,
|
|
3733
|
-
// @ts-ignore
|
|
3734
3778
|
...settings.onboarding
|
|
3735
3779
|
},
|
|
3736
3780
|
tooltips: tooltipState
|
|
@@ -3774,10 +3818,7 @@ var generateToken = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3774
3818
|
);
|
|
3775
3819
|
var revokeToken = (0, import_toolkit20.createAsyncThunk)(
|
|
3776
3820
|
`${sliceName8}/revokeToken`,
|
|
3777
|
-
(token, { dispatch }) => (
|
|
3778
|
-
// @ts-ignore
|
|
3779
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
3780
|
-
)
|
|
3821
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
3781
3822
|
);
|
|
3782
3823
|
var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
3783
3824
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -3786,23 +3827,20 @@ var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/
|
|
|
3786
3827
|
}
|
|
3787
3828
|
return Promise.all(tasks);
|
|
3788
3829
|
});
|
|
3789
|
-
var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
3790
|
-
const updatedTips =
|
|
3830
|
+
var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
3831
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
3791
3832
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
3792
3833
|
});
|
|
3793
3834
|
var submitFeedback = (0, import_toolkit20.createAsyncThunk)(
|
|
3794
3835
|
`${sliceName8}/submitFeedback`,
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
|
|
3803
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
3804
|
-
});
|
|
3805
|
-
}
|
|
3836
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
3837
|
+
subject: "feedback submission",
|
|
3838
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
3839
|
+
}).then(() => {
|
|
3840
|
+
const today = /* @__PURE__ */ new Date();
|
|
3841
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
3842
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
3843
|
+
})
|
|
3806
3844
|
);
|
|
3807
3845
|
|
|
3808
3846
|
// src/devicesSlice/thunks.tsx
|
|
@@ -4241,7 +4279,7 @@ var getDevicesByStatus2 = (0, import_toolkit21.createAsyncThunk)(`${sliceName3}/
|
|
|
4241
4279
|
page = defaultPage3,
|
|
4242
4280
|
perPage = defaultPerPage3,
|
|
4243
4281
|
sortOptions = [],
|
|
4244
|
-
selectedAttributes =
|
|
4282
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
4245
4283
|
} = options;
|
|
4246
4284
|
const state = getState();
|
|
4247
4285
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -4354,7 +4392,6 @@ var getReportingLimits = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4354
4392
|
})
|
|
4355
4393
|
);
|
|
4356
4394
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
4357
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
4358
4395
|
var getSingleReportData = (reportConfig, groups) => {
|
|
4359
4396
|
const { attribute, group, software = "" } = reportConfig;
|
|
4360
4397
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -4434,6 +4471,13 @@ var getDeviceConnect = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4434
4471
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
4435
4472
|
)
|
|
4436
4473
|
);
|
|
4474
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
4475
|
+
var triggerDeviceUpdate = (0, import_toolkit21.createAsyncThunk)(
|
|
4476
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
4477
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
4478
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
4479
|
+
)
|
|
4480
|
+
);
|
|
4437
4481
|
var getSessionDetails = (0, import_toolkit21.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
4438
4482
|
const { start: startUnix, end: endUnix } = (0, import_helpers10.dateRangeToUnix)(startDate, endDate);
|
|
4439
4483
|
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
@@ -4536,12 +4580,12 @@ var deleteAuthset = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4536
4580
|
);
|
|
4537
4581
|
var preauthDevice = (0, import_toolkit21.createAsyncThunk)(
|
|
4538
4582
|
`${sliceName3}/preauthDevice`,
|
|
4539
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
4583
|
+
(authset, { dispatch, rejectWithValue }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).then(() => Promise.resolve(dispatch(setSnackbar4("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds)))).catch((err) => {
|
|
4540
4584
|
if (err.response.status === 409) {
|
|
4541
|
-
return
|
|
4585
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
4542
4586
|
}
|
|
4543
4587
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
4544
|
-
})
|
|
4588
|
+
})
|
|
4545
4589
|
);
|
|
4546
4590
|
var decommissionDevice = (0, import_toolkit21.createAsyncThunk)(
|
|
4547
4591
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4752,6 +4796,7 @@ var getDevicesInBounds = (0, import_toolkit21.createAsyncThunk)(`${sliceName3}/g
|
|
|
4752
4796
|
setDeviceListState,
|
|
4753
4797
|
setDeviceTags,
|
|
4754
4798
|
setDeviceTwin,
|
|
4799
|
+
triggerDeviceUpdate,
|
|
4755
4800
|
updateDeviceAuth,
|
|
4756
4801
|
updateDevicesAuth,
|
|
4757
4802
|
updateDynamicGroup
|