@northern.tech/store 0.3.2 → 0.3.4
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/BillingProfile-ChP2_Sqw.d.cts +45 -0
- package/dist/BillingProfile-ChP2_Sqw.d.ts +45 -0
- package/dist/actions.cjs +22 -23
- package/dist/actions.cjs.map +1 -1
- package/dist/actions.js +12 -12
- package/dist/api/general-api.cjs.map +1 -1
- package/dist/api/general-api.js +5 -5
- package/dist/api/types/Tenant.ts +17 -12
- package/dist/api/users-api.cjs.map +1 -1
- package/dist/api/users-api.js +6 -6
- 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.cjs +1 -3
- package/dist/appSlice/index.cjs.map +1 -1
- package/dist/appSlice/index.js +4 -4
- package/dist/appSlice/thunks.cjs +153 -120
- package/dist/appSlice/thunks.cjs.map +1 -1
- package/dist/appSlice/thunks.js +28 -27
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.js +4 -4
- package/dist/{chunk-NI4SZOCF.js → chunk-4RWZR3BN.js} +23 -25
- package/dist/{chunk-NI4SZOCF.js.map → chunk-4RWZR3BN.js.map} +1 -1
- package/dist/{chunk-YGBFDXXA.js → chunk-7YZCUAXZ.js} +2 -2
- package/dist/{chunk-7PVGDMNM.js → chunk-AFICTIVU.js} +3 -5
- package/dist/{chunk-7PVGDMNM.js.map → chunk-AFICTIVU.js.map} +1 -1
- package/dist/{chunk-YT73QWCN.js → chunk-AUBJUUP3.js} +3 -3
- package/dist/{chunk-UEP36GCI.js → chunk-AVX7VVOK.js} +3 -3
- package/dist/{chunk-4B3IMP4I.js → chunk-BSN2TOQC.js} +1 -1
- package/dist/{chunk-4B3IMP4I.js.map → chunk-BSN2TOQC.js.map} +1 -1
- package/dist/{chunk-VOCOFE4I.js → chunk-DCEKU6UV.js} +2 -2
- package/dist/{chunk-E5LEU5PF.js → chunk-DGQKXSRI.js} +3 -3
- package/dist/{chunk-74OJIKXF.js → chunk-EQLHIPPR.js} +182 -142
- package/dist/chunk-EQLHIPPR.js.map +1 -0
- package/dist/{chunk-MDC7Y3EX.js → chunk-EYCORLYU.js} +44 -40
- package/dist/chunk-EYCORLYU.js.map +1 -0
- package/dist/{chunk-KAQJH2YL.js → chunk-FQDSV3NK.js} +13 -5
- package/dist/chunk-FQDSV3NK.js.map +1 -0
- package/dist/{chunk-XTRPX7JZ.js → chunk-FRSA2YB5.js} +3 -3
- package/dist/chunk-FRSA2YB5.js.map +1 -0
- package/dist/{chunk-ANB5BM5J.js → chunk-FVCYB5OP.js} +37 -32
- package/dist/chunk-FVCYB5OP.js.map +1 -0
- package/dist/{chunk-AMGWP7A4.js → chunk-GAI4VYRZ.js} +2 -2
- package/dist/{chunk-YETZPQFR.js → chunk-GWJIY56H.js} +19 -20
- package/dist/chunk-GWJIY56H.js.map +1 -0
- package/dist/{chunk-Q6M5TTDQ.js → chunk-JO33IORF.js} +2 -2
- package/dist/chunk-JO33IORF.js.map +1 -0
- package/dist/chunk-K4MMUDYT.js +391 -0
- package/dist/chunk-K4MMUDYT.js.map +1 -0
- package/dist/{chunk-XXHONFSQ.js → chunk-L3SY3J5M.js} +4 -4
- package/dist/{chunk-XXHONFSQ.js.map → chunk-L3SY3J5M.js.map} +1 -1
- package/dist/{chunk-JAROCU6M.js → chunk-NCSKCF2S.js} +3 -3
- package/dist/{chunk-CYV6632F.js → chunk-NOQR3TE7.js} +2 -2
- package/dist/{chunk-A6CT6GTI.js → chunk-OEP2D6QL.js} +18 -12
- package/dist/chunk-OEP2D6QL.js.map +1 -0
- package/dist/{chunk-2RJIDREZ.js → chunk-PAIB5V27.js} +32 -23
- package/dist/chunk-PAIB5V27.js.map +1 -0
- package/dist/{chunk-FGKMJS3B.js → chunk-RX32WLVJ.js} +2 -4
- package/dist/chunk-RX32WLVJ.js.map +1 -0
- package/dist/{chunk-YTQUNAZP.js → chunk-X3GZILYD.js} +3 -3
- package/dist/{chunk-25AKG5HH.js → chunk-Y575RZHR.js} +19 -11
- package/dist/chunk-Y575RZHR.js.map +1 -0
- package/dist/{chunk-RX55KAKX.js → chunk-ZWOAFHAR.js} +2 -2
- package/dist/{chunk-NNADGHSL.js → chunk-ZZMFXRQK.js} +14 -14
- package/dist/commonConstants.cjs.map +1 -1
- package/dist/commonConstants.d.cts +1 -1
- package/dist/commonConstants.d.ts +1 -1
- package/dist/commonConstants.js +1 -1
- package/dist/commonSelectors.cjs +47 -29
- package/dist/commonSelectors.cjs.map +1 -1
- package/dist/commonSelectors.d.cts +55 -46
- package/dist/commonSelectors.d.ts +55 -46
- package/dist/commonSelectors.js +11 -11
- 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 +7 -3
- package/dist/deploymentdevicehook.cjs +159 -125
- 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 +34 -31
- 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 +3 -3
- package/dist/deploymentsSlice/index.cjs +8 -8
- package/dist/deploymentsSlice/index.cjs.map +1 -1
- package/dist/deploymentsSlice/index.js +4 -4
- package/dist/deploymentsSlice/selectors.cjs +8 -8
- package/dist/deploymentsSlice/selectors.cjs.map +1 -1
- package/dist/deploymentsSlice/selectors.js +4 -4
- package/dist/deploymentsSlice/thunks.cjs +153 -120
- package/dist/deploymentsSlice/thunks.cjs.map +1 -1
- package/dist/deploymentsSlice/thunks.js +28 -27
- 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 +5 -3
- package/dist/devicesSlice/index.cjs +8 -8
- package/dist/devicesSlice/index.cjs.map +1 -1
- package/dist/devicesSlice/index.js +4 -4
- package/dist/devicesSlice/selectors.cjs +9 -9
- package/dist/devicesSlice/selectors.cjs.map +1 -1
- package/dist/devicesSlice/selectors.js +4 -4
- package/dist/devicesSlice/thunks.cjs +155 -120
- 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 +30 -27
- package/dist/flag-eu-5477R2P4.svg +130 -0
- package/dist/flag-us-HNQAF66I.svg +63 -0
- package/dist/liststatehook.cjs +971 -0
- package/dist/liststatehook.cjs.map +1 -0
- package/dist/liststatehook.d.cts +246 -0
- package/dist/liststatehook.d.ts +246 -0
- package/dist/liststatehook.js +88 -0
- package/dist/liststatehook.js.map +1 -0
- package/dist/locationutils.cjs +942 -0
- package/dist/locationutils.cjs.map +1 -0
- package/dist/locationutils.d.cts +113 -0
- package/dist/locationutils.d.ts +113 -0
- package/dist/locationutils.js +46 -0
- package/dist/locationutils.js.map +1 -0
- package/dist/monitorSlice/constants.cjs +8 -8
- package/dist/monitorSlice/constants.cjs.map +1 -1
- package/dist/monitorSlice/constants.js +3 -3
- package/dist/monitorSlice/index.cjs +8 -8
- package/dist/monitorSlice/index.cjs.map +1 -1
- package/dist/monitorSlice/index.js +4 -4
- package/dist/monitorSlice/thunks.cjs +74 -62
- package/dist/monitorSlice/thunks.cjs.map +1 -1
- package/dist/monitorSlice/thunks.js +24 -24
- package/dist/onboardingSlice/index.cjs +1 -3
- package/dist/onboardingSlice/index.cjs.map +1 -1
- package/dist/onboardingSlice/index.js +1 -1
- package/dist/onboardingSlice/thunks.cjs +157 -124
- package/dist/onboardingSlice/thunks.cjs.map +1 -1
- package/dist/onboardingSlice/thunks.d.cts +2 -34
- package/dist/onboardingSlice/thunks.d.ts +2 -34
- package/dist/onboardingSlice/thunks.js +28 -29
- 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 +5 -3
- package/dist/organizationSlice/index.cjs +18 -15
- package/dist/organizationSlice/index.cjs.map +1 -1
- package/dist/organizationSlice/index.d.cts +27 -1012
- package/dist/organizationSlice/index.d.ts +27 -1012
- package/dist/organizationSlice/index.js +4 -4
- package/dist/organizationSlice/selectors.cjs.map +1 -1
- package/dist/organizationSlice/selectors.d.cts +10 -1
- package/dist/organizationSlice/selectors.d.ts +10 -1
- package/dist/organizationSlice/selectors.js +4 -4
- package/dist/organizationSlice/thunks.cjs +1619 -1559
- package/dist/organizationSlice/thunks.cjs.map +1 -1
- package/dist/organizationSlice/thunks.d.cts +62 -37
- package/dist/organizationSlice/thunks.d.ts +62 -37
- package/dist/organizationSlice/thunks.js +28 -27
- package/dist/organizationSlice/types.cjs +19 -0
- package/dist/organizationSlice/types.cjs.map +1 -0
- package/dist/organizationSlice/types.d.cts +5 -0
- package/dist/organizationSlice/types.d.ts +5 -0
- package/dist/organizationSlice/types.js +1 -0
- package/dist/organizationSlice/types.js.map +1 -0
- package/dist/releasesSlice/index.cjs.map +1 -1
- package/dist/releasesSlice/index.js +4 -4
- package/dist/releasesSlice/selectors.cjs +17 -8
- package/dist/releasesSlice/selectors.cjs.map +1 -1
- package/dist/releasesSlice/selectors.js +5 -5
- package/dist/releasesSlice/thunks.cjs +123 -94
- 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 +25 -24
- package/dist/selectors.cjs +53 -29
- package/dist/selectors.cjs.map +1 -1
- package/dist/selectors.d.cts +10 -1
- package/dist/selectors.d.ts +10 -1
- package/dist/selectors.js +49 -43
- package/dist/sockethook.cjs +529 -0
- package/dist/sockethook.cjs.map +1 -0
- package/dist/sockethook.d.cts +10 -0
- package/dist/sockethook.d.ts +10 -0
- package/dist/sockethook.js +141 -0
- package/dist/sockethook.js.map +1 -0
- package/dist/store.cjs +38 -29
- package/dist/store.cjs.map +1 -1
- package/dist/store.d.cts +13 -231
- package/dist/store.d.ts +13 -231
- package/dist/store.js +18 -16
- package/dist/storehooks.cjs +273 -198
- package/dist/storehooks.cjs.map +1 -1
- package/dist/storehooks.js +38 -37
- package/dist/storehooks.js.map +1 -1
- package/dist/thunks.cjs +259 -184
- package/dist/thunks.cjs.map +1 -1
- package/dist/thunks.d.cts +6 -2
- package/dist/thunks.d.ts +6 -2
- package/dist/thunks.js +30 -29
- package/dist/types-DBj17FZO.d.cts +135 -0
- package/dist/types-DnfZa6xd.d.ts +135 -0
- package/dist/usersSlice/constants.cjs +10 -10
- package/dist/usersSlice/constants.cjs.map +1 -1
- package/dist/usersSlice/constants.d.cts +6 -6
- package/dist/usersSlice/constants.d.ts +6 -6
- package/dist/usersSlice/constants.js +3 -3
- package/dist/usersSlice/index.cjs +10 -10
- package/dist/usersSlice/index.cjs.map +1 -1
- package/dist/usersSlice/index.js +4 -4
- 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 +13 -7
- package/dist/usersSlice/thunks.cjs +151 -120
- 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 +28 -27
- package/dist/utils.cjs +23 -24
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js +4 -4
- package/package.json +7 -6
- 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-FGKMJS3B.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-YGBFDXXA.js.map → chunk-7YZCUAXZ.js.map} +0 -0
- /package/dist/{chunk-YT73QWCN.js.map → chunk-AUBJUUP3.js.map} +0 -0
- /package/dist/{chunk-UEP36GCI.js.map → chunk-AVX7VVOK.js.map} +0 -0
- /package/dist/{chunk-VOCOFE4I.js.map → chunk-DCEKU6UV.js.map} +0 -0
- /package/dist/{chunk-E5LEU5PF.js.map → chunk-DGQKXSRI.js.map} +0 -0
- /package/dist/{chunk-AMGWP7A4.js.map → chunk-GAI4VYRZ.js.map} +0 -0
- /package/dist/{chunk-JAROCU6M.js.map → chunk-NCSKCF2S.js.map} +0 -0
- /package/dist/{chunk-CYV6632F.js.map → chunk-NOQR3TE7.js.map} +0 -0
- /package/dist/{chunk-YTQUNAZP.js.map → chunk-X3GZILYD.js.map} +0 -0
- /package/dist/{chunk-RX55KAKX.js.map → chunk-ZWOAFHAR.js.map} +0 -0
- /package/dist/{chunk-NNADGHSL.js.map → chunk-ZZMFXRQK.js.map} +0 -0
|
@@ -74,28 +74,28 @@ var PLANS = {
|
|
|
74
74
|
id: "os",
|
|
75
75
|
name: "Basic",
|
|
76
76
|
offer: true,
|
|
77
|
-
price: "$32/month",
|
|
77
|
+
price: "$32 / month",
|
|
78
78
|
deviceCount: startingDeviceCount.os,
|
|
79
|
-
offerprice: "$23/month for first 50 devices",
|
|
79
|
+
offerprice: "$23 / month for first 50 devices",
|
|
80
80
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
81
|
-
features: ["
|
|
81
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
82
82
|
},
|
|
83
83
|
professional: {
|
|
84
84
|
id: "professional",
|
|
85
85
|
name: "Professional",
|
|
86
86
|
offer: true,
|
|
87
|
-
price: "$269/month",
|
|
87
|
+
price: "$269 / month",
|
|
88
88
|
deviceCount: startingDeviceCount.professional,
|
|
89
|
-
offerprice: "$200/month for first 50 devices",
|
|
89
|
+
offerprice: "$200 / month for first 50 devices",
|
|
90
90
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
91
|
-
features: ["
|
|
91
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
92
92
|
},
|
|
93
93
|
enterprise: {
|
|
94
94
|
id: "enterprise",
|
|
95
95
|
name: "Enterprise",
|
|
96
96
|
price: "Custom pricing",
|
|
97
|
-
deviceCount: "
|
|
98
|
-
features: ["
|
|
97
|
+
deviceCount: "Unlimited devices",
|
|
98
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
101
|
var ADDONS = {
|
|
@@ -566,6 +566,7 @@ var DEVICE_STATES = {
|
|
|
566
566
|
rejected: "rejected"
|
|
567
567
|
};
|
|
568
568
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
569
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
569
570
|
|
|
570
571
|
// src/monitorSlice/constants.ts
|
|
571
572
|
var alertChannels = { email: "email" };
|
|
@@ -647,13 +648,16 @@ var SSO_TYPES = {
|
|
|
647
648
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
648
649
|
}
|
|
649
650
|
};
|
|
650
|
-
var
|
|
651
|
-
{ title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
652
|
-
{ title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
653
|
-
{ title: "Device", queryParameter: "object_id", value: "device" },
|
|
654
|
-
{ title: "
|
|
655
|
-
|
|
656
|
-
|
|
651
|
+
var auditlogTypes = {
|
|
652
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
653
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
654
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
655
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
656
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
657
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
658
|
+
};
|
|
659
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
660
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
657
661
|
var emptyWebhook = {
|
|
658
662
|
description: "",
|
|
659
663
|
enabled: true,
|
|
@@ -786,7 +790,7 @@ var uiPermissionsByArea = {
|
|
|
786
790
|
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
791
|
key: "auditlog",
|
|
788
792
|
uiPermissions: [uiPermissionsById.read],
|
|
789
|
-
title: "System
|
|
793
|
+
title: "System Audit Log"
|
|
790
794
|
},
|
|
791
795
|
deployments: {
|
|
792
796
|
endpoints: [
|
|
@@ -937,7 +941,7 @@ var serviceProviderRolesById = {
|
|
|
937
941
|
},
|
|
938
942
|
readOnly: {
|
|
939
943
|
name: "Read access",
|
|
940
|
-
value: staticRolesByName.
|
|
944
|
+
value: staticRolesByName.readOnly,
|
|
941
945
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
942
946
|
permissions: [],
|
|
943
947
|
uiPermissions: {
|
|
@@ -1195,9 +1199,7 @@ var appSlice = (0, import_toolkit.createSlice)({
|
|
|
1195
1199
|
...action.payload
|
|
1196
1200
|
};
|
|
1197
1201
|
},
|
|
1198
|
-
setEnvironmentData: (state, action) => {
|
|
1199
|
-
return { ...state, ...action.payload };
|
|
1200
|
-
}
|
|
1202
|
+
setEnvironmentData: (state, action) => ({ ...state, ...action.payload })
|
|
1201
1203
|
}
|
|
1202
1204
|
});
|
|
1203
1205
|
var actions = appSlice.actions;
|
|
@@ -1572,9 +1574,7 @@ var onboardingSlice = (0, import_toolkit5.createSlice)({
|
|
|
1572
1574
|
name: sliceName5,
|
|
1573
1575
|
initialState: initialState5,
|
|
1574
1576
|
reducers: {
|
|
1575
|
-
setOnboardingState: (state, action) => {
|
|
1576
|
-
return { ...state, ...action.payload };
|
|
1577
|
-
},
|
|
1577
|
+
setOnboardingState: (state, action) => ({ ...state, ...action.payload }),
|
|
1578
1578
|
setDemoArtifactPort: (state, action) => {
|
|
1579
1579
|
state.demoArtifactPort = action.payload;
|
|
1580
1580
|
},
|
|
@@ -2142,7 +2142,7 @@ var getGroups = (0, import_toolkit11.createSelector)([getGroupsById], (groupsByI
|
|
|
2142
2142
|
(accu, [groupname, group]) => {
|
|
2143
2143
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
2144
2144
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
2145
|
-
if (group.filters
|
|
2145
|
+
if (group.filters?.length > 0) {
|
|
2146
2146
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
2147
2147
|
accu.dynamic.push(groupItem);
|
|
2148
2148
|
} else {
|
|
@@ -2215,14 +2215,15 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
|
|
|
2215
2215
|
// src/utils.ts
|
|
2216
2216
|
var import_helpers4 = require("@northern.tech/utils/helpers");
|
|
2217
2217
|
var filterProcessors = {
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2218
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
2219
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
2220
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
2221
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
2222
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
2223
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2224
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2225
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers4.yes,
|
|
2226
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
2226
2227
|
};
|
|
2227
2228
|
var filterAliases = {
|
|
2228
2229
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -2266,14 +2267,12 @@ var filtersFilter = (item, index, array) => {
|
|
|
2266
2267
|
const firstIndex = array.findIndex((filter) => filterCompare(filter, item));
|
|
2267
2268
|
return firstIndex === index;
|
|
2268
2269
|
};
|
|
2269
|
-
var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => {
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
}, []);
|
|
2276
|
-
};
|
|
2270
|
+
var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => ids.slice(0, cutOffSize).reduce((accu, id) => {
|
|
2271
|
+
if (id && byId[id]) {
|
|
2272
|
+
accu.push({ ...defaultObject, ...byId[id] });
|
|
2273
|
+
}
|
|
2274
|
+
return accu;
|
|
2275
|
+
}, []);
|
|
2277
2276
|
var mergePermissions = (existingPermissions = { ...emptyUiPermissions }, addedPermissions) => Object.entries(existingPermissions).reduce(
|
|
2278
2277
|
(accu, [key, value]) => {
|
|
2279
2278
|
let values;
|
|
@@ -2346,8 +2345,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
2346
2345
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
2347
2346
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
2348
2347
|
var getUsersById = (state) => state.users.byId;
|
|
2348
|
+
var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
2349
2349
|
var getCurrentUser = (0, import_toolkit14.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
2350
2350
|
var getUserSettings = (state) => state.users.userSettings;
|
|
2351
|
+
var getSelectedDeviceAttribute = (0, import_toolkit14.createSelector)(
|
|
2352
|
+
[getUserSettings],
|
|
2353
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
2354
|
+
);
|
|
2351
2355
|
var getIsDarkMode = (0, import_toolkit14.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
2352
2356
|
var getShowHelptips = (0, import_toolkit14.createSelector)(
|
|
2353
2357
|
[getTooltipsById],
|
|
@@ -2372,7 +2376,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
|
|
|
2372
2376
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
2373
2377
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
2374
2378
|
}));
|
|
2375
|
-
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
2379
|
+
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
2376
2380
|
|
|
2377
2381
|
// src/commonSelectors.ts
|
|
2378
2382
|
var getIsEnterprise = (0, import_toolkit15.createSelector)(
|
|
@@ -2433,12 +2437,18 @@ var getUserCapabilities = (0, import_toolkit15.createSelector)([getUserRoles, ge
|
|
|
2433
2437
|
});
|
|
2434
2438
|
var getTenantCapabilities = (0, import_toolkit15.createSelector)(
|
|
2435
2439
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
2436
|
-
({
|
|
2440
|
+
({
|
|
2441
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
2442
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
2443
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
2444
|
+
hasMonitor: isMonitorEnabled,
|
|
2445
|
+
isHosted
|
|
2446
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
2437
2447
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
2438
2448
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
2439
|
-
const hasDeviceConfig =
|
|
2440
|
-
const hasDeviceConnect =
|
|
2441
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
2449
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
2450
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
2451
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
2442
2452
|
return {
|
|
2443
2453
|
canDelta,
|
|
2444
2454
|
canRetry: canDelta,
|
|
@@ -2542,9 +2552,7 @@ var getGroupNames = (0, import_toolkit15.createSelector)([getGroupsById, getUser
|
|
|
2542
2552
|
});
|
|
2543
2553
|
var getDeviceReportsForUser = (0, import_toolkit15.createSelector)(
|
|
2544
2554
|
[getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],
|
|
2545
|
-
({ reports }, { id: currentUserId }, globalSettings, devicesById) => {
|
|
2546
|
-
return reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : []);
|
|
2547
|
-
}
|
|
2555
|
+
({ reports }, { id: currentUserId }, globalSettings, devicesById) => reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])
|
|
2548
2556
|
);
|
|
2549
2557
|
var listTypeDeviceIdMap = {
|
|
2550
2558
|
deviceList: getListedDevices,
|
|
@@ -2568,7 +2576,7 @@ var getAuditlogDevice = (0, import_toolkit15.createSelector)([getAuditLogEntry,
|
|
|
2568
2576
|
var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
2569
2577
|
if (service_provider) {
|
|
2570
2578
|
return roles.reduce((accu, role) => {
|
|
2571
|
-
if (rolesById[role.
|
|
2579
|
+
if (rolesById[role.value]) {
|
|
2572
2580
|
return accu;
|
|
2573
2581
|
}
|
|
2574
2582
|
accu.push(role);
|
|
@@ -2576,20 +2584,19 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
|
|
|
2576
2584
|
}, Object.values(serviceProviderRolesById));
|
|
2577
2585
|
}
|
|
2578
2586
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
2579
|
-
const index = accu.findIndex(({
|
|
2587
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
2580
2588
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
2581
2589
|
return accu;
|
|
2582
2590
|
}, roles);
|
|
2583
2591
|
});
|
|
2584
2592
|
|
|
2585
2593
|
// src/store.ts
|
|
2594
|
+
var import_react_redux = require("react-redux");
|
|
2586
2595
|
var import_helpers6 = require("@northern.tech/utils/helpers");
|
|
2587
2596
|
var import_toolkit16 = require("@reduxjs/toolkit");
|
|
2588
2597
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2589
2598
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2590
|
-
var resetEnvironment = () =>
|
|
2591
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2592
|
-
};
|
|
2599
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2593
2600
|
resetEnvironment();
|
|
2594
2601
|
var commonErrorFallback = "Please check your connection.";
|
|
2595
2602
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2615,6 +2622,14 @@ var sessionReducer = (state, action) => {
|
|
|
2615
2622
|
}
|
|
2616
2623
|
return rootReducer(state, action);
|
|
2617
2624
|
};
|
|
2625
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2626
|
+
if (action.type.endsWith("/rejected")) {
|
|
2627
|
+
const { error } = action;
|
|
2628
|
+
console.error("Rejection in action:", action);
|
|
2629
|
+
console.error(error.stack);
|
|
2630
|
+
}
|
|
2631
|
+
return next(action);
|
|
2632
|
+
};
|
|
2618
2633
|
var getConfiguredStore = (options = {}) => {
|
|
2619
2634
|
const { preloadedState = {}, ...config } = options;
|
|
2620
2635
|
return (0, import_toolkit16.configureStore)({
|
|
@@ -2630,7 +2645,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2630
2645
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2631
2646
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2632
2647
|
}
|
|
2633
|
-
})
|
|
2648
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2634
2649
|
});
|
|
2635
2650
|
};
|
|
2636
2651
|
var store = getConfiguredStore({
|
|
@@ -3182,7 +3197,7 @@ var getDevicesByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/
|
|
|
3182
3197
|
page = defaultPage,
|
|
3183
3198
|
perPage = defaultPerPage,
|
|
3184
3199
|
sortOptions = [],
|
|
3185
|
-
selectedAttributes =
|
|
3200
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
3186
3201
|
} = options;
|
|
3187
3202
|
const state = getState();
|
|
3188
3203
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -3295,7 +3310,6 @@ var getReportingLimits = (0, import_toolkit18.createAsyncThunk)(
|
|
|
3295
3310
|
})
|
|
3296
3311
|
);
|
|
3297
3312
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
3298
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
3299
3313
|
var getSingleReportData = (reportConfig, groups) => {
|
|
3300
3314
|
const { attribute, group, software = "" } = reportConfig;
|
|
3301
3315
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -3375,6 +3389,13 @@ var getDeviceConnect = (0, import_toolkit18.createAsyncThunk)(
|
|
|
3375
3389
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
3376
3390
|
)
|
|
3377
3391
|
);
|
|
3392
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
3393
|
+
var triggerDeviceUpdate = (0, import_toolkit18.createAsyncThunk)(
|
|
3394
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
3395
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
3396
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
3397
|
+
)
|
|
3398
|
+
);
|
|
3378
3399
|
var getSessionDetails = (0, import_toolkit18.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
3379
3400
|
const { start: startUnix, end: endUnix } = (0, import_helpers8.dateRangeToUnix)(startDate, endDate);
|
|
3380
3401
|
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
@@ -3477,12 +3498,12 @@ var deleteAuthset = (0, import_toolkit18.createAsyncThunk)(
|
|
|
3477
3498
|
);
|
|
3478
3499
|
var preauthDevice = (0, import_toolkit18.createAsyncThunk)(
|
|
3479
3500
|
`${sliceName3}/preauthDevice`,
|
|
3480
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
3501
|
+
(authset, { dispatch, rejectWithValue }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).then(() => Promise.resolve(dispatch(setSnackbar2("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds)))).catch((err) => {
|
|
3481
3502
|
if (err.response.status === 409) {
|
|
3482
|
-
return
|
|
3503
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3483
3504
|
}
|
|
3484
3505
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3485
|
-
})
|
|
3506
|
+
})
|
|
3486
3507
|
);
|
|
3487
3508
|
var decommissionDevice = (0, import_toolkit18.createAsyncThunk)(
|
|
3488
3509
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -3699,16 +3720,17 @@ var getDeviceMonitorConfig = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3699
3720
|
);
|
|
3700
3721
|
var changeNotificationSetting = (0, import_toolkit19.createAsyncThunk)(
|
|
3701
3722
|
`${sliceName4}/changeNotificationSetting`,
|
|
3702
|
-
({ enabled, channel = alertChannels.email }, { dispatch }) => {
|
|
3703
|
-
|
|
3704
|
-
(
|
|
3705
|
-
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
);
|
|
3709
|
-
}
|
|
3723
|
+
({ enabled, channel = alertChannels.email }, { dispatch }) => general_api_default.put(`${monitorApiUrlv1}/settings/global/channel/alerts/${channel}/status`, { enabled }).catch((err) => commonErrorHandler(err, `${enabled ? "En" : "Dis"}abling ${channel} alerts failed:`, dispatch)).then(
|
|
3724
|
+
() => Promise.all([
|
|
3725
|
+
dispatch(actions4.changeAlertChannel({ channel, enabled })),
|
|
3726
|
+
dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
|
|
3727
|
+
])
|
|
3728
|
+
)
|
|
3710
3729
|
);
|
|
3711
3730
|
|
|
3731
|
+
// src/usersSlice/thunks.ts
|
|
3732
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
3733
|
+
|
|
3712
3734
|
// src/api/users-api.ts
|
|
3713
3735
|
var import_axios3 = __toESM(require("axios"), 1);
|
|
3714
3736
|
var Api2 = {
|
|
@@ -3742,7 +3764,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
3742
3764
|
}
|
|
3743
3765
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
3744
3766
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
3745
|
-
return Promise.reject(dispatch(setSnackbar3((0, import_helpers9.preformatWithRequestID)(err.response, errorMessage),
|
|
3767
|
+
return Promise.reject(dispatch(setSnackbar3({ message: (0, import_helpers9.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
3746
3768
|
};
|
|
3747
3769
|
var loginUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3748
3770
|
`${sliceName8}/loginUser`,
|
|
@@ -3766,19 +3788,16 @@ var loginUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3766
3788
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
3767
3789
|
setSessionInfo({ token, expiresAt });
|
|
3768
3790
|
cookies3.remove("JWT", { path: "/" });
|
|
3769
|
-
return (
|
|
3770
|
-
|
|
3771
|
-
Promise.
|
|
3772
|
-
|
|
3773
|
-
|
|
3774
|
-
|
|
3775
|
-
window.
|
|
3776
|
-
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
3780
|
-
})
|
|
3781
|
-
);
|
|
3791
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
3792
|
+
cleanUp();
|
|
3793
|
+
return Promise.reject(dispatch(setSnackbar3((0, import_helpers9.extractErrorMessage)(e))));
|
|
3794
|
+
}).then(() => {
|
|
3795
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
3796
|
+
if (window.location.pathname !== "/ui/") {
|
|
3797
|
+
window.location.replace("/ui/");
|
|
3798
|
+
}
|
|
3799
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
3800
|
+
});
|
|
3782
3801
|
})
|
|
3783
3802
|
);
|
|
3784
3803
|
var logoutUser = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -3796,6 +3815,7 @@ var switchUserOrganization = (0, import_toolkit20.createAsyncThunk)(`${sliceName
|
|
|
3796
3815
|
return Promise.reject();
|
|
3797
3816
|
}
|
|
3798
3817
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
3818
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
3799
3819
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
3800
3820
|
window.location.reload();
|
|
3801
3821
|
});
|
|
@@ -3836,11 +3856,18 @@ var verify2FA = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3836
3856
|
);
|
|
3837
3857
|
var getUserList = (0, import_toolkit20.createAsyncThunk)(
|
|
3838
3858
|
`${sliceName8}/getUserList`,
|
|
3839
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
3840
|
-
const
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3859
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
3860
|
+
const currentUsersById = getUsersById(getState());
|
|
3861
|
+
const users = res.data.reduce(
|
|
3862
|
+
(accu, item) => {
|
|
3863
|
+
accu[item.id] = {
|
|
3864
|
+
...accu[item.id],
|
|
3865
|
+
...item
|
|
3866
|
+
};
|
|
3867
|
+
return accu;
|
|
3868
|
+
},
|
|
3869
|
+
{ ...currentUsersById }
|
|
3870
|
+
);
|
|
3844
3871
|
return dispatch(actions8.receivedUserList(users));
|
|
3845
3872
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
3846
3873
|
);
|
|
@@ -3849,9 +3876,7 @@ var getUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3849
3876
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
3850
3877
|
({ data: user }) => Promise.all([
|
|
3851
3878
|
dispatch(actions8.receivedUser(user)),
|
|
3852
|
-
// @ts-ignore
|
|
3853
3879
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
3854
|
-
// @ts-ignore
|
|
3855
3880
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
3856
3881
|
user
|
|
3857
3882
|
])
|
|
@@ -3898,10 +3923,7 @@ var createUser = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3898
3923
|
);
|
|
3899
3924
|
var removeUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3900
3925
|
`${sliceName8}/removeUser`,
|
|
3901
|
-
(userId, { dispatch }) => (
|
|
3902
|
-
// @ts-ignore
|
|
3903
|
-
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))
|
|
3904
|
-
)
|
|
3926
|
+
(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))
|
|
3905
3927
|
);
|
|
3906
3928
|
var editUser = (0, import_toolkit20.createAsyncThunk)(
|
|
3907
3929
|
`${sliceName8}/editUser`,
|
|
@@ -3922,7 +3944,7 @@ var enableUser2fa = (0, import_toolkit20.createAsyncThunk)(
|
|
|
3922
3944
|
);
|
|
3923
3945
|
var disableUser2fa = (0, import_toolkit20.createAsyncThunk)(
|
|
3924
3946
|
`${sliceName8}/disableUser2fa`,
|
|
3925
|
-
(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.
|
|
3947
|
+
(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))]))
|
|
3926
3948
|
);
|
|
3927
3949
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
3928
3950
|
(accu, [area, definition]) => {
|
|
@@ -4075,7 +4097,6 @@ var getPermissionSets = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4075
4097
|
accu[permissionSet.name] = permissionSetObject;
|
|
4076
4098
|
return accu;
|
|
4077
4099
|
},
|
|
4078
|
-
// @ts-ignore
|
|
4079
4100
|
{ ...getState().users.permissionSetsById }
|
|
4080
4101
|
);
|
|
4081
4102
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -4168,7 +4189,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
4168
4189
|
role: {
|
|
4169
4190
|
...emptyRole,
|
|
4170
4191
|
name,
|
|
4171
|
-
// @ts-ignore
|
|
4172
4192
|
description: description ? description : roleState.description,
|
|
4173
4193
|
uiPermissions: {
|
|
4174
4194
|
...emptyUiPermissions,
|
|
@@ -4211,10 +4231,7 @@ var editRole = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
4211
4231
|
});
|
|
4212
4232
|
var removeRole = (0, import_toolkit20.createAsyncThunk)(
|
|
4213
4233
|
`${sliceName8}/removeRole`,
|
|
4214
|
-
(roleId, { dispatch }) => (
|
|
4215
|
-
// @ts-ignore
|
|
4216
|
-
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))
|
|
4217
|
-
)
|
|
4234
|
+
(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))
|
|
4218
4235
|
);
|
|
4219
4236
|
var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
|
|
4220
4237
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -4225,7 +4242,6 @@ var getGlobalSettings2 = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4225
4242
|
);
|
|
4226
4243
|
var saveGlobalSettings = (0, import_toolkit20.createAsyncThunk)(
|
|
4227
4244
|
`${sliceName8}/saveGlobalSettings`,
|
|
4228
|
-
// @ts-ignore
|
|
4229
4245
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
4230
4246
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
4231
4247
|
return;
|
|
@@ -4271,11 +4287,9 @@ var saveUserSettings = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/sav
|
|
|
4271
4287
|
const tooltipState = getTooltipsState(getState());
|
|
4272
4288
|
const updatedSettings = {
|
|
4273
4289
|
...userSettings,
|
|
4274
|
-
// @ts-ignore
|
|
4275
4290
|
...settings,
|
|
4276
4291
|
onboarding: {
|
|
4277
4292
|
...onboardingState,
|
|
4278
|
-
// @ts-ignore
|
|
4279
4293
|
...settings.onboarding
|
|
4280
4294
|
},
|
|
4281
4295
|
tooltips: tooltipState
|
|
@@ -4319,10 +4333,7 @@ var generateToken = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4319
4333
|
);
|
|
4320
4334
|
var revokeToken = (0, import_toolkit20.createAsyncThunk)(
|
|
4321
4335
|
`${sliceName8}/revokeToken`,
|
|
4322
|
-
(token, { dispatch }) => (
|
|
4323
|
-
// @ts-ignore
|
|
4324
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
4325
|
-
)
|
|
4336
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
4326
4337
|
);
|
|
4327
4338
|
var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
4328
4339
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -4331,33 +4342,31 @@ var setTooltipReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/
|
|
|
4331
4342
|
}
|
|
4332
4343
|
return Promise.all(tasks);
|
|
4333
4344
|
});
|
|
4334
|
-
var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
4335
|
-
const updatedTips =
|
|
4345
|
+
var setAllTooltipsReadState = (0, import_toolkit20.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
4346
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
4336
4347
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
4337
4348
|
});
|
|
4338
4349
|
var submitFeedback = (0, import_toolkit20.createAsyncThunk)(
|
|
4339
4350
|
`${sliceName8}/submitFeedback`,
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4343
|
-
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
4349
|
-
});
|
|
4350
|
-
}
|
|
4351
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
4352
|
+
subject: "feedback submission",
|
|
4353
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
4354
|
+
}).then(() => {
|
|
4355
|
+
const today = /* @__PURE__ */ new Date();
|
|
4356
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
4357
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
4358
|
+
})
|
|
4351
4359
|
);
|
|
4352
4360
|
|
|
4353
4361
|
// src/deploymentsSlice/thunks.ts
|
|
4354
4362
|
var import_helpers10 = require("@northern.tech/utils/helpers");
|
|
4363
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
4355
4364
|
var import_toolkit21 = require("@reduxjs/toolkit");
|
|
4356
4365
|
var import_validator = require("validator");
|
|
4357
4366
|
var { receivedDevice, setSnackbar: setSnackbar4 } = actions_default;
|
|
4358
4367
|
var { page: defaultPage3, perPage: defaultPerPage3 } = DEVICE_LIST_DEFAULTS;
|
|
4359
4368
|
var deriveDeploymentGroup = ({ filter = {}, group, groups = [], name }) => group || groups.length === 1 && !(0, import_validator.isUUID)(name) ? groups[0] : filter.name;
|
|
4360
|
-
var transformDeployments = (deployments, deploymentsById) => deployments.sort(import_helpers10.
|
|
4369
|
+
var transformDeployments = (deployments, deploymentsById) => deployments.sort((0, import_helpers10.customSort)(true, "created")).reduce(
|
|
4361
4370
|
(accu, item) => {
|
|
4362
4371
|
const filter = item.filter ?? {};
|
|
4363
4372
|
let deployment = {
|
|
@@ -4408,6 +4417,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit21.createAsyncThunk)(`${sliceNam
|
|
|
4408
4417
|
return Promise.all(tasks);
|
|
4409
4418
|
});
|
|
4410
4419
|
});
|
|
4420
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
4421
|
+
if (!expirationDate) {
|
|
4422
|
+
return false;
|
|
4423
|
+
}
|
|
4424
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
4425
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
4426
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
4427
|
+
};
|
|
4428
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
4429
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
4430
|
+
if (!totalDeploymentCount) {
|
|
4431
|
+
if (!hasDeployments) {
|
|
4432
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
4433
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
4434
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
4435
|
+
}
|
|
4436
|
+
}
|
|
4437
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
4438
|
+
}
|
|
4439
|
+
};
|
|
4411
4440
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
4412
4441
|
var createDeployment = (0, import_toolkit21.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
4413
4442
|
let request;
|
|
@@ -4418,6 +4447,9 @@ var createDeployment = (0, import_toolkit21.createAsyncThunk)(`${sliceName2}/cre
|
|
|
4418
4447
|
} else {
|
|
4419
4448
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
4420
4449
|
}
|
|
4450
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
4451
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
4452
|
+
const { trial_expiration } = getOrganization(getState());
|
|
4421
4453
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
4422
4454
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
4423
4455
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -4432,6 +4464,7 @@ var createDeployment = (0, import_toolkit21.createAsyncThunk)(`${sliceName2}/cre
|
|
|
4432
4464
|
dispatch(getSingleDeployment(deploymentId)),
|
|
4433
4465
|
dispatch(setSnackbar4("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
4434
4466
|
];
|
|
4467
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
4435
4468
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
4436
4469
|
if (canManageUsers) {
|
|
4437
4470
|
const { phases, retries } = newDeployment;
|