@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
package/dist/storehooks.cjs
CHANGED
|
@@ -35,14 +35,22 @@ __export(storehooks_exports, {
|
|
|
35
35
|
});
|
|
36
36
|
module.exports = __toCommonJS(storehooks_exports);
|
|
37
37
|
var import_react = require("react");
|
|
38
|
-
var
|
|
39
|
-
var
|
|
38
|
+
var import_react_redux2 = require("react-redux");
|
|
39
|
+
var import_helpers15 = require("@northern.tech/utils/helpers");
|
|
40
40
|
var import_dayjs = __toESM(require("dayjs"), 1);
|
|
41
|
-
var import_duration = __toESM(require("dayjs/plugin/duration
|
|
41
|
+
var import_duration = __toESM(require("dayjs/plugin/duration"), 1);
|
|
42
42
|
var import_universal_cookie6 = __toESM(require("universal-cookie"), 1);
|
|
43
43
|
|
|
44
44
|
// src/appSlice/constants.ts
|
|
45
45
|
var import_icons_material = require("@mui/icons-material");
|
|
46
|
+
|
|
47
|
+
// ../../assets/img/flag-eu.svg
|
|
48
|
+
var flag_eu_default = "./flag-eu-5477R2P4.svg";
|
|
49
|
+
|
|
50
|
+
// ../../assets/img/flag-us.svg
|
|
51
|
+
var flag_us_default = "./flag-us-HNQAF66I.svg";
|
|
52
|
+
|
|
53
|
+
// src/appSlice/constants.ts
|
|
46
54
|
var startingDeviceCount = {
|
|
47
55
|
os: "for first 50 devices",
|
|
48
56
|
professional: "for first 250 devices"
|
|
@@ -65,36 +73,36 @@ var emptyChartSelection = { software: "", group: "", chartType: chartTypes.bar.k
|
|
|
65
73
|
var defaultReportType = "distribution";
|
|
66
74
|
var defaultReports = [{ ...emptyChartSelection, group: null, attribute: "artifact_name", type: defaultReportType }];
|
|
67
75
|
var locations = {
|
|
68
|
-
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io" },
|
|
69
|
-
us: { key: "us", title: "US", location: "hosted.mender.io" }
|
|
76
|
+
eu: { key: "eu", title: "EU", location: "eu.hosted.mender.io", icon: flag_eu_default },
|
|
77
|
+
us: { key: "us", title: "US", location: "hosted.mender.io", icon: flag_us_default }
|
|
70
78
|
};
|
|
71
79
|
var PLANS = {
|
|
72
80
|
os: {
|
|
73
81
|
id: "os",
|
|
74
82
|
name: "Basic",
|
|
75
83
|
offer: true,
|
|
76
|
-
price: "$32/month",
|
|
84
|
+
price: "$32 / month",
|
|
77
85
|
deviceCount: startingDeviceCount.os,
|
|
78
|
-
offerprice: "$23/month for first 50 devices",
|
|
86
|
+
offerprice: "$23 / month for first 50 devices",
|
|
79
87
|
price2: "for first 6 months;\n$29/month thereafter",
|
|
80
|
-
features: ["
|
|
88
|
+
features: ["Access to core features of Mender", "Basic support"]
|
|
81
89
|
},
|
|
82
90
|
professional: {
|
|
83
91
|
id: "professional",
|
|
84
92
|
name: "Professional",
|
|
85
93
|
offer: true,
|
|
86
|
-
price: "$269/month",
|
|
94
|
+
price: "$269 / month",
|
|
87
95
|
deviceCount: startingDeviceCount.professional,
|
|
88
|
-
offerprice: "$200/month for first 50 devices",
|
|
96
|
+
offerprice: "$200 / month for first 50 devices",
|
|
89
97
|
price2: "for first 6 months;\n$249/month thereafter",
|
|
90
|
-
features: ["
|
|
98
|
+
features: ["Advanced OTA features", "Higher priority support"]
|
|
91
99
|
},
|
|
92
100
|
enterprise: {
|
|
93
101
|
id: "enterprise",
|
|
94
102
|
name: "Enterprise",
|
|
95
103
|
price: "Custom pricing",
|
|
96
|
-
deviceCount: "
|
|
97
|
-
features: ["
|
|
104
|
+
deviceCount: "Unlimited devices",
|
|
105
|
+
features: ["All Mender features", "Advanced security features", "SLA-backed support"]
|
|
98
106
|
}
|
|
99
107
|
};
|
|
100
108
|
var ADDONS = {
|
|
@@ -565,6 +573,7 @@ var DEVICE_STATES = {
|
|
|
565
573
|
rejected: "rejected"
|
|
566
574
|
};
|
|
567
575
|
var geoAttributes = ["geo-lat", "geo-lon"].map((attribute) => ({ attribute, scope: "inventory" }));
|
|
576
|
+
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
568
577
|
|
|
569
578
|
// src/monitorSlice/constants.ts
|
|
570
579
|
var alertChannels = { email: "email" };
|
|
@@ -646,13 +655,16 @@ var SSO_TYPES = {
|
|
|
646
655
|
configDetails: [{ key: "startURL", label: "Start Url", getValue: getOidcStartUrl }]
|
|
647
656
|
}
|
|
648
657
|
};
|
|
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
|
-
|
|
658
|
+
var auditlogTypes = {
|
|
659
|
+
artifact: { title: "Artifact", queryParameter: "object_type", value: "artifact" },
|
|
660
|
+
deployment: { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
|
|
661
|
+
device: { title: "Device", queryParameter: "object_id", value: "device" },
|
|
662
|
+
user_access_token: { title: "Personal Access Token", queryParameter: "user_access_token", value: "user_access_token" },
|
|
663
|
+
user: { title: "User", queryParameter: "object_id", value: "user" },
|
|
664
|
+
tenant: { title: "Tenant", queryParameter: "object_id", value: "tenant" }
|
|
665
|
+
};
|
|
666
|
+
var AUDIT_LOGS_TYPES = [auditlogTypes.artifact, auditlogTypes.deployment, auditlogTypes.device, auditlogTypes.user_access_token, auditlogTypes.user];
|
|
667
|
+
var SP_AUDIT_LOGS_TYPES = [auditlogTypes.user, auditlogTypes.tenant];
|
|
656
668
|
var emptyWebhook = {
|
|
657
669
|
description: "",
|
|
658
670
|
enabled: true,
|
|
@@ -786,7 +798,7 @@ var uiPermissionsByArea = {
|
|
|
786
798
|
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
799
|
key: "auditlog",
|
|
788
800
|
uiPermissions: [uiPermissionsById.read],
|
|
789
|
-
title: "System
|
|
801
|
+
title: "System Audit Log"
|
|
790
802
|
},
|
|
791
803
|
deployments: {
|
|
792
804
|
endpoints: [
|
|
@@ -937,7 +949,7 @@ var serviceProviderRolesById = {
|
|
|
937
949
|
},
|
|
938
950
|
readOnly: {
|
|
939
951
|
name: "Read access",
|
|
940
|
-
value: staticRolesByName.
|
|
952
|
+
value: staticRolesByName.readOnly,
|
|
941
953
|
description: "This role can see all linked organizations but cannot make any changes",
|
|
942
954
|
permissions: [],
|
|
943
955
|
uiPermissions: {
|
|
@@ -1195,9 +1207,7 @@ var appSlice = (0, import_toolkit.createSlice)({
|
|
|
1195
1207
|
...action.payload
|
|
1196
1208
|
};
|
|
1197
1209
|
},
|
|
1198
|
-
setEnvironmentData: (state, action) => {
|
|
1199
|
-
return { ...state, ...action.payload };
|
|
1200
|
-
}
|
|
1210
|
+
setEnvironmentData: (state, action) => ({ ...state, ...action.payload })
|
|
1201
1211
|
}
|
|
1202
1212
|
});
|
|
1203
1213
|
var actions = appSlice.actions;
|
|
@@ -1572,9 +1582,7 @@ var onboardingSlice = (0, import_toolkit5.createSlice)({
|
|
|
1572
1582
|
name: sliceName5,
|
|
1573
1583
|
initialState: initialState5,
|
|
1574
1584
|
reducers: {
|
|
1575
|
-
setOnboardingState: (state, action) => {
|
|
1576
|
-
return { ...state, ...action.payload };
|
|
1577
|
-
},
|
|
1585
|
+
setOnboardingState: (state, action) => ({ ...state, ...action.payload }),
|
|
1578
1586
|
setDemoArtifactPort: (state, action) => {
|
|
1579
1587
|
state.demoArtifactPort = action.payload;
|
|
1580
1588
|
},
|
|
@@ -2102,7 +2110,7 @@ var getGroups = (0, import_toolkit11.createSelector)([getGroupsById], (groupsByI
|
|
|
2102
2110
|
(accu, [groupname, group]) => {
|
|
2103
2111
|
const name = groupname === UNGROUPED_GROUP.id ? UNGROUPED_GROUP.name : groupname;
|
|
2104
2112
|
const groupItem = { ...group, groupId: name, name: groupname };
|
|
2105
|
-
if (group.filters
|
|
2113
|
+
if (group.filters?.length > 0) {
|
|
2106
2114
|
if (groupname !== UNGROUPED_GROUP.id) {
|
|
2107
2115
|
accu.dynamic.push(groupItem);
|
|
2108
2116
|
} else {
|
|
@@ -2177,14 +2185,15 @@ var getAuditLogEntry = (0, import_toolkit12.createSelector)([getAuditLog, getAud
|
|
|
2177
2185
|
// src/utils.ts
|
|
2178
2186
|
var import_helpers4 = require("@northern.tech/utils/helpers");
|
|
2179
2187
|
var filterProcessors = {
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
+
[DEVICE_FILTERING_OPTIONS.$gt.key]: (val) => Number(val) || val,
|
|
2189
|
+
[DEVICE_FILTERING_OPTIONS.$gte.key]: (val) => Number(val) || val,
|
|
2190
|
+
[DEVICE_FILTERING_OPTIONS.$lt.key]: (val) => Number(val) || val,
|
|
2191
|
+
[DEVICE_FILTERING_OPTIONS.$lte.key]: (val) => Number(val) || val,
|
|
2192
|
+
[DEVICE_FILTERING_OPTIONS.$ltne.key]: (val) => Number(val) || val,
|
|
2193
|
+
[DEVICE_FILTERING_OPTIONS.$in.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2194
|
+
[DEVICE_FILTERING_OPTIONS.$nin.key]: (val) => ("" + val).split(",").map((i) => i.trim()),
|
|
2195
|
+
[DEVICE_FILTERING_OPTIONS.$exists.key]: import_helpers4.yes,
|
|
2196
|
+
[DEVICE_FILTERING_OPTIONS.$nexists.key]: () => false
|
|
2188
2197
|
};
|
|
2189
2198
|
var filterAliases = {
|
|
2190
2199
|
$nexists: { alias: DEVICE_FILTERING_OPTIONS.$exists.key, value: false }
|
|
@@ -2228,14 +2237,12 @@ var filtersFilter = (item, index, array) => {
|
|
|
2228
2237
|
const firstIndex = array.findIndex((filter) => filterCompare(filter, item));
|
|
2229
2238
|
return firstIndex === index;
|
|
2230
2239
|
};
|
|
2231
|
-
var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => {
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
}, []);
|
|
2238
|
-
};
|
|
2240
|
+
var listItemMapper = (byId, ids, { defaultObject = {}, cutOffSize = DEVICE_LIST_MAXIMUM_LENGTH }) => ids.slice(0, cutOffSize).reduce((accu, id) => {
|
|
2241
|
+
if (id && byId[id]) {
|
|
2242
|
+
accu.push({ ...defaultObject, ...byId[id] });
|
|
2243
|
+
}
|
|
2244
|
+
return accu;
|
|
2245
|
+
}, []);
|
|
2239
2246
|
var mergePermissions = (existingPermissions = { ...emptyUiPermissions }, addedPermissions) => Object.entries(existingPermissions).reduce(
|
|
2240
2247
|
(accu, [key, value]) => {
|
|
2241
2248
|
let values;
|
|
@@ -2327,8 +2334,13 @@ var getTooltipsById = (state) => state.users.tooltips.byId;
|
|
|
2327
2334
|
var getGlobalSettings = (state) => state.users.globalSettings;
|
|
2328
2335
|
var getCurrentUserId = (state) => state.users.currentUser;
|
|
2329
2336
|
var getUsersById = (state) => state.users.byId;
|
|
2337
|
+
var getUsersList = (0, import_toolkit14.createSelector)([getUsersById], (usersById) => Object.values(usersById));
|
|
2330
2338
|
var getCurrentUser = (0, import_toolkit14.createSelector)([getUsersById, getCurrentUserId], (usersById, userId) => usersById[userId] ?? {});
|
|
2331
2339
|
var getUserSettings = (state) => state.users.userSettings;
|
|
2340
|
+
var getSelectedDeviceAttribute = (0, import_toolkit14.createSelector)(
|
|
2341
|
+
[getUserSettings],
|
|
2342
|
+
({ columnSelection }) => columnSelection.map((attribute) => ({ attribute: attribute.key, scope: attribute.scope }))
|
|
2343
|
+
);
|
|
2332
2344
|
var getIsDarkMode = (0, import_toolkit14.createSelector)([getUserSettings], ({ mode }) => isDarkMode(mode));
|
|
2333
2345
|
var getShowHelptips = (0, import_toolkit14.createSelector)(
|
|
2334
2346
|
[getTooltipsById],
|
|
@@ -2353,7 +2365,7 @@ var getOfflineThresholdSettings = (0, import_toolkit14.createSelector)([getGloba
|
|
|
2353
2365
|
interval: offlineThreshold?.interval || DEVICE_ONLINE_CUTOFF.interval,
|
|
2354
2366
|
intervalUnit: offlineThreshold?.intervalUnit || DEVICE_ONLINE_CUTOFF.intervalName
|
|
2355
2367
|
}));
|
|
2356
|
-
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([
|
|
2368
|
+
var getRolesList = (0, import_toolkit14.createSelector)([getRolesById], (rolesById2) => Object.entries(rolesById2).map(([value, role]) => ({ value, ...role })));
|
|
2357
2369
|
var getCurrentSession = (state) => state.users.currentSession;
|
|
2358
2370
|
|
|
2359
2371
|
// src/commonSelectors.ts
|
|
@@ -2415,12 +2427,18 @@ var getUserCapabilities = (0, import_toolkit15.createSelector)([getUserRoles, ge
|
|
|
2415
2427
|
});
|
|
2416
2428
|
var getTenantCapabilities = (0, import_toolkit15.createSelector)(
|
|
2417
2429
|
[getFeatures, getOrganization, getIsEnterprise],
|
|
2418
|
-
({
|
|
2430
|
+
({
|
|
2431
|
+
hasAuditlogs: isAuditlogEnabled,
|
|
2432
|
+
hasDeviceConfig: isDeviceConfigEnabled,
|
|
2433
|
+
hasDeviceConnect: isDeviceConnectEnabled,
|
|
2434
|
+
hasMonitor: isMonitorEnabled,
|
|
2435
|
+
isHosted
|
|
2436
|
+
}, { addons = [], plan = PLANS.os.id }, isEnterprise) => {
|
|
2419
2437
|
const canDelta = isEnterprise || plan === PLANS.professional.id;
|
|
2420
2438
|
const hasAuditlogs = isAuditlogEnabled && isEnterprise;
|
|
2421
|
-
const hasDeviceConfig =
|
|
2422
|
-
const hasDeviceConnect =
|
|
2423
|
-
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name ===
|
|
2439
|
+
const hasDeviceConfig = addons.some((addon) => addon.name === ADDONS.configure.id && addon.enabled) || isDeviceConfigEnabled && !isHosted;
|
|
2440
|
+
const hasDeviceConnect = addons.some((addon) => addon.name === ADDONS.troubleshoot.id && addon.enabled) || isDeviceConnectEnabled && !isHosted;
|
|
2441
|
+
const hasMonitor = isMonitorEnabled && addons.some((addon) => addon.name === ADDONS.monitor.id && addon.enabled);
|
|
2424
2442
|
return {
|
|
2425
2443
|
canDelta,
|
|
2426
2444
|
canRetry: canDelta,
|
|
@@ -2524,9 +2542,7 @@ var getGroupNames = (0, import_toolkit15.createSelector)([getGroupsById, getUser
|
|
|
2524
2542
|
});
|
|
2525
2543
|
var getDeviceReportsForUser = (0, import_toolkit15.createSelector)(
|
|
2526
2544
|
[getUserSettings, getCurrentUser, getGlobalSettings, getDevicesById],
|
|
2527
|
-
({ reports }, { id: currentUserId }, globalSettings, devicesById) => {
|
|
2528
|
-
return reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : []);
|
|
2529
|
-
}
|
|
2545
|
+
({ reports }, { id: currentUserId }, globalSettings, devicesById) => reports || globalSettings[`${currentUserId}-reports`] || (Object.keys(devicesById).length ? defaultReports : [])
|
|
2530
2546
|
);
|
|
2531
2547
|
var listTypeDeviceIdMap = {
|
|
2532
2548
|
deviceList: getListedDevices,
|
|
@@ -2550,7 +2566,7 @@ var getAuditlogDevice = (0, import_toolkit15.createSelector)([getAuditLogEntry,
|
|
|
2550
2566
|
var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, getRolesList], ({ service_provider }, roles) => {
|
|
2551
2567
|
if (service_provider) {
|
|
2552
2568
|
return roles.reduce((accu, role) => {
|
|
2553
|
-
if (rolesById[role.
|
|
2569
|
+
if (rolesById[role.value]) {
|
|
2554
2570
|
return accu;
|
|
2555
2571
|
}
|
|
2556
2572
|
accu.push(role);
|
|
@@ -2558,7 +2574,7 @@ var getRelevantRoles = (0, import_toolkit15.createSelector)([getOrganization, ge
|
|
|
2558
2574
|
}, Object.values(serviceProviderRolesById));
|
|
2559
2575
|
}
|
|
2560
2576
|
return Object.keys(rolesById).reverse().reduce((accu, key) => {
|
|
2561
|
-
const index = accu.findIndex(({
|
|
2577
|
+
const index = accu.findIndex(({ value }) => value === key);
|
|
2562
2578
|
accu = [accu[index], ...accu.filter((item, itemIndex) => index !== itemIndex)];
|
|
2563
2579
|
return accu;
|
|
2564
2580
|
}, roles);
|
|
@@ -2711,13 +2727,12 @@ var setSearchState = (0, import_toolkit16.createAsyncThunk)(`${sliceName}/setSea
|
|
|
2711
2727
|
});
|
|
2712
2728
|
|
|
2713
2729
|
// src/store.ts
|
|
2730
|
+
var import_react_redux = require("react-redux");
|
|
2714
2731
|
var import_helpers7 = require("@northern.tech/utils/helpers");
|
|
2715
2732
|
var import_toolkit17 = require("@reduxjs/toolkit");
|
|
2716
2733
|
var { setSnackbar, uploadProgress } = actions_default;
|
|
2717
2734
|
var keys = ["sessionDeploymentChecker", settingsKeys.initialized];
|
|
2718
|
-
var resetEnvironment = () =>
|
|
2719
|
-
keys.map((key) => window.sessionStorage.removeItem(key));
|
|
2720
|
-
};
|
|
2735
|
+
var resetEnvironment = () => keys.forEach((key) => window.sessionStorage.removeItem(key));
|
|
2721
2736
|
resetEnvironment();
|
|
2722
2737
|
var commonErrorFallback = "Please check your connection.";
|
|
2723
2738
|
var commonErrorHandler = (err, errorContext, dispatch, fallback, mightBeAuthRelated = false) => {
|
|
@@ -2743,6 +2758,14 @@ var sessionReducer = (state, action) => {
|
|
|
2743
2758
|
}
|
|
2744
2759
|
return rootReducer(state, action);
|
|
2745
2760
|
};
|
|
2761
|
+
var rejectionLoggerMiddleware = () => (next) => (action) => {
|
|
2762
|
+
if (action.type.endsWith("/rejected")) {
|
|
2763
|
+
const { error } = action;
|
|
2764
|
+
console.error("Rejection in action:", action);
|
|
2765
|
+
console.error(error.stack);
|
|
2766
|
+
}
|
|
2767
|
+
return next(action);
|
|
2768
|
+
};
|
|
2746
2769
|
var getConfiguredStore = (options = {}) => {
|
|
2747
2770
|
const { preloadedState = {}, ...config } = options;
|
|
2748
2771
|
return (0, import_toolkit17.configureStore)({
|
|
@@ -2758,7 +2781,7 @@ var getConfiguredStore = (options = {}) => {
|
|
|
2758
2781
|
ignoredActionPaths: ["uploads", "snackbar", /payload\..*$/],
|
|
2759
2782
|
ignoredPaths: ["app.uploadsById", "app.snackbar", "organization.externalDeviceIntegrations"]
|
|
2760
2783
|
}
|
|
2761
|
-
})
|
|
2784
|
+
}).concat(rejectionLoggerMiddleware)
|
|
2762
2785
|
});
|
|
2763
2786
|
};
|
|
2764
2787
|
var store = getConfiguredStore({
|
|
@@ -2767,12 +2790,13 @@ var store = getConfiguredStore({
|
|
|
2767
2790
|
|
|
2768
2791
|
// src/deploymentsSlice/thunks.ts
|
|
2769
2792
|
var import_helpers8 = require("@northern.tech/utils/helpers");
|
|
2793
|
+
var import_tracking = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
2770
2794
|
var import_toolkit18 = require("@reduxjs/toolkit");
|
|
2771
2795
|
var import_validator = require("validator");
|
|
2772
2796
|
var { receivedDevice, setSnackbar: setSnackbar2 } = actions_default;
|
|
2773
2797
|
var { page: defaultPage, perPage: defaultPerPage } = DEVICE_LIST_DEFAULTS;
|
|
2774
2798
|
var deriveDeploymentGroup = ({ filter = {}, group, groups = [], name }) => group || groups.length === 1 && !(0, import_validator.isUUID)(name) ? groups[0] : filter.name;
|
|
2775
|
-
var transformDeployments = (deployments, deploymentsById) => deployments.sort(import_helpers8.
|
|
2799
|
+
var transformDeployments = (deployments, deploymentsById) => deployments.sort((0, import_helpers8.customSort)(true, "created")).reduce(
|
|
2776
2800
|
(accu, item) => {
|
|
2777
2801
|
const filter = item.filter ?? {};
|
|
2778
2802
|
let deployment = {
|
|
@@ -2823,6 +2847,26 @@ var getDeploymentsByStatus2 = (0, import_toolkit18.createAsyncThunk)(`${sliceNam
|
|
|
2823
2847
|
return Promise.all(tasks);
|
|
2824
2848
|
});
|
|
2825
2849
|
});
|
|
2850
|
+
var isWithinFirstMonth = (expirationDate) => {
|
|
2851
|
+
if (!expirationDate) {
|
|
2852
|
+
return false;
|
|
2853
|
+
}
|
|
2854
|
+
const endOfFirstMonth = new Date(expirationDate);
|
|
2855
|
+
endOfFirstMonth.setMonth(endOfFirstMonth.getMonth() - 11);
|
|
2856
|
+
return endOfFirstMonth > /* @__PURE__ */ new Date();
|
|
2857
|
+
};
|
|
2858
|
+
var trackDeploymentCreation = (totalDeploymentCount, hasDeployments, trial_expiration) => {
|
|
2859
|
+
import_tracking.default.event({ category: "deployments", action: "create" });
|
|
2860
|
+
if (!totalDeploymentCount) {
|
|
2861
|
+
if (!hasDeployments) {
|
|
2862
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment" });
|
|
2863
|
+
if (isWithinFirstMonth(trial_expiration)) {
|
|
2864
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_first_month" });
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
import_tracking.default.event({ category: "deployments", action: "create_initial_deployment_user" });
|
|
2868
|
+
}
|
|
2869
|
+
};
|
|
2826
2870
|
var MAX_PREVIOUS_PHASES_COUNT = 5;
|
|
2827
2871
|
var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/createDeployment`, ({ newDeployment, hasNewRetryDefault = false }, { dispatch, getState }) => {
|
|
2828
2872
|
let request;
|
|
@@ -2833,6 +2877,9 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2833
2877
|
} else {
|
|
2834
2878
|
request = general_api_default.post(`${deploymentsApiUrl}/deployments`, newDeployment);
|
|
2835
2879
|
}
|
|
2880
|
+
const totalDeploymentCount = Object.values(getDeploymentsByStatus(getState())).reduce((accu, item) => accu + item.total, 0);
|
|
2881
|
+
const { hasDeployments } = getGlobalSettings(getState());
|
|
2882
|
+
const { trial_expiration } = getOrganization(getState());
|
|
2836
2883
|
return request.catch((err) => commonErrorHandler(err, "Error creating deployment.", dispatch)).then((data) => {
|
|
2837
2884
|
const lastslashindex = data.headers.location.lastIndexOf("/");
|
|
2838
2885
|
const deploymentId = data.headers.location.substring(lastslashindex + 1);
|
|
@@ -2847,6 +2894,7 @@ var createDeployment = (0, import_toolkit18.createAsyncThunk)(`${sliceName2}/cre
|
|
|
2847
2894
|
dispatch(getSingleDeployment(deploymentId)),
|
|
2848
2895
|
dispatch(setSnackbar2("Deployment created successfully", TIMEOUTS.fiveSeconds))
|
|
2849
2896
|
];
|
|
2897
|
+
trackDeploymentCreation(totalDeploymentCount, hasDeployments, trial_expiration);
|
|
2850
2898
|
const { canManageUsers } = getUserCapabilities(getState());
|
|
2851
2899
|
if (canManageUsers) {
|
|
2852
2900
|
const { phases, retries } = newDeployment;
|
|
@@ -3521,7 +3569,7 @@ var getDevicesByStatus2 = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/
|
|
|
3521
3569
|
page = defaultPage2,
|
|
3522
3570
|
perPage = defaultPerPage2,
|
|
3523
3571
|
sortOptions = [],
|
|
3524
|
-
selectedAttributes =
|
|
3572
|
+
selectedAttributes = getSelectedDeviceAttribute(getState())
|
|
3525
3573
|
} = options;
|
|
3526
3574
|
const state = getState();
|
|
3527
3575
|
const { applicableFilters, filterTerms } = convertDeviceListStateToFilters({
|
|
@@ -3634,7 +3682,6 @@ var getReportingLimits = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3634
3682
|
})
|
|
3635
3683
|
);
|
|
3636
3684
|
var ensureVersionString = (software, fallback) => software.length && software !== "artifact_name" ? software.endsWith(".version") ? software : `${software}.version` : fallback;
|
|
3637
|
-
var REPORT_CHART_SIZE_LIMIT = 6;
|
|
3638
3685
|
var getSingleReportData = (reportConfig, groups) => {
|
|
3639
3686
|
const { attribute, group, software = "" } = reportConfig;
|
|
3640
3687
|
const filters = [{ key: "status", scope: "identity", operator: DEVICE_FILTERING_OPTIONS.$eq.key, value: "accepted" }];
|
|
@@ -3714,6 +3761,13 @@ var getDeviceConnect = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3714
3761
|
({ data }) => Promise.all([dispatch(actions3.receivedDevice({ connect_status: data.status, connect_updated_ts: data.updated_ts, id })), Promise.resolve(data)])
|
|
3715
3762
|
)
|
|
3716
3763
|
);
|
|
3764
|
+
var updateTypeMap = { deploymentUpdate: "check-update", inventoryUpdate: "send-inventory" };
|
|
3765
|
+
var triggerDeviceUpdate = (0, import_toolkit19.createAsyncThunk)(
|
|
3766
|
+
`${sliceName3}/triggerDeviceUpdate`,
|
|
3767
|
+
({ id, type }, { dispatch }) => general_api_default.post(`${deviceConnect}/devices/${id}/${updateTypeMap[type] ?? updateTypeMap.deploymentUpdate}`).then(
|
|
3768
|
+
() => new Promise((resolve) => setTimeout(() => resolve(dispatch(getDeviceById2(id))), TIMEOUTS.threeSeconds))
|
|
3769
|
+
)
|
|
3770
|
+
);
|
|
3717
3771
|
var getSessionDetails = (0, import_toolkit19.createAsyncThunk)(`${sliceName3}/getSessionDetails`, ({ sessionId, deviceId, userId, startDate, endDate }) => {
|
|
3718
3772
|
const { start: startUnix, end: endUnix } = (0, import_helpers9.dateRangeToUnix)(startDate, endDate);
|
|
3719
3773
|
const createdAfter = startDate ? `&created_after=${startUnix}` : "";
|
|
@@ -3816,12 +3870,12 @@ var deleteAuthset = (0, import_toolkit19.createAsyncThunk)(
|
|
|
3816
3870
|
);
|
|
3817
3871
|
var preauthDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3818
3872
|
`${sliceName3}/preauthDevice`,
|
|
3819
|
-
(authset, { dispatch }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).catch((err) => {
|
|
3873
|
+
(authset, { dispatch, rejectWithValue }) => general_api_default.post(`${deviceAuthV2}/devices`, authset).then(() => Promise.resolve(dispatch(setSnackbar3("Device was successfully added to the preauthorization list", TIMEOUTS.fiveSeconds)))).catch((err) => {
|
|
3820
3874
|
if (err.response.status === 409) {
|
|
3821
|
-
return
|
|
3875
|
+
return rejectWithValue("A device with a matching identity data set already exists");
|
|
3822
3876
|
}
|
|
3823
3877
|
return commonErrorHandler(err, "The device could not be added:", dispatch);
|
|
3824
|
-
})
|
|
3878
|
+
})
|
|
3825
3879
|
);
|
|
3826
3880
|
var decommissionDevice = (0, import_toolkit19.createAsyncThunk)(
|
|
3827
3881
|
`${sliceName3}/decommissionDevice`,
|
|
@@ -4038,18 +4092,17 @@ var getDeviceMonitorConfig = (0, import_toolkit20.createAsyncThunk)(
|
|
|
4038
4092
|
);
|
|
4039
4093
|
var changeNotificationSetting = (0, import_toolkit20.createAsyncThunk)(
|
|
4040
4094
|
`${sliceName4}/changeNotificationSetting`,
|
|
4041
|
-
({ enabled, channel = alertChannels.email }, { dispatch }) => {
|
|
4042
|
-
|
|
4043
|
-
(
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
);
|
|
4048
|
-
}
|
|
4095
|
+
({ 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(
|
|
4096
|
+
() => Promise.all([
|
|
4097
|
+
dispatch(actions4.changeAlertChannel({ channel, enabled })),
|
|
4098
|
+
dispatch(actions_default.setSnackbar(`Successfully ${enabled ? "en" : "dis"}abled ${channel} alerts`, TIMEOUTS.fiveSeconds))
|
|
4099
|
+
])
|
|
4100
|
+
)
|
|
4049
4101
|
);
|
|
4050
4102
|
|
|
4051
4103
|
// src/onboardingSlice/thunks.ts
|
|
4052
4104
|
var import_helpers10 = require("@northern.tech/utils/helpers");
|
|
4105
|
+
var import_tracking2 = __toESM(require("@northern.tech/utils/tracking"), 1);
|
|
4053
4106
|
var import_toolkit21 = require("@reduxjs/toolkit");
|
|
4054
4107
|
var import_universal_cookie3 = __toESM(require("universal-cookie"), 1);
|
|
4055
4108
|
var cookies3 = new import_universal_cookie3.default();
|
|
@@ -4131,7 +4184,7 @@ var setOnboardingCanceled = (0, import_toolkit21.createAsyncThunk)(
|
|
|
4131
4184
|
Promise.resolve(dispatch(actions5.setShowOnboardingHelp(false))),
|
|
4132
4185
|
Promise.resolve(dispatch(actions5.setShowDismissOnboardingTipsDialog(false))),
|
|
4133
4186
|
Promise.resolve(dispatch(actions5.setOnboardingComplete(true)))
|
|
4134
|
-
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE)))
|
|
4187
|
+
]).then(() => dispatch(advanceOnboarding(onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE))).then(() => import_tracking2.default.event({ category: "onboarding", action: onboardingSteps.ONBOARDING_CANCELED }))
|
|
4135
4188
|
);
|
|
4136
4189
|
var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/advanceOnboarding`, (stepId, { dispatch, getState }) => {
|
|
4137
4190
|
const steps = orderedOnboardingSteps;
|
|
@@ -4142,7 +4195,8 @@ var advanceOnboarding = (0, import_toolkit21.createAsyncThunk)(`${sliceName5}/ad
|
|
|
4142
4195
|
}
|
|
4143
4196
|
const madeProgress = steps[stepIndex + 1];
|
|
4144
4197
|
const state = { ...getOnboardingState(getState()), progress: madeProgress };
|
|
4145
|
-
state.complete = stepIndex + 1 >=
|
|
4198
|
+
state.complete = stepIndex + 1 >= orderedOnboardingSteps.findIndex((step) => step === onboardingSteps.DEPLOYMENTS_PAST_COMPLETED_FAILURE) ? true : state.complete;
|
|
4199
|
+
import_tracking2.default.event({ category: "onboarding", action: stepId });
|
|
4146
4200
|
return Promise.all([dispatch(actions5.setOnboardingProgress(madeProgress)), dispatch(saveUserSettings({ onboarding: state }))]);
|
|
4147
4201
|
});
|
|
4148
4202
|
|
|
@@ -4221,7 +4275,7 @@ var startUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4221
4275
|
var cancelUpgrade = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/cancelUpgrade`, (tenantId) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/cancel`));
|
|
4222
4276
|
var completeUpgrade = (0, import_toolkit22.createAsyncThunk)(
|
|
4223
4277
|
`${sliceName6}/completeUpgrade`,
|
|
4224
|
-
({ tenantId, plan }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/complete`, { plan }).catch((err) => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch)).then(() => Promise.
|
|
4278
|
+
({ tenantId, plan, billing_profile }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/upgrade/complete`, { plan, billing_profile }).catch((err) => commonErrorHandler(err, `There was an error upgrading your account:`, dispatch)).then(() => Promise.all([dispatch(getDeviceLimit2()), dispatch(getUserOrganization())]))
|
|
4225
4279
|
);
|
|
4226
4280
|
var prepareAuditlogQuery = ({ startDate, endDate, user: userFilter, type, detail: detailFilter, sort = {} }) => {
|
|
4227
4281
|
const userId = userFilter?.id || userFilter;
|
|
@@ -4269,9 +4323,15 @@ var setAuditlogsState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/se
|
|
|
4269
4323
|
return Promise.all(tasks);
|
|
4270
4324
|
});
|
|
4271
4325
|
var tenantDataDivergedMessage = "The system detected there is a change in your plan or purchased add-ons. Please log out and log in again";
|
|
4272
|
-
var addTenant = (0, import_toolkit22.createAsyncThunk)(
|
|
4273
|
-
|
|
4274
|
-
})
|
|
4326
|
+
var addTenant = (0, import_toolkit22.createAsyncThunk)(
|
|
4327
|
+
`${sliceName6}/createTenant`,
|
|
4328
|
+
(selectionState, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants`, selectionState).then(
|
|
4329
|
+
() => Promise.all([
|
|
4330
|
+
dispatch(setSnackbar4("Tenant was created successfully.")),
|
|
4331
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4332
|
+
])
|
|
4333
|
+
).catch((err) => commonErrorHandler(err, "There was an error creating tenant", dispatch, commonErrorFallback))
|
|
4334
|
+
);
|
|
4275
4335
|
var tenantListRetrieval = async (config) => {
|
|
4276
4336
|
const { page, perPage } = config;
|
|
4277
4337
|
const params = new URLSearchParams({ page, per_page: perPage }).toString();
|
|
@@ -4296,21 +4356,29 @@ var setTenantsListState = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/
|
|
|
4296
4356
|
}
|
|
4297
4357
|
return dispatch(actions6.setTenantListState({ ...nextState }));
|
|
4298
4358
|
});
|
|
4299
|
-
var editTenantDeviceLimit = (0, import_toolkit22.createAsyncThunk)(
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4308
|
-
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
})
|
|
4312
|
-
|
|
4313
|
-
|
|
4359
|
+
var editTenantDeviceLimit = (0, import_toolkit22.createAsyncThunk)(
|
|
4360
|
+
`${sliceName6}/editDeviceLimit`,
|
|
4361
|
+
({ newLimit, id, name }, { dispatch }) => general_api_default.put(`${tenantadmApiUrlv2}/tenants/${id}/child`, { device_limit: newLimit, name }).catch((err) => commonErrorHandler(err, `Device Limit cannot be changed`, dispatch)).then(
|
|
4362
|
+
() => Promise.all([
|
|
4363
|
+
dispatch(setSnackbar4("Device Limit was changed successfully")),
|
|
4364
|
+
dispatch(getUserOrganization()),
|
|
4365
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4366
|
+
])
|
|
4367
|
+
)
|
|
4368
|
+
);
|
|
4369
|
+
var removeTenant = (0, import_toolkit22.createAsyncThunk)(
|
|
4370
|
+
`${sliceName6}/editDeviceLimit`,
|
|
4371
|
+
({ id }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${id}/remove/start`).catch((err) => commonErrorHandler(err, `There was an error removing the tenant`, dispatch)).then(
|
|
4372
|
+
() => Promise.all([
|
|
4373
|
+
dispatch(setSnackbar4("The tenant was removed successfully")),
|
|
4374
|
+
dispatch(getUserOrganization()),
|
|
4375
|
+
new Promise((resolve) => setTimeout(() => resolve(dispatch(getTenants())), TIMEOUTS.oneSecond))
|
|
4376
|
+
])
|
|
4377
|
+
)
|
|
4378
|
+
);
|
|
4379
|
+
var getUserOrganization = (0, import_toolkit22.createAsyncThunk)(
|
|
4380
|
+
`${sliceName6}/getUserOrganization`,
|
|
4381
|
+
(_, { dispatch, getState }) => general_api_default.get(`${tenantadmApiUrlv1}/user/tenant`).then((res) => {
|
|
4314
4382
|
let tasks = [dispatch(actions6.setOrganization(res.data))];
|
|
4315
4383
|
const { addons, plan, trial } = res.data;
|
|
4316
4384
|
const { token } = getCurrentSession(getState());
|
|
@@ -4322,15 +4390,18 @@ var getUserOrganization = (0, import_toolkit22.createAsyncThunk)(`${sliceName6}/
|
|
|
4322
4390
|
tasks.push(dispatch(setAnnouncement(tenantDataDivergedMessage)));
|
|
4323
4391
|
}
|
|
4324
4392
|
return Promise.all(tasks);
|
|
4325
|
-
})
|
|
4326
|
-
|
|
4393
|
+
})
|
|
4394
|
+
);
|
|
4327
4395
|
var sendSupportMessage = (0, import_toolkit22.createAsyncThunk)(
|
|
4328
4396
|
`${sliceName6}/sendSupportMessage`,
|
|
4329
4397
|
(content, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, content).catch((err) => commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback)).then(() => Promise.resolve(dispatch(setSnackbar4({ message: "Your request was sent successfully", autoHideDuration: TIMEOUTS.fiveSeconds }))))
|
|
4330
4398
|
);
|
|
4331
4399
|
var requestPlanChange = (0, import_toolkit22.createAsyncThunk)(
|
|
4332
4400
|
`${sliceName6}/requestPlanChange`,
|
|
4333
|
-
({ content, tenantId }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(
|
|
4401
|
+
({ content, tenantId }, { dispatch, rejectWithValue }) => general_api_default.post(`${tenantadmApiUrlv2}/tenants/${tenantId}/plan`, content).catch(async (err) => {
|
|
4402
|
+
await commonErrorHandler(err, "There was an error sending your request", dispatch, commonErrorFallback);
|
|
4403
|
+
rejectWithValue(err);
|
|
4404
|
+
}).then(() => Promise.resolve(dispatch(setSnackbar4({ message: "Your request was sent successfully", autoHideDuration: TIMEOUTS.fiveSeconds }))))
|
|
4334
4405
|
);
|
|
4335
4406
|
var downloadLicenseReport = (0, import_toolkit22.createAsyncThunk)(
|
|
4336
4407
|
`${sliceName6}/downloadLicenseReport`,
|
|
@@ -4422,9 +4493,22 @@ var getSsoConfigs = (0, import_toolkit22.createAsyncThunk)(
|
|
|
4422
4493
|
)
|
|
4423
4494
|
);
|
|
4424
4495
|
|
|
4425
|
-
// src/
|
|
4496
|
+
// src/locationutils.ts
|
|
4426
4497
|
var import_helpers12 = require("@northern.tech/utils/helpers");
|
|
4427
|
-
var
|
|
4498
|
+
var defaultSelector = (result) => result[0];
|
|
4499
|
+
var commonFields = {
|
|
4500
|
+
...Object.keys(DEVICE_LIST_DEFAULTS).reduce((accu, key) => ({ ...accu, [key]: { parse: Number, select: defaultSelector, target: key } }), {}),
|
|
4501
|
+
id: { parse: String, select: (i) => i, target: "id" },
|
|
4502
|
+
issues: { parse: void 0, select: defaultSelector, target: "selectedIssues" },
|
|
4503
|
+
open: { parse: Boolean, select: defaultSelector, target: "open" }
|
|
4504
|
+
};
|
|
4505
|
+
var formatReleases = ({ pageState: { searchTerm, selectedTags = [], tab, type } }) => Object.entries({ name: searchTerm, tab, type }).reduce(
|
|
4506
|
+
(accu, [key, value]) => value ? [...accu, `${key}=${value}`] : accu,
|
|
4507
|
+
selectedTags.map((tag) => `tag=${tag}`)
|
|
4508
|
+
).join("&");
|
|
4509
|
+
|
|
4510
|
+
// src/releasesSlice/thunks.ts
|
|
4511
|
+
var import_helpers13 = require("@northern.tech/utils/helpers");
|
|
4428
4512
|
var import_toolkit23 = require("@reduxjs/toolkit");
|
|
4429
4513
|
var import_axios3 = require("axios");
|
|
4430
4514
|
var import_uuid2 = require("uuid");
|
|
@@ -4432,7 +4516,7 @@ var { setSnackbar: setSnackbar5, initUpload: initUpload2, uploadProgress: upload
|
|
|
4432
4516
|
var { page: defaultPage5, perPage: defaultPerPage5 } = DEVICE_LIST_DEFAULTS;
|
|
4433
4517
|
var sortingDefaults = { direction: SORTING_OPTIONS.desc, key: "modified" };
|
|
4434
4518
|
var flattenRelease = (release, stateRelease) => {
|
|
4435
|
-
const updatedArtifacts = release.artifacts?.sort((0,
|
|
4519
|
+
const updatedArtifacts = release.artifacts?.sort((0, import_helpers13.customSort)(true, "modified")) || [];
|
|
4436
4520
|
const { artifacts, deviceTypes, modified } = updatedArtifacts.reduce(
|
|
4437
4521
|
(accu, item) => {
|
|
4438
4522
|
accu.deviceTypes.push(...item.device_types_compatible);
|
|
@@ -4446,7 +4530,7 @@ var flattenRelease = (release, stateRelease) => {
|
|
|
4446
4530
|
},
|
|
4447
4531
|
{ artifacts: [], deviceTypes: [], modified: void 0 }
|
|
4448
4532
|
);
|
|
4449
|
-
return { ...stateRelease, ...release, artifacts, device_types_compatible: deviceTypes.filter(
|
|
4533
|
+
return { ...stateRelease, ...release, artifacts, device_types_compatible: deviceTypes.filter(import_helpers13.duplicateFilter), modified };
|
|
4450
4534
|
};
|
|
4451
4535
|
var reduceReceivedReleases = (releases, stateReleasesById) => releases.reduce((accu, release) => {
|
|
4452
4536
|
const stateRelease = stateReleasesById[release.name] || {};
|
|
@@ -4470,7 +4554,7 @@ var getArtifactInstallCount = (0, import_toolkit23.createAsyncThunk)(`${sliceNam
|
|
|
4470
4554
|
}
|
|
4471
4555
|
const releaseArtifacts = [...release.artifacts];
|
|
4472
4556
|
const artifact = releaseArtifacts[index];
|
|
4473
|
-
const { key, name, version } = (0,
|
|
4557
|
+
const { key, name, version } = (0, import_helpers13.extractSoftwareItem)(artifact.artifact_provides) ?? {};
|
|
4474
4558
|
const attribute = `${key}${name ? `.${name}` : ""}.version`;
|
|
4475
4559
|
const { filterTerms } = convertDeviceListStateToFilters({
|
|
4476
4560
|
filters: [{ ...emptyFilter, key: attribute, value: version, scope: "inventory" }]
|
|
@@ -4588,9 +4672,12 @@ var editArtifact = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4588
4672
|
if (!release || index === -1) {
|
|
4589
4673
|
return dispatch(getReleases());
|
|
4590
4674
|
}
|
|
4591
|
-
|
|
4675
|
+
const updatedRelease = {
|
|
4676
|
+
...release,
|
|
4677
|
+
artifacts: release.artifacts.map((artifact, i) => i === index ? { ...artifact, description: body.description } : artifact)
|
|
4678
|
+
};
|
|
4592
4679
|
return Promise.all([
|
|
4593
|
-
dispatch(actions7.receiveRelease(
|
|
4680
|
+
dispatch(actions7.receiveRelease(updatedRelease)),
|
|
4594
4681
|
dispatch(setSnackbar5("Artifact details were updated successfully.", TIMEOUTS.fiveSeconds, "")),
|
|
4595
4682
|
dispatch(getRelease(release.name)),
|
|
4596
4683
|
dispatch(selectRelease(release.name))
|
|
@@ -4643,7 +4730,7 @@ var setReleasesListState = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}
|
|
|
4643
4730
|
let tasks = [];
|
|
4644
4731
|
const { isLoading: currentLoading, ...currentRequestState } = currentState;
|
|
4645
4732
|
const { isLoading: selectionLoading, ...selectionRequestState } = nextState;
|
|
4646
|
-
if (!(0,
|
|
4733
|
+
if (!(0, import_helpers13.deepCompare)(currentRequestState, selectionRequestState)) {
|
|
4647
4734
|
nextState.isLoading = true;
|
|
4648
4735
|
tasks.push(dispatch(getReleases(nextState)).finally(() => dispatch(setReleasesListState({ isLoading: false }))));
|
|
4649
4736
|
}
|
|
@@ -4653,7 +4740,7 @@ var setReleasesListState = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}
|
|
|
4653
4740
|
var releaseListRetrieval = (config) => {
|
|
4654
4741
|
const { searchTerm = "", page = defaultPage5, perPage = defaultPerPage5, sort = sortingDefaults, selectedTags = [], type = "" } = config;
|
|
4655
4742
|
const { key: attribute, direction } = sort;
|
|
4656
|
-
const filterQuery =
|
|
4743
|
+
const filterQuery = formatReleases({ pageState: { searchTerm, selectedTags } });
|
|
4657
4744
|
const updateType = type ? `update_type=${type}` : "";
|
|
4658
4745
|
const sorting = attribute ? `sort=${attribute}:${direction}`.toLowerCase() : "";
|
|
4659
4746
|
return general_api_default.get(
|
|
@@ -4663,7 +4750,7 @@ var releaseListRetrieval = (config) => {
|
|
|
4663
4750
|
var deductSearchState = (receivedReleases, config, total, state) => {
|
|
4664
4751
|
let releaseListState = { ...state.releasesList };
|
|
4665
4752
|
const { searchTerm, searchOnly, sort = {}, selectedTags = [], type } = config;
|
|
4666
|
-
const flattenedReleases = Object.values(receivedReleases).sort((0,
|
|
4753
|
+
const flattenedReleases = Object.values(receivedReleases).sort((0, import_helpers13.customSort)(sort.direction === SORTING_OPTIONS.desc, sort.key));
|
|
4667
4754
|
const releaseIds = flattenedReleases.map((item) => item.name);
|
|
4668
4755
|
const isFiltering = !!(selectedTags.length || type || searchTerm);
|
|
4669
4756
|
if (searchOnly) {
|
|
@@ -4691,33 +4778,32 @@ var getReleases = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getRelea
|
|
|
4691
4778
|
return Promise.all(tasks);
|
|
4692
4779
|
}).catch((err) => commonErrorHandler(err, `Please check your connection`, dispatch));
|
|
4693
4780
|
});
|
|
4694
|
-
var getRelease = (0, import_toolkit23.createAsyncThunk)(
|
|
4695
|
-
`${
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
|
|
4702
|
-
|
|
4703
|
-
);
|
|
4781
|
+
var getRelease = (0, import_toolkit23.createAsyncThunk)(`${sliceName7}/getReleases`, async (name, { dispatch, getState }) => {
|
|
4782
|
+
const releaseResponse = await general_api_default.get(`${deploymentsApiUrlV2}/deployments/releases/${name}`);
|
|
4783
|
+
const { data: release } = releaseResponse;
|
|
4784
|
+
if (release) {
|
|
4785
|
+
const stateRelease = getReleasesById(getState())[release.name] || {};
|
|
4786
|
+
await dispatch(actions7.receiveRelease(flattenRelease(release, stateRelease)));
|
|
4787
|
+
}
|
|
4788
|
+
return Promise.resolve(null);
|
|
4789
|
+
});
|
|
4704
4790
|
var updateReleaseInfo = (0, import_toolkit23.createAsyncThunk)(
|
|
4705
4791
|
`${sliceName7}/updateReleaseInfo`,
|
|
4706
|
-
({ 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(
|
|
4707
|
-
|
|
4792
|
+
({ 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(
|
|
4793
|
+
() => Promise.all([
|
|
4708
4794
|
dispatch(actions7.receiveRelease({ ...getReleasesById(getState())[name], ...info, name })),
|
|
4709
4795
|
dispatch(setSnackbar5("Release details were updated successfully.", TIMEOUTS.fiveSeconds, ""))
|
|
4710
|
-
])
|
|
4711
|
-
|
|
4796
|
+
])
|
|
4797
|
+
)
|
|
4712
4798
|
);
|
|
4713
4799
|
var setReleaseTags = (0, import_toolkit23.createAsyncThunk)(
|
|
4714
4800
|
`${sliceName7}/setReleaseTags`,
|
|
4715
|
-
({ name, tags = [] }, { dispatch, getState }) => general_api_default.put(`${deploymentsApiUrlV2}/deployments/releases/${name}/tags`, tags).catch((err) => commonErrorHandler(err, `Release tags couldn't be set.`, dispatch)).then(
|
|
4716
|
-
|
|
4801
|
+
({ name, tags = [] }, { dispatch, getState }) => general_api_default.put(`${deploymentsApiUrlV2}/deployments/releases/${name}/tags`, tags).catch((err) => commonErrorHandler(err, `Release tags couldn't be set.`, dispatch)).then(
|
|
4802
|
+
() => Promise.all([
|
|
4717
4803
|
dispatch(actions7.receiveRelease({ ...getReleasesById(getState())[name], name, tags })),
|
|
4718
4804
|
dispatch(setSnackbar5("Release tags were set successfully.", TIMEOUTS.fiveSeconds, ""))
|
|
4719
|
-
])
|
|
4720
|
-
|
|
4805
|
+
])
|
|
4806
|
+
)
|
|
4721
4807
|
);
|
|
4722
4808
|
var getExistingReleaseTags = (0, import_toolkit23.createAsyncThunk)(
|
|
4723
4809
|
`${sliceName7}/getReleaseTags`,
|
|
@@ -4728,6 +4814,9 @@ var getUpdateTypes = (0, import_toolkit23.createAsyncThunk)(
|
|
|
4728
4814
|
(_, { dispatch }) => general_api_default.get(`${deploymentsApiUrlV2}/releases/all/types`).catch((err) => commonErrorHandler(err, `Existing update types couldn't be retrieved.`, dispatch)).then(({ data: types }) => Promise.resolve(dispatch(actions7.receiveReleaseTypes(types))))
|
|
4729
4815
|
);
|
|
4730
4816
|
|
|
4817
|
+
// src/usersSlice/thunks.ts
|
|
4818
|
+
var import_helptips = require("@northern.tech/common-ui/helptips");
|
|
4819
|
+
|
|
4731
4820
|
// src/api/users-api.ts
|
|
4732
4821
|
var import_axios4 = __toESM(require("axios"), 1);
|
|
4733
4822
|
var Api2 = {
|
|
@@ -4743,7 +4832,7 @@ var Api2 = {
|
|
|
4743
4832
|
var users_api_default = Api2;
|
|
4744
4833
|
|
|
4745
4834
|
// src/usersSlice/thunks.ts
|
|
4746
|
-
var
|
|
4835
|
+
var import_helpers14 = require("@northern.tech/utils/helpers");
|
|
4747
4836
|
var import_retrytimer = require("@northern.tech/utils/retrytimer");
|
|
4748
4837
|
var import_toolkit24 = require("@reduxjs/toolkit");
|
|
4749
4838
|
var import_md52 = __toESM(require("md5"), 1);
|
|
@@ -4751,7 +4840,7 @@ var import_universal_cookie5 = __toESM(require("universal-cookie"), 1);
|
|
|
4751
4840
|
var cookies5 = new import_universal_cookie5.default();
|
|
4752
4841
|
var { setAnnouncement: setAnnouncement2, setSnackbar: setSnackbar6 } = actions_default;
|
|
4753
4842
|
var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) => (dispatch) => {
|
|
4754
|
-
const errorText = (0,
|
|
4843
|
+
const errorText = (0, import_helpers14.extractErrorMessage)(err);
|
|
4755
4844
|
const is2FABackend = errorText.includes("2fa");
|
|
4756
4845
|
if (is2FABackend && !has2FA) {
|
|
4757
4846
|
return rejectWithValue({ error: "2fa code missing" });
|
|
@@ -4761,7 +4850,7 @@ var handleLoginError = (err, { token2fa: has2FA, password }, rejectWithValue) =>
|
|
|
4761
4850
|
}
|
|
4762
4851
|
const twoFAError = is2FABackend ? " and verification code" : "";
|
|
4763
4852
|
const errorMessage = `There was a problem logging in. Please check your email${twoFAError ? "," : " and"} password${twoFAError}. If you still have problems, contact an administrator.`;
|
|
4764
|
-
return Promise.reject(dispatch(setSnackbar6((0,
|
|
4853
|
+
return Promise.reject(dispatch(setSnackbar6({ message: (0, import_helpers14.preformatWithRequestID)(err.response, errorMessage), action: "Copy to clipboard" })));
|
|
4765
4854
|
};
|
|
4766
4855
|
var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4767
4856
|
`${sliceName8}/loginUser`,
|
|
@@ -4785,19 +4874,16 @@ var loginUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4785
4874
|
const expiresAt = stayLoggedIn ? void 0 : now.toISOString();
|
|
4786
4875
|
setSessionInfo({ token, expiresAt });
|
|
4787
4876
|
cookies5.remove("JWT", { path: "/" });
|
|
4788
|
-
return (
|
|
4789
|
-
|
|
4790
|
-
Promise.
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
window.
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4799
|
-
})
|
|
4800
|
-
);
|
|
4877
|
+
return dispatch(getUser(OWN_USER_ID)).unwrap().catch((e) => {
|
|
4878
|
+
cleanUp();
|
|
4879
|
+
return Promise.reject(dispatch(setSnackbar6((0, import_helpers14.extractErrorMessage)(e))));
|
|
4880
|
+
}).then(() => {
|
|
4881
|
+
window.sessionStorage.removeItem("pendings-redirect");
|
|
4882
|
+
if (window.location.pathname !== "/ui/") {
|
|
4883
|
+
window.location.replace("/ui/");
|
|
4884
|
+
}
|
|
4885
|
+
return Promise.resolve(dispatch(actions8.successfullyLoggedIn({ expiresAt, token })));
|
|
4886
|
+
});
|
|
4801
4887
|
})
|
|
4802
4888
|
);
|
|
4803
4889
|
var logoutUser = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/logoutUser`, (_, { dispatch, getState }) => {
|
|
@@ -4815,6 +4901,7 @@ var switchUserOrganization = (0, import_toolkit24.createAsyncThunk)(`${sliceName
|
|
|
4815
4901
|
return Promise.reject();
|
|
4816
4902
|
}
|
|
4817
4903
|
return general_api_default.get(`${useradmApiUrlv1}/users/tenants/${tenantId}/token`).then(({ data: token }) => {
|
|
4904
|
+
window.sessionStorage.setItem("tenantChanged", "true");
|
|
4818
4905
|
setSessionInfo({ ...getSessionInfo(), token });
|
|
4819
4906
|
window.location.reload();
|
|
4820
4907
|
});
|
|
@@ -4855,11 +4942,18 @@ var verify2FA = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4855
4942
|
);
|
|
4856
4943
|
var getUserList = (0, import_toolkit24.createAsyncThunk)(
|
|
4857
4944
|
`${sliceName8}/getUserList`,
|
|
4858
|
-
(_, { dispatch }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4859
|
-
const
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4945
|
+
(_, { dispatch, getState }) => general_api_default.get(`${useradmApiUrlv1}/users`).then((res) => {
|
|
4946
|
+
const currentUsersById = getUsersById(getState());
|
|
4947
|
+
const users = res.data.reduce(
|
|
4948
|
+
(accu, item) => {
|
|
4949
|
+
accu[item.id] = {
|
|
4950
|
+
...accu[item.id],
|
|
4951
|
+
...item
|
|
4952
|
+
};
|
|
4953
|
+
return accu;
|
|
4954
|
+
},
|
|
4955
|
+
{ ...currentUsersById }
|
|
4956
|
+
);
|
|
4863
4957
|
return dispatch(actions8.receivedUserList(users));
|
|
4864
4958
|
}).catch((err) => commonErrorHandler(err, `Users couldn't be loaded.`, dispatch, commonErrorFallback))
|
|
4865
4959
|
);
|
|
@@ -4868,9 +4962,7 @@ var getUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4868
4962
|
(id, { dispatch, rejectWithValue }) => general_api_default.get(`${useradmApiUrlv1}/users/${id}`).then(
|
|
4869
4963
|
({ data: user }) => Promise.all([
|
|
4870
4964
|
dispatch(actions8.receivedUser(user)),
|
|
4871
|
-
// @ts-ignore
|
|
4872
4965
|
dispatch(setHideAnnouncement({ shouldHide: false, userId: user.id })),
|
|
4873
|
-
// @ts-ignore
|
|
4874
4966
|
dispatch(updateUserColumnSettings({ currentUserId: user.id })),
|
|
4875
4967
|
user
|
|
4876
4968
|
])
|
|
@@ -4917,10 +5009,7 @@ var createUser = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4917
5009
|
);
|
|
4918
5010
|
var removeUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4919
5011
|
`${sliceName8}/removeUser`,
|
|
4920
|
-
(userId, { dispatch }) => (
|
|
4921
|
-
// @ts-ignore
|
|
4922
|
-
general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar6(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
4923
|
-
)
|
|
5012
|
+
(userId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/users/${userId}`).then(() => Promise.all([dispatch(actions8.removedUser(userId)), dispatch(getUserList()), dispatch(setSnackbar6(userActions.remove.successMessage))])).catch((err) => userActionErrorHandler(err, "remove", dispatch))
|
|
4924
5013
|
);
|
|
4925
5014
|
var editUser = (0, import_toolkit24.createAsyncThunk)(
|
|
4926
5015
|
`${sliceName8}/editUser`,
|
|
@@ -4941,7 +5030,7 @@ var enableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
|
4941
5030
|
);
|
|
4942
5031
|
var disableUser2fa = (0, import_toolkit24.createAsyncThunk)(
|
|
4943
5032
|
`${sliceName8}/disableUser2fa`,
|
|
4944
|
-
(userId = OWN_USER_ID, { dispatch }) => general_api_default.post(`${useradmApiUrlv1}/users/${userId}/2fa/disable`).catch((err) => commonErrorHandler(err, `There was an error disabling Two Factor authentication for the user.`, dispatch)).then(() => Promise.
|
|
5033
|
+
(userId = OWN_USER_ID, { dispatch }) => general_api_default.post(`${useradmApiUrlv1}/users/${userId}/2fa/disable`).catch((err) => commonErrorHandler(err, `There was an error disabling Two Factor authentication for the user.`, dispatch)).then(() => Promise.all([dispatch(getUser(userId)), dispatch(actions8.receivedQrCode(null))]))
|
|
4945
5034
|
);
|
|
4946
5035
|
var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).reduce(
|
|
4947
5036
|
(accu, [area, definition]) => {
|
|
@@ -4955,9 +5044,9 @@ var mapHttpPermission = (permission) => Object.entries(uiPermissionsByArea).redu
|
|
|
4955
5044
|
permissionsAccu.push(uiPermission.value);
|
|
4956
5045
|
}
|
|
4957
5046
|
return permissionsAccu;
|
|
4958
|
-
}, []).filter(
|
|
5047
|
+
}, []).filter(import_helpers14.duplicateFilter);
|
|
4959
5048
|
if (Array.isArray(accu[area])) {
|
|
4960
|
-
accu[area] = [...accu[area], ...collector].filter(
|
|
5049
|
+
accu[area] = [...accu[area], ...collector].filter(import_helpers14.duplicateFilter);
|
|
4961
5050
|
} else {
|
|
4962
5051
|
accu[area] = mergePermissions(accu[area], { [scopedPermissionAreas[area].excessiveAccessSelector]: collector });
|
|
4963
5052
|
}
|
|
@@ -4982,7 +5071,7 @@ var permissionActionTypes = {
|
|
|
4982
5071
|
};
|
|
4983
5072
|
var combinePermissions = (existingPermissions, additionalPermissions = {}) => Object.entries(additionalPermissions).reduce((accu, [name, permissions]) => {
|
|
4984
5073
|
let maybeExistingPermissions = accu[name] || [];
|
|
4985
|
-
accu[name] = [...permissions, ...maybeExistingPermissions].filter(
|
|
5074
|
+
accu[name] = [...permissions, ...maybeExistingPermissions].filter(import_helpers14.duplicateFilter);
|
|
4986
5075
|
return accu;
|
|
4987
5076
|
}, existingPermissions);
|
|
4988
5077
|
var tryParseCustomPermission = (permission) => {
|
|
@@ -5007,7 +5096,7 @@ var isEmptyPermissionSet = (permissionSet) => !Object.values(permissionSet).redu
|
|
|
5007
5096
|
if (Array.isArray(permissions)) {
|
|
5008
5097
|
return accu || !!permissions.length;
|
|
5009
5098
|
}
|
|
5010
|
-
return accu || !(0,
|
|
5099
|
+
return accu || !(0, import_helpers14.isEmpty)(permissions);
|
|
5011
5100
|
}, false);
|
|
5012
5101
|
var parseRolePermissions = ({ permission_sets_with_scope = [], permissions = [] }, permissionSets) => {
|
|
5013
5102
|
const preliminaryResult = permission_sets_with_scope.reduce(
|
|
@@ -5075,7 +5164,7 @@ var getPermissionSets = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5075
5164
|
return collector;
|
|
5076
5165
|
}
|
|
5077
5166
|
if (permissionSet2 === permissionSetObject.name) {
|
|
5078
|
-
collector[area] = [...collector[area], item.value].filter(
|
|
5167
|
+
collector[area] = [...collector[area], item.value].filter(import_helpers14.duplicateFilter);
|
|
5079
5168
|
}
|
|
5080
5169
|
return collector;
|
|
5081
5170
|
}, accu2),
|
|
@@ -5094,7 +5183,6 @@ var getPermissionSets = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5094
5183
|
accu[permissionSet.name] = permissionSetObject;
|
|
5095
5184
|
return accu;
|
|
5096
5185
|
},
|
|
5097
|
-
// @ts-ignore
|
|
5098
5186
|
{ ...getState().users.permissionSetsById }
|
|
5099
5187
|
);
|
|
5100
5188
|
return Promise.all([dispatch(actions8.receivedPermissionSets(permissionSets)), permissionSets]);
|
|
@@ -5144,7 +5232,7 @@ var transformAreaRoleDataToScopedPermissionsSets = (area, areaPermissions, exces
|
|
|
5144
5232
|
if (value.includes(excessiveAccessSelector)) {
|
|
5145
5233
|
return { name };
|
|
5146
5234
|
}
|
|
5147
|
-
return { name, scope: { ...scope, value: value.filter(
|
|
5235
|
+
return { name, scope: { ...scope, value: value.filter(import_helpers14.duplicateFilter) } };
|
|
5148
5236
|
});
|
|
5149
5237
|
};
|
|
5150
5238
|
var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
@@ -5187,7 +5275,6 @@ var transformRoleDataToRole = (roleData, roleState = {}) => {
|
|
|
5187
5275
|
role: {
|
|
5188
5276
|
...emptyRole,
|
|
5189
5277
|
name,
|
|
5190
|
-
// @ts-ignore
|
|
5191
5278
|
description: description ? description : roleState.description,
|
|
5192
5279
|
uiPermissions: {
|
|
5193
5280
|
...emptyUiPermissions,
|
|
@@ -5230,10 +5317,7 @@ var editRole = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/editRole`,
|
|
|
5230
5317
|
});
|
|
5231
5318
|
var removeRole = (0, import_toolkit24.createAsyncThunk)(
|
|
5232
5319
|
`${sliceName8}/removeRole`,
|
|
5233
|
-
(roleId, { dispatch }) => (
|
|
5234
|
-
// @ts-ignore
|
|
5235
|
-
general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar6(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
5236
|
-
)
|
|
5320
|
+
(roleId, { dispatch }) => general_api_default.delete(`${useradmApiUrlv2}/roles/${roleId}`).then(() => Promise.all([dispatch(actions8.removedRole(roleId)), dispatch(getRoles()), dispatch(setSnackbar6(roleActions.remove.successMessage))])).catch((err) => roleActionErrorHandler(err, "remove", dispatch))
|
|
5237
5321
|
);
|
|
5238
5322
|
var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
5239
5323
|
`${sliceName8}/getGlobalSettings`,
|
|
@@ -5244,7 +5328,6 @@ var getGlobalSettings2 = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5244
5328
|
);
|
|
5245
5329
|
var saveGlobalSettings = (0, import_toolkit24.createAsyncThunk)(
|
|
5246
5330
|
`${sliceName8}/saveGlobalSettings`,
|
|
5247
|
-
// @ts-ignore
|
|
5248
5331
|
({ beOptimistic = false, notify = false, ...settings }, { dispatch, getState }) => {
|
|
5249
5332
|
if (!window.sessionStorage.getItem(settingsKeys.initialized) && !beOptimistic) {
|
|
5250
5333
|
return;
|
|
@@ -5290,11 +5373,9 @@ var saveUserSettings = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/sav
|
|
|
5290
5373
|
const tooltipState = getTooltipsState(getState());
|
|
5291
5374
|
const updatedSettings = {
|
|
5292
5375
|
...userSettings,
|
|
5293
|
-
// @ts-ignore
|
|
5294
5376
|
...settings,
|
|
5295
5377
|
onboarding: {
|
|
5296
5378
|
...onboardingState,
|
|
5297
|
-
// @ts-ignore
|
|
5298
5379
|
...settings.onboarding
|
|
5299
5380
|
},
|
|
5300
5381
|
tooltips: tooltipState
|
|
@@ -5338,10 +5419,7 @@ var generateToken = (0, import_toolkit24.createAsyncThunk)(
|
|
|
5338
5419
|
);
|
|
5339
5420
|
var revokeToken = (0, import_toolkit24.createAsyncThunk)(
|
|
5340
5421
|
`${sliceName8}/revokeToken`,
|
|
5341
|
-
(token, { dispatch }) => (
|
|
5342
|
-
// @ts-ignore
|
|
5343
|
-
general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5344
|
-
)
|
|
5422
|
+
(token, { dispatch }) => general_api_default.delete(`${useradmApiUrlv1}/settings/tokens/${token.id}`).then(() => Promise.resolve(dispatch(getTokens())))
|
|
5345
5423
|
);
|
|
5346
5424
|
var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/setTooltipReadState`, ({ persist, ...remainder }, { dispatch }) => {
|
|
5347
5425
|
let tasks = [dispatch(actions8.setTooltipState(remainder))];
|
|
@@ -5350,23 +5428,20 @@ var setTooltipReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/
|
|
|
5350
5428
|
}
|
|
5351
5429
|
return Promise.all(tasks);
|
|
5352
5430
|
});
|
|
5353
|
-
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (
|
|
5354
|
-
const updatedTips =
|
|
5431
|
+
var setAllTooltipsReadState = (0, import_toolkit24.createAsyncThunk)(`${sliceName8}/toggleHelptips`, (readState = READ_STATES.read, { dispatch }) => {
|
|
5432
|
+
const updatedTips = Object.keys(import_helptips.HELPTOOLTIPS).reduce((accu, id) => ({ ...accu, [id]: { readState } }), {});
|
|
5355
5433
|
return Promise.resolve(dispatch(actions8.setTooltipsState(updatedTips))).then(() => dispatch(saveUserSettings()));
|
|
5356
5434
|
});
|
|
5357
5435
|
var submitFeedback = (0, import_toolkit24.createAsyncThunk)(
|
|
5358
5436
|
`${sliceName8}/submitFeedback`,
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5368
|
-
});
|
|
5369
|
-
}
|
|
5437
|
+
({ satisfaction, feedback, ...meta }, { dispatch }) => general_api_default.post(`${tenantadmApiUrlv2}/contact/support`, {
|
|
5438
|
+
subject: "feedback submission",
|
|
5439
|
+
body: JSON.stringify({ feedback, satisfaction, meta })
|
|
5440
|
+
}).then(() => {
|
|
5441
|
+
const today = /* @__PURE__ */ new Date();
|
|
5442
|
+
dispatch(saveUserSettings({ feedbackCollectedAt: today.toISOString().split("T")[0] }));
|
|
5443
|
+
setTimeout(() => dispatch(actions8.setShowFeedbackDialog(false)), TIMEOUTS.threeSeconds);
|
|
5444
|
+
})
|
|
5370
5445
|
);
|
|
5371
5446
|
|
|
5372
5447
|
// src/storehooks.ts
|
|
@@ -5404,7 +5479,6 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5404
5479
|
metaMenderVersion,
|
|
5405
5480
|
services = {}
|
|
5406
5481
|
} = mender_environment;
|
|
5407
|
-
onboardingComplete = stringToBoolean(features.isEnterprise) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5408
5482
|
demoArtifactPort = port || demoArtifactPort;
|
|
5409
5483
|
environmentData = environmentDatas.reduce((accu, flag) => ({ ...accu, [flag]: mender_environment[flag] || state.app[flag] }), {});
|
|
5410
5484
|
environmentFeatures = {
|
|
@@ -5412,6 +5486,7 @@ var parseEnvironmentInfo = () => (dispatch, getState) => {
|
|
|
5412
5486
|
isHosted: features.isHosted || window.location.hostname.includes("hosted.mender.io"),
|
|
5413
5487
|
isDemoMode: stringToBoolean(isDemoMode || features.isDemoMode)
|
|
5414
5488
|
};
|
|
5489
|
+
onboardingComplete = !stringToBoolean(features.isHosted) || stringToBoolean(disableOnboarding) || onboardingComplete;
|
|
5415
5490
|
versionInfo = {
|
|
5416
5491
|
docs: isNaN(integrationVersion.charAt(0)) ? "" : integrationVersion.split(".").slice(0, 2).join("."),
|
|
5417
5492
|
remainder: {
|
|
@@ -5446,18 +5521,18 @@ var maybeAddOnboardingTasks = ({ devicesByStatus, dispatch, onboardingState, tas
|
|
|
5446
5521
|
}, tasks);
|
|
5447
5522
|
};
|
|
5448
5523
|
var useAppInit = (userId) => {
|
|
5449
|
-
const dispatch = (0,
|
|
5524
|
+
const dispatch = (0, import_react_redux2.useDispatch)();
|
|
5450
5525
|
const [coreInitDone, setCoreInitDone] = (0, import_react.useState)(false);
|
|
5451
|
-
const isEnterprise = (0,
|
|
5452
|
-
const { hasMultitenancy, isHosted } = (0,
|
|
5453
|
-
const devicesByStatus = (0,
|
|
5454
|
-
const onboardingState = (0,
|
|
5455
|
-
let { columnSelection = [], trackingConsentGiven: hasTrackingEnabled, tooltips = {} } = (0,
|
|
5456
|
-
const { canManageUsers } = (0,
|
|
5457
|
-
const { interval, intervalUnit } = (0,
|
|
5458
|
-
const { id_attribute } = (0,
|
|
5459
|
-
const { identityAttributes } = (0,
|
|
5460
|
-
const isServiceProvider = (0,
|
|
5526
|
+
const isEnterprise = (0, import_react_redux2.useSelector)(getIsEnterprise);
|
|
5527
|
+
const { hasMultitenancy, isHosted } = (0, import_react_redux2.useSelector)(getFeatures);
|
|
5528
|
+
const devicesByStatus = (0, import_react_redux2.useSelector)(getDevicesByStatus);
|
|
5529
|
+
const onboardingState = (0, import_react_redux2.useSelector)(getOnboardingState);
|
|
5530
|
+
let { columnSelection = [], trackingConsentGiven: hasTrackingEnabled, tooltips = {} } = (0, import_react_redux2.useSelector)(getUserSettings);
|
|
5531
|
+
const { canManageUsers } = (0, import_react_redux2.useSelector)(getUserCapabilities);
|
|
5532
|
+
const { interval, intervalUnit } = (0, import_react_redux2.useSelector)(getOfflineThresholdSettings);
|
|
5533
|
+
const { id_attribute } = (0, import_react_redux2.useSelector)(getGlobalSettings);
|
|
5534
|
+
const { identityAttributes } = (0, import_react_redux2.useSelector)(getSortedFilteringAttributes);
|
|
5535
|
+
const isServiceProvider = (0, import_react_redux2.useSelector)(getIsServiceProvider);
|
|
5461
5536
|
const coreInitRunning = (0, import_react.useRef)(false);
|
|
5462
5537
|
const fullInitRunning = (0, import_react.useRef)(false);
|
|
5463
5538
|
const retrieveCoreData = (0, import_react.useCallback)(() => {
|
|
@@ -5540,7 +5615,7 @@ var useAppInit = (userId) => {
|
|
|
5540
5615
|
tooltips
|
|
5541
5616
|
]);
|
|
5542
5617
|
const initializeAppData = (0, import_react.useCallback)(
|
|
5543
|
-
() => retrieveAppData().then(interpretAppData).catch((err) => console.log((0,
|
|
5618
|
+
() => retrieveAppData().then(interpretAppData).catch((err) => console.log((0, import_helpers15.extractErrorMessage)(err))).then(() => dispatch(getOnboardingState2())),
|
|
5544
5619
|
[dispatch, retrieveAppData, interpretAppData]
|
|
5545
5620
|
);
|
|
5546
5621
|
(0, import_react.useEffect)(() => {
|