@flightctl/ui-components 0.9.2 → 0.10.0-rc1

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.
Files changed (242) hide show
  1. package/dist/src/components/DetailsPage/DetailsPage.d.ts +2 -1
  2. package/dist/src/components/DetailsPage/DetailsPage.d.ts.map +1 -1
  3. package/dist/src/components/DetailsPage/DetailsPage.js +2 -1
  4. package/dist/src/components/DetailsPage/DetailsPage.js.map +1 -1
  5. package/dist/src/components/DetailsPage/DetailsPageActions.d.ts +10 -0
  6. package/dist/src/components/DetailsPage/DetailsPageActions.d.ts.map +1 -1
  7. package/dist/src/components/DetailsPage/DetailsPageActions.js +23 -1
  8. package/dist/src/components/DetailsPage/DetailsPageActions.js.map +1 -1
  9. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.d.ts.map +1 -1
  10. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +29 -3
  11. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -1
  12. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.d.ts.map +1 -1
  13. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +0 -4
  14. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -1
  15. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.d.ts.map +1 -1
  16. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.js +8 -2
  17. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.js.map +1 -1
  18. package/dist/src/components/Device/DevicesPage/DecommissionedDeviceTableRow.d.ts.map +1 -1
  19. package/dist/src/components/Device/DevicesPage/DecommissionedDeviceTableRow.js +1 -3
  20. package/dist/src/components/Device/DevicesPage/DecommissionedDeviceTableRow.js.map +1 -1
  21. package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.d.ts.map +1 -1
  22. package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js +0 -3
  23. package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js.map +1 -1
  24. package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.d.ts.map +1 -1
  25. package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js +3 -1
  26. package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js.map +1 -1
  27. package/dist/src/components/Device/DevicesPage/DevicesPage.d.ts.map +1 -1
  28. package/dist/src/components/Device/DevicesPage/DevicesPage.js +1 -1
  29. package/dist/src/components/Device/DevicesPage/DevicesPage.js.map +1 -1
  30. package/dist/src/components/Device/DevicesPage/EnrolledDeviceTableRow.d.ts +3 -1
  31. package/dist/src/components/Device/DevicesPage/EnrolledDeviceTableRow.d.ts.map +1 -1
  32. package/dist/src/components/Device/DevicesPage/EnrolledDeviceTableRow.js +12 -4
  33. package/dist/src/components/Device/DevicesPage/EnrolledDeviceTableRow.js.map +1 -1
  34. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.d.ts +2 -1
  35. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.d.ts.map +1 -1
  36. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js +7 -6
  37. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js.map +1 -1
  38. package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.js +1 -1
  39. package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.js.map +1 -1
  40. package/dist/src/components/Events/useEvents.d.ts.map +1 -1
  41. package/dist/src/components/Events/useEvents.js +12 -0
  42. package/dist/src/components/Events/useEvents.js.map +1 -1
  43. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js +1 -1
  44. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js.map +1 -1
  45. package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.d.ts.map +1 -1
  46. package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.js +4 -3
  47. package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.js.map +1 -1
  48. package/dist/src/components/Fleet/FleetDetails/FleetDevicesCharts.d.ts.map +1 -1
  49. package/dist/src/components/Fleet/FleetDetails/FleetDevicesCharts.js +7 -1
  50. package/dist/src/components/Fleet/FleetDetails/FleetDevicesCharts.js.map +1 -1
  51. package/dist/src/components/Fleet/FleetDetails/FleetRestoreBanner.d.ts +8 -0
  52. package/dist/src/components/Fleet/FleetDetails/FleetRestoreBanner.d.ts.map +1 -0
  53. package/dist/src/components/Fleet/FleetDetails/FleetRestoreBanner.js +36 -0
  54. package/dist/src/components/Fleet/FleetDetails/FleetRestoreBanner.js.map +1 -0
  55. package/dist/src/components/Fleet/FleetsPage.d.ts.map +1 -1
  56. package/dist/src/components/Fleet/FleetsPage.js +2 -0
  57. package/dist/src/components/Fleet/FleetsPage.js.map +1 -1
  58. package/dist/src/components/ListPage/ListPageActions.d.ts +3 -2
  59. package/dist/src/components/ListPage/ListPageActions.d.ts.map +1 -1
  60. package/dist/src/components/ListPage/ListPageActions.js +27 -1
  61. package/dist/src/components/ListPage/ListPageActions.js.map +1 -1
  62. package/dist/src/components/Masthead/CommandLineToolsPage.d.ts.map +1 -1
  63. package/dist/src/components/Masthead/CommandLineToolsPage.js +18 -14
  64. package/dist/src/components/Masthead/CommandLineToolsPage.js.map +1 -1
  65. package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.d.ts.map +1 -1
  66. package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.js +15 -5
  67. package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.js.map +1 -1
  68. package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.d.ts.map +1 -1
  69. package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js +7 -1
  70. package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js.map +1 -1
  71. package/dist/src/components/OverviewPage/Overview.d.ts.map +1 -1
  72. package/dist/src/components/OverviewPage/Overview.js +4 -2
  73. package/dist/src/components/OverviewPage/Overview.js.map +1 -1
  74. package/dist/src/components/Status/StatusDisplay.d.ts +3 -1
  75. package/dist/src/components/Status/StatusDisplay.d.ts.map +1 -1
  76. package/dist/src/components/Status/StatusDisplay.js +8 -8
  77. package/dist/src/components/Status/StatusDisplay.js.map +1 -1
  78. package/dist/src/components/SystemRestore/PendingSyncDevicesAlert.d.ts +7 -0
  79. package/dist/src/components/SystemRestore/PendingSyncDevicesAlert.d.ts.map +1 -0
  80. package/dist/src/components/SystemRestore/PendingSyncDevicesAlert.js +22 -0
  81. package/dist/src/components/SystemRestore/PendingSyncDevicesAlert.js.map +1 -0
  82. package/dist/src/components/SystemRestore/SuspendedDevicesAlert.d.ts +16 -0
  83. package/dist/src/components/SystemRestore/SuspendedDevicesAlert.d.ts.map +1 -0
  84. package/dist/src/components/SystemRestore/SuspendedDevicesAlert.js +75 -0
  85. package/dist/src/components/SystemRestore/SuspendedDevicesAlert.js.map +1 -0
  86. package/dist/src/components/SystemRestore/SystemRestoreBanners.css +6 -0
  87. package/dist/src/components/SystemRestore/SystemRestoreBanners.d.ts +28 -0
  88. package/dist/src/components/SystemRestore/SystemRestoreBanners.d.ts.map +1 -0
  89. package/dist/src/components/SystemRestore/SystemRestoreBanners.js +38 -0
  90. package/dist/src/components/SystemRestore/SystemRestoreBanners.js.map +1 -0
  91. package/dist/src/components/charts/utils.js +1 -1
  92. package/dist/src/components/charts/utils.js.map +1 -1
  93. package/dist/src/components/common/OrganizationGuard.d.ts +13 -0
  94. package/dist/src/components/common/OrganizationGuard.d.ts.map +1 -0
  95. package/dist/src/components/common/OrganizationGuard.js +106 -0
  96. package/dist/src/components/common/OrganizationGuard.js.map +1 -0
  97. package/dist/src/components/common/OrganizationSelector.d.ts +8 -0
  98. package/dist/src/components/common/OrganizationSelector.d.ts.map +1 -0
  99. package/dist/src/components/common/OrganizationSelector.js +92 -0
  100. package/dist/src/components/common/OrganizationSelector.js.map +1 -0
  101. package/dist/src/components/common/PageNavigation.d.ts +4 -0
  102. package/dist/src/components/common/PageNavigation.d.ts.map +1 -0
  103. package/dist/src/components/common/PageNavigation.js +46 -0
  104. package/dist/src/components/common/PageNavigation.js.map +1 -0
  105. package/dist/src/components/form/FilterSelect.css +3 -4
  106. package/dist/src/components/form/validations.d.ts +9 -0
  107. package/dist/src/components/form/validations.d.ts.map +1 -1
  108. package/dist/src/components/form/validations.js +12 -1
  109. package/dist/src/components/form/validations.js.map +1 -1
  110. package/dist/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.d.ts +15 -0
  111. package/dist/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.d.ts.map +1 -0
  112. package/dist/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.js +56 -0
  113. package/dist/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.js.map +1 -0
  114. package/dist/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.d.ts +7 -0
  115. package/dist/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.d.ts.map +1 -0
  116. package/dist/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.js +265 -0
  117. package/dist/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.js.map +1 -0
  118. package/dist/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.d.ts +9 -0
  119. package/dist/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.d.ts.map +1 -0
  120. package/dist/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.js +27 -0
  121. package/dist/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.js.map +1 -0
  122. package/dist/src/hooks/useAccessReview.d.ts.map +1 -1
  123. package/dist/src/hooks/useAccessReview.js +17 -4
  124. package/dist/src/hooks/useAccessReview.js.map +1 -1
  125. package/dist/src/hooks/useAlertsEnabled.d.ts +2 -0
  126. package/dist/src/hooks/useAlertsEnabled.d.ts.map +1 -0
  127. package/dist/src/hooks/useAlertsEnabled.js +50 -0
  128. package/dist/src/hooks/useAlertsEnabled.js.map +1 -0
  129. package/dist/src/hooks/useAppContext.d.ts +3 -6
  130. package/dist/src/hooks/useAppContext.d.ts.map +1 -1
  131. package/dist/src/hooks/useAppContext.js +1 -0
  132. package/dist/src/hooks/useAppContext.js.map +1 -1
  133. package/dist/src/hooks/useFetch.d.ts +6 -7
  134. package/dist/src/hooks/useFetch.d.ts.map +1 -1
  135. package/dist/src/hooks/useFetch.js +2 -3
  136. package/dist/src/hooks/useFetch.js.map +1 -1
  137. package/dist/src/hooks/useFetchPeriodically.d.ts.map +1 -1
  138. package/dist/src/hooks/useFetchPeriodically.js +4 -9
  139. package/dist/src/hooks/useFetchPeriodically.js.map +1 -1
  140. package/dist/src/hooks/useSystemRestoreContext.d.ts +16 -0
  141. package/dist/src/hooks/useSystemRestoreContext.d.ts.map +1 -0
  142. package/dist/src/hooks/useSystemRestoreContext.js +45 -0
  143. package/dist/src/hooks/useSystemRestoreContext.js.map +1 -0
  144. package/dist/src/types/extraTypes.d.ts +17 -18
  145. package/dist/src/types/extraTypes.d.ts.map +1 -1
  146. package/dist/src/types/extraTypes.js +1 -6
  147. package/dist/src/types/extraTypes.js.map +1 -1
  148. package/dist/src/types/rbac.d.ts +1 -0
  149. package/dist/src/types/rbac.d.ts.map +1 -1
  150. package/dist/src/types/rbac.js +1 -0
  151. package/dist/src/types/rbac.js.map +1 -1
  152. package/dist/src/utils/api.d.ts +2 -15
  153. package/dist/src/utils/api.d.ts.map +1 -1
  154. package/dist/src/utils/api.js +1 -40
  155. package/dist/src/utils/api.js.map +1 -1
  156. package/dist/src/utils/devices.d.ts +2 -0
  157. package/dist/src/utils/devices.d.ts.map +1 -1
  158. package/dist/src/utils/devices.js +11 -1
  159. package/dist/src/utils/devices.js.map +1 -1
  160. package/dist/src/utils/organizationStorage.d.ts +4 -0
  161. package/dist/src/utils/organizationStorage.d.ts.map +1 -0
  162. package/dist/src/utils/organizationStorage.js +18 -0
  163. package/dist/src/utils/organizationStorage.js.map +1 -0
  164. package/dist/src/utils/query.d.ts +2 -0
  165. package/dist/src/utils/query.d.ts.map +1 -1
  166. package/dist/src/utils/query.js +16 -0
  167. package/dist/src/utils/query.js.map +1 -1
  168. package/dist/src/utils/status/common.d.ts +1 -0
  169. package/dist/src/utils/status/common.d.ts.map +1 -1
  170. package/dist/src/utils/status/common.js.map +1 -1
  171. package/dist/src/utils/status/devices.d.ts +5 -0
  172. package/dist/src/utils/status/devices.d.ts.map +1 -1
  173. package/dist/src/utils/status/devices.js +44 -5
  174. package/dist/src/utils/status/devices.js.map +1 -1
  175. package/dist/src/utils/status/fleet.js +1 -1
  176. package/dist/src/utils/status/fleet.js.map +1 -1
  177. package/dist/src/utils/status/repository.js +1 -1
  178. package/dist/src/utils/status/repository.js.map +1 -1
  179. package/package.json +1 -1
  180. package/src/components/DetailsPage/DetailsPage.tsx +3 -0
  181. package/src/components/DetailsPage/DetailsPageActions.tsx +45 -0
  182. package/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx +57 -5
  183. package/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx +0 -5
  184. package/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.tsx +11 -3
  185. package/src/components/Device/DevicesPage/DecommissionedDeviceTableRow.tsx +0 -2
  186. package/src/components/Device/DevicesPage/DecommissionedDevicesTable.tsx +0 -3
  187. package/src/components/Device/DevicesPage/DeviceToolbarFilters.tsx +5 -1
  188. package/src/components/Device/DevicesPage/DevicesPage.tsx +1 -0
  189. package/src/components/Device/DevicesPage/EnrolledDeviceTableRow.tsx +15 -3
  190. package/src/components/Device/DevicesPage/EnrolledDevicesTable.tsx +11 -5
  191. package/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.tsx +1 -1
  192. package/src/components/Events/useEvents.ts +12 -0
  193. package/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.tsx +1 -1
  194. package/src/components/Fleet/FleetDetails/FleetDetailsPage.tsx +4 -5
  195. package/src/components/Fleet/FleetDetails/FleetDevicesCharts.tsx +9 -3
  196. package/src/components/Fleet/FleetDetails/FleetRestoreBanner.tsx +46 -0
  197. package/src/components/Fleet/FleetsPage.tsx +2 -0
  198. package/src/components/ListPage/ListPageActions.tsx +46 -3
  199. package/src/components/Masthead/CommandLineToolsPage.tsx +17 -14
  200. package/src/components/OverviewPage/Cards/Alerts/AlertsCard.tsx +19 -5
  201. package/src/components/OverviewPage/Cards/Status/DeviceStatusChart.tsx +8 -2
  202. package/src/components/OverviewPage/Overview.tsx +5 -2
  203. package/src/components/Status/StatusDisplay.tsx +32 -23
  204. package/src/components/SystemRestore/PendingSyncDevicesAlert.tsx +36 -0
  205. package/src/components/SystemRestore/SuspendedDevicesAlert.tsx +144 -0
  206. package/src/components/SystemRestore/SystemRestoreBanners.css +6 -0
  207. package/src/components/SystemRestore/SystemRestoreBanners.tsx +82 -0
  208. package/src/components/charts/utils.ts +1 -1
  209. package/src/components/common/OrganizationGuard.tsx +124 -0
  210. package/src/components/common/OrganizationSelector.tsx +192 -0
  211. package/src/components/common/PageNavigation.tsx +103 -0
  212. package/src/components/form/FilterSelect.css +3 -4
  213. package/src/components/form/validations.ts +14 -0
  214. package/src/components/modals/ResumeDevicesModal/ResumeDevicesModal.tsx +114 -0
  215. package/src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.tsx +465 -0
  216. package/src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.tsx +55 -0
  217. package/src/hooks/useAccessReview.ts +20 -4
  218. package/src/hooks/useAlertsEnabled.ts +50 -0
  219. package/src/hooks/useAppContext.tsx +9 -7
  220. package/src/hooks/useFetch.ts +1 -3
  221. package/src/hooks/useFetchPeriodically.ts +4 -11
  222. package/src/hooks/useSystemRestoreContext.tsx +54 -0
  223. package/src/types/extraTypes.ts +17 -23
  224. package/src/types/rbac.ts +1 -0
  225. package/src/utils/api.ts +2 -51
  226. package/src/utils/devices.ts +11 -1
  227. package/src/utils/organizationStorage.ts +13 -0
  228. package/src/utils/query.ts +22 -0
  229. package/src/utils/status/common.ts +1 -0
  230. package/src/utils/status/devices.ts +49 -2
  231. package/src/utils/status/fleet.ts +1 -1
  232. package/src/utils/status/repository.ts +1 -1
  233. package/dist/src/hooks/useAlerts.d.ts +0 -26
  234. package/dist/src/hooks/useAlerts.d.ts.map +0 -1
  235. package/dist/src/hooks/useAlerts.js +0 -114
  236. package/dist/src/hooks/useAlerts.js.map +0 -1
  237. package/dist/src/utils/metrics.d.ts +0 -9
  238. package/dist/src/utils/metrics.d.ts.map +0 -1
  239. package/dist/src/utils/metrics.js +0 -48
  240. package/dist/src/utils/metrics.js.map +0 -1
  241. package/src/hooks/useAlerts.ts +0 -147
  242. package/src/utils/metrics.ts +0 -49
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const react_core_1 = require("@patternfly/react-core");
6
+ const react_i18next_1 = require("react-i18next");
7
+ const formik_1 = require("formik");
8
+ const useTranslation_1 = require("../../../../hooks/useTranslation");
9
+ const useFetch_1 = require("../../../../hooks/useFetch");
10
+ const LabelsField_1 = tslib_1.__importDefault(require("../../../form/LabelsField"));
11
+ const FlightCtlForm_1 = tslib_1.__importDefault(require("../../../form/FlightCtlForm"));
12
+ const validations_1 = require("../../../form/validations");
13
+ const error_1 = require("../../../../utils/error");
14
+ const query_1 = require("../../../../utils/query");
15
+ const api_1 = require("../../../../utils/api");
16
+ const labels_1 = require("../../../../utils/labels");
17
+ const useFleets_1 = require("../../../Fleet/useFleets");
18
+ const ResumeAllDevicesConfirmationDialog_1 = tslib_1.__importDefault(require("./ResumeAllDevicesConfirmationDialog"));
19
+ // Adds an artificial delay to make sure that the user notices the count is refreshing.
20
+ // This is specially needed when users switch between modes, and the selection for the new mode is already valid.
21
+ const showSpinnerBriefly = () => new Promise((resolve) => setTimeout(resolve, 450));
22
+ var SelectionMode;
23
+ (function (SelectionMode) {
24
+ SelectionMode["FLEET"] = "fleet";
25
+ SelectionMode["LABELS"] = "labels";
26
+ SelectionMode["ALL"] = "all";
27
+ })(SelectionMode || (SelectionMode = {}));
28
+ const getSelectedFleetLabels = (fleets, fleetId) => {
29
+ var _a;
30
+ const selectedFleet = fleets.find((fleet) => fleet.metadata.name === fleetId);
31
+ if (!selectedFleet) {
32
+ throw new Error('Selected fleet not found');
33
+ }
34
+ return (0, labels_1.fromAPILabel)(((_a = selectedFleet.spec.selector) === null || _a === void 0 ? void 0 : _a.matchLabels) || {});
35
+ };
36
+ const MassResumeDevicesModalContent = ({ onClose }) => {
37
+ const { t } = (0, useTranslation_1.useTranslation)();
38
+ const { get, post } = (0, useFetch_1.useFetch)();
39
+ const { values, setFieldValue, isValid, dirty } = (0, formik_1.useFormikContext)();
40
+ const { fleets, isLoading: fleetsLoading } = (0, useFleets_1.useFleets)({});
41
+ const [isFleetListOpen, setIsFleetSelectOpen] = React.useState(false);
42
+ const [isSubmitting, setIsSubmitting] = React.useState(false);
43
+ const [submitError, setSubmitError] = React.useState(undefined);
44
+ const [showResumeAllConfirmation, setShowResumeAllConfirmation] = React.useState(false);
45
+ // Resume result state
46
+ const [resumedCount, setResumedCount] = React.useState(undefined);
47
+ // Device count state
48
+ const [deviceCountNum, setDeviceCountNum] = React.useState(0);
49
+ const [isCountLoading, setIsCountLoading] = React.useState(false);
50
+ const [countError, setCountError] = React.useState(null);
51
+ const hasResumedAtLeastOne = resumedCount !== undefined && resumedCount > 0;
52
+ const hasResumedAllExpected = deviceCountNum > 0 && resumedCount === deviceCountNum;
53
+ const isSubmitEnabled = (values.mode === SelectionMode.ALL || deviceCountNum > 0) &&
54
+ !isSubmitting &&
55
+ !isCountLoading &&
56
+ isValid &&
57
+ resumedCount === undefined;
58
+ const deviceCount = deviceCountNum.toString();
59
+ const loadMatchingDevicesCount = React.useCallback((criteria) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
60
+ setIsCountLoading(true);
61
+ setCountError(null);
62
+ setDeviceCountNum(0);
63
+ try {
64
+ let queryEndpoint;
65
+ if (criteria.all) {
66
+ queryEndpoint = query_1.commonQueries.getAllSuspendedDevicesCount();
67
+ }
68
+ else {
69
+ const fleetLabels = criteria.fleetId
70
+ ? getSelectedFleetLabels(fleets, criteria.fleetId)
71
+ : criteria.labels || [];
72
+ if (fleetLabels.length === 0) {
73
+ throw new Error('Invalid criteria: must provide either fleetId or labels');
74
+ }
75
+ queryEndpoint = query_1.commonQueries.getSuspendedDeviceCountByLabels(fleetLabels);
76
+ }
77
+ const deviceResult = yield get(queryEndpoint);
78
+ yield showSpinnerBriefly();
79
+ setDeviceCountNum((0, api_1.getApiListCount)(deviceResult) || 0);
80
+ }
81
+ catch (error) {
82
+ yield showSpinnerBriefly();
83
+ setCountError(t('Failed to obtain the number of matching devices'));
84
+ }
85
+ finally {
86
+ setIsCountLoading(false);
87
+ }
88
+ }), [get, t, fleets]);
89
+ const performResume = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
90
+ setIsSubmitting(true);
91
+ setSubmitError(undefined);
92
+ try {
93
+ let labels;
94
+ if (values.mode === SelectionMode.ALL) {
95
+ labels = [];
96
+ }
97
+ else {
98
+ if (values.mode === SelectionMode.FLEET) {
99
+ labels = getSelectedFleetLabels(fleets, values.fleetId);
100
+ }
101
+ else {
102
+ labels = values.labels;
103
+ }
104
+ // This shouldn't happen due to validations, but since an empty label selector would target all existing devices,
105
+ // wake sure the UI does't accidentally submit a request with an empty selector
106
+ const emptySelection = labels.every((label) => label.key === '');
107
+ if (labels.length === 0 || emptySelection) {
108
+ throw new Error('The current selection would target all devices.');
109
+ }
110
+ }
111
+ const resumeRequest = {
112
+ labelSelector: labels.map((label) => (0, labels_1.labelToExactApiMatchString)(label)).join(','),
113
+ };
114
+ const resumeResponse = yield post('deviceactions/resume', resumeRequest);
115
+ setResumedCount(resumeResponse.resumedDevices || 0);
116
+ }
117
+ catch (error) {
118
+ setSubmitError((0, error_1.getErrorMessage)(error));
119
+ }
120
+ finally {
121
+ setIsSubmitting(false);
122
+ }
123
+ });
124
+ const handleResume = () => {
125
+ if (values.mode === SelectionMode.ALL) {
126
+ setShowResumeAllConfirmation(true);
127
+ }
128
+ else {
129
+ performResume();
130
+ }
131
+ };
132
+ const handleSelectionModeChanged = (mode) => {
133
+ setFieldValue('mode', mode);
134
+ if (mode === SelectionMode.ALL) {
135
+ // Load count for all suspended devices
136
+ loadMatchingDevicesCount({ all: true });
137
+ }
138
+ else if (mode === SelectionMode.FLEET && values.fleetId) {
139
+ // If switching to a mode that already had a valid selection, we refresh the count
140
+ loadMatchingDevicesCount({ fleetId: values.fleetId });
141
+ }
142
+ else if (mode === SelectionMode.LABELS && values.labels.length > 0) {
143
+ loadMatchingDevicesCount({ labels: values.labels });
144
+ }
145
+ else {
146
+ // Clear the count if there isn't a valid selection
147
+ setDeviceCountNum(0);
148
+ setCountError(null);
149
+ setIsCountLoading(false);
150
+ }
151
+ };
152
+ const handleFleetSelected = (fleetId) => {
153
+ setFieldValue('fleetId', fleetId);
154
+ setIsFleetSelectOpen(false);
155
+ if (fleetId) {
156
+ loadMatchingDevicesCount({ fleetId });
157
+ }
158
+ else {
159
+ setDeviceCountNum(0);
160
+ setCountError(null);
161
+ }
162
+ };
163
+ const handleLabelsChanged = (newLabels, hasErrors) => {
164
+ if (hasErrors || newLabels.length === 0) {
165
+ setDeviceCountNum(0);
166
+ setCountError(null);
167
+ return;
168
+ }
169
+ else if (newLabels.length > 0) {
170
+ loadMatchingDevicesCount({ labels: newLabels });
171
+ }
172
+ };
173
+ return (React.createElement(react_core_1.Modal, { variant: react_core_1.ModalVariant.medium, title: t('Resume devices'), isOpen: true, onClose: () => onClose(hasResumedAtLeastOne), actions: [
174
+ React.createElement(react_core_1.Button, { key: "resume", variant: "primary", onClick: handleResume, isLoading: isSubmitting, isDisabled: !isSubmitEnabled }, t('Resume selection')),
175
+ React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: () => onClose(hasResumedAtLeastOne), isDisabled: isSubmitting }, hasResumedAtLeastOne ? t('Close') : t('Cancel')),
176
+ ] },
177
+ React.createElement(react_core_1.Stack, { hasGutter: true },
178
+ React.createElement(FlightCtlForm_1.default, null,
179
+ React.createElement(react_core_1.StackItem, null,
180
+ React.createElement(react_core_1.TextContent, null,
181
+ React.createElement(react_core_1.Text, null, t("Following a system restore, devices have been identified with configurations newer than the server's records. To prevent data loss, they have been suspended from receiving updates.")))),
182
+ React.createElement(react_core_1.StackItem, null,
183
+ React.createElement(react_core_1.TextContent, null,
184
+ React.createElement(react_core_1.Text, null,
185
+ t('Choose the criteria to select the devices to resume'),
186
+ ":"))),
187
+ React.createElement(react_core_1.StackItem, null,
188
+ React.createElement(react_core_1.FormGroup, { isRequired: true, fieldId: "selection-mode" },
189
+ React.createElement(react_core_1.Radio, { label: t('Fleet'), id: "selectionModeFleet", name: "selectionMode", isChecked: values.mode === SelectionMode.FLEET, onChange: () => {
190
+ handleSelectionModeChanged(SelectionMode.FLEET);
191
+ }, description: t('Resume all suspended devices associated with a given fleet') }),
192
+ React.createElement(react_core_1.Radio, { label: t('Labels'), id: "selectionModeLabels", name: "selectionMode", isChecked: values.mode === SelectionMode.LABELS, onChange: () => {
193
+ handleSelectionModeChanged(SelectionMode.LABELS);
194
+ }, description: t('Resume all suspended devices matching the specified labels') }),
195
+ React.createElement(react_core_1.Radio, { label: t('All suspended devices'), id: "selectionModeAll", name: "selectionMode", isChecked: values.mode === SelectionMode.ALL, onChange: () => {
196
+ handleSelectionModeChanged(SelectionMode.ALL);
197
+ }, description: t('Resume all suspended devices') }))),
198
+ values.mode === SelectionMode.FLEET && (React.createElement(react_core_1.StackItem, null,
199
+ React.createElement(react_core_1.FormGroup, { label: t('Fleet'), isRequired: true, fieldId: "fleetId" },
200
+ React.createElement(react_core_1.Select, { id: "fleetSelection", isOpen: isFleetListOpen, selected: values.fleetId, onSelect: (_, selection) => handleFleetSelected(selection), onOpenChange: (isOpen) => setIsFleetSelectOpen(isOpen), toggle: (toggleRef) => (React.createElement(react_core_1.MenuToggle, { ref: toggleRef, onClick: () => setIsFleetSelectOpen(!isFleetListOpen), isExpanded: isFleetListOpen, isDisabled: fleetsLoading, style: { width: '100%' } }, values.fleetId || t('Select a fleet'))), shouldFocusToggleOnSelect: true },
201
+ React.createElement(react_core_1.SelectList, null, fleets.map((fleet) => {
202
+ var _a, _b;
203
+ const fleetId = fleet.metadata.name || '';
204
+ const deviceSelectorStr = Object.entries(((_b = (_a = fleet.spec) === null || _a === void 0 ? void 0 : _a.selector) === null || _b === void 0 ? void 0 : _b.matchLabels) || {})
205
+ .map(([key, value]) => (value ? `${key}=${value}` : key))
206
+ .join(',');
207
+ let description = '';
208
+ if (deviceSelectorStr) {
209
+ description = `${t('Device selector labels')}: ${deviceSelectorStr}`;
210
+ }
211
+ else {
212
+ description = t('This fleet does not select any devices');
213
+ }
214
+ return (React.createElement(react_core_1.SelectOption, { key: fleetId, value: fleetId, description: description, isDisabled: !deviceSelectorStr }, fleetId));
215
+ })))))),
216
+ values.mode === SelectionMode.LABELS && (React.createElement(react_core_1.StackItem, null,
217
+ React.createElement(react_core_1.FormGroup, { label: t('Device labels'), fieldId: "labelsSelection", isRequired: true },
218
+ React.createElement(LabelsField_1.default, { name: "labels", onChangeCallback: handleLabelsChanged }))))),
219
+ isValid && dirty && resumedCount === undefined && (React.createElement(react_core_1.StackItem, null, isCountLoading ? (React.createElement(react_core_1.Alert, { variant: "info", isInline: true, title: t('Refreshing device count') },
220
+ React.createElement(react_core_1.Spinner, { size: "md", className: "pf-v5-u-mr-sm" }),
221
+ t('Checking how many suspended devices match your criteria...'))) : countError ? (React.createElement(react_core_1.Alert, { variant: "warning", isInline: true, title: t('Unable to refresh device count') }, countError)) : deviceCountNum > 0 ? (React.createElement(react_core_1.Alert, { variant: values.mode === SelectionMode.ALL ? 'warning' : 'success', isInline: true, title: t('Devices found') }, values.mode === SelectionMode.FLEET ? (React.createElement(react_i18next_1.Trans, { t: t },
222
+ React.createElement("strong", null, deviceCount),
223
+ " suspended devices are currently associated with fleet",
224
+ ' ',
225
+ React.createElement("strong", null, values.fleetId),
226
+ ".")) : values.mode === SelectionMode.LABELS ? (React.createElement(react_i18next_1.Trans, { t: t },
227
+ React.createElement("strong", null, deviceCount),
228
+ " suspended devices match the specified labels.")) : (React.createElement(React.Fragment, null,
229
+ React.createElement(react_i18next_1.Trans, { t: t, count: deviceCountNum },
230
+ "You are about to resume all ",
231
+ React.createElement("strong", null, deviceCount),
232
+ " suspended devices."),
233
+ t('This action is irreversible and will allow all affected devices to receive new configuration updates from the server.'))))) : (React.createElement(react_core_1.Alert, { variant: "warning", isInline: true, title: t('No devices found') }, values.mode === SelectionMode.FLEET ? (React.createElement(react_i18next_1.Trans, { t: t },
234
+ "No suspended devices are associated with fleet ",
235
+ React.createElement("strong", null, values.fleetId),
236
+ ".")) : values.mode === SelectionMode.ALL ? (t('No suspended devices found.')) : (t('No suspended devices match the specified labels.')))))),
237
+ submitError && (React.createElement(react_core_1.StackItem, null,
238
+ React.createElement(react_core_1.Alert, { isInline: true, variant: "danger", title: t('Resume devices failed') }, submitError))),
239
+ resumedCount !== undefined && hasResumedAllExpected && (React.createElement(react_core_1.StackItem, null,
240
+ React.createElement(react_core_1.Alert, { isInline: true, variant: "success", title: t('Resume successful') }, t('{{ resumedCount }} devices were resumed', { resumedCount })))),
241
+ resumedCount !== undefined && !hasResumedAllExpected && (React.createElement(react_core_1.StackItem, null,
242
+ React.createElement(react_core_1.Alert, { isInline: true, variant: "warning", title: t('Resumed with warnings') }, t('{{ expectedCount }} devices to resume, and {{ resumedCount }} resumed successfully', {
243
+ expectedCount: deviceCountNum,
244
+ resumedCount,
245
+ }))))),
246
+ showResumeAllConfirmation && (React.createElement(ResumeAllDevicesConfirmationDialog_1.default, { deviceCountNum: deviceCountNum, onClose: (doConfirm) => {
247
+ setShowResumeAllConfirmation(false);
248
+ if (doConfirm) {
249
+ performResume();
250
+ }
251
+ } }))));
252
+ };
253
+ const MassResumeDevicesModal = ({ onClose }) => {
254
+ const { t } = (0, useTranslation_1.useTranslation)();
255
+ return (React.createElement(formik_1.Formik, { initialValues: {
256
+ mode: SelectionMode.FLEET,
257
+ fleetId: '',
258
+ labels: [],
259
+ }, validationSchema: (0, validations_1.createMassResumeValidationSchema)(t), onSubmit: () => {
260
+ // This will be handled by the inner component
261
+ } },
262
+ React.createElement(MassResumeDevicesModalContent, { onClose: onClose })));
263
+ };
264
+ exports.default = MassResumeDevicesModal;
265
+ //# sourceMappingURL=MassResumeDevicesModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MassResumeDevicesModal.js","sourceRoot":"","sources":["../../../../../../src/components/modals/massModals/ResumeDevicesModal/MassResumeDevicesModal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ interface ResumeAllDevicesConfirmationModalProps {
3
+ deviceCountNum: number;
4
+ onClose: (doConfirm: boolean) => void;
5
+ isSubmitting?: boolean;
6
+ }
7
+ declare const ResumeAllDevicesConfirmationModal: ({ deviceCountNum, onClose }: ResumeAllDevicesConfirmationModalProps) => React.JSX.Element;
8
+ export default ResumeAllDevicesConfirmationModal;
9
+ //# sourceMappingURL=ResumeAllDevicesConfirmationDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResumeAllDevicesConfirmationDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,UAAU,sCAAsC;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,iCAAiC,gCAAiC,sCAAsC,sBAwC7G,CAAC;AAEF,eAAe,iCAAiC,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const react_core_1 = require("@patternfly/react-core");
6
+ const react_i18next_1 = require("react-i18next");
7
+ const useTranslation_1 = require("../../../../hooks/useTranslation");
8
+ const ResumeAllDevicesConfirmationModal = ({ deviceCountNum, onClose }) => {
9
+ const { t } = (0, useTranslation_1.useTranslation)();
10
+ const deviceCount = deviceCountNum.toString();
11
+ return (React.createElement(react_core_1.Modal, { variant: react_core_1.ModalVariant.small, title: t('Resume all {{ deviceCount }} devices?', { deviceCount }), isOpen: true, onClose: () => onClose(false), actions: [
12
+ React.createElement(react_core_1.Button, { key: "confirm", variant: "primary", onClick: () => onClose(true) }, t('Resume all devices')),
13
+ React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: () => onClose(false) }, t('Cancel')),
14
+ ] },
15
+ React.createElement(react_core_1.Stack, { hasGutter: true },
16
+ React.createElement(react_core_1.StackItem, null,
17
+ React.createElement(react_core_1.TextContent, null,
18
+ React.createElement(react_core_1.Text, null,
19
+ React.createElement(react_i18next_1.Trans, { t: t, count: deviceCountNum },
20
+ "You are about to resume all ",
21
+ React.createElement("strong", null, deviceCount),
22
+ " suspended devices."))),
23
+ React.createElement(react_core_1.TextContent, null,
24
+ React.createElement(react_core_1.Text, null, t('This action is irreversible and will allow all affected devices to receive new configuration updates from the server.')))))));
25
+ };
26
+ exports.default = ResumeAllDevicesConfirmationModal;
27
+ //# sourceMappingURL=ResumeAllDevicesConfirmationDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResumeAllDevicesConfirmationDialog.js","sourceRoot":"","sources":["../../../../../../src/components/modals/massModals/ResumeDevicesModal/ResumeAllDevicesConfirmationDialog.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,uDAA0G;AAC1G,iDAAsC;AAEtC,qEAAkE;AAQlE,MAAM,iCAAiC,GAAG,CAAC,EAAE,cAAc,EAAE,OAAO,EAA0C,EAAE,EAAE;IAChH,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAE/B,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IAE9C,OAAO,CACL,oBAAC,kBAAK,IACJ,OAAO,EAAE,yBAAY,CAAC,KAAK,EAC3B,KAAK,EAAE,CAAC,CAAC,uCAAuC,EAAE,EAAE,WAAW,EAAE,CAAC,EAClE,MAAM,QACN,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7B,OAAO,EAAE;YACP,oBAAC,mBAAM,IAAC,GAAG,EAAC,SAAS,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IACjE,CAAC,CAAC,oBAAoB,CAAC,CACjB;YACT,oBAAC,mBAAM,IAAC,GAAG,EAAC,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAC9D,CAAC,CAAC,QAAQ,CAAC,CACL;SACV;QAED,oBAAC,kBAAK,IAAC,SAAS;YACd,oBAAC,sBAAS;gBACR,oBAAC,wBAAW;oBACV,oBAAC,iBAAI;wBACH,oBAAC,qBAAK,IAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc;;4BACJ,oCAAS,WAAW,CAAU;kDACpD,CACH,CACK;gBACd,oBAAC,wBAAW;oBACV,oBAAC,iBAAI,QACF,CAAC,CACA,uHAAuH,CACxH,CACI,CACK,CACJ,CACN,CACF,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,iCAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAccessReview.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe,SAAU,QAAQ,QAAQ,IAAI,uBAyBzD,CAAC"}
1
+ {"version":3,"file":"useAccessReview.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe,SAAU,QAAQ,QAAQ,IAAI,uBAyCzD,CAAC"}
@@ -11,21 +11,34 @@ const useAccessReview = (kind, verb) => {
11
11
  const [isAllowed, setIsAllowed] = React.useState(false);
12
12
  const { fetch: { checkPermissions }, } = (0, useAppContext_1.useAppContext)();
13
13
  React.useEffect(() => {
14
+ let isMounted = true;
14
15
  const doItAsync = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
16
+ if (!isMounted)
17
+ return;
15
18
  setIsLoading(true);
16
19
  try {
17
20
  const allowed = yield checkPermissions(kind, verb);
18
- setIsAllowed(allowed);
21
+ if (isMounted) {
22
+ setIsAllowed(allowed);
23
+ }
19
24
  }
20
25
  catch (err) {
21
- setError((0, error_1.getErrorMessage)(err));
22
- setIsAllowed(false);
26
+ if (isMounted) {
27
+ setError((0, error_1.getErrorMessage)(err));
28
+ setIsAllowed(false);
29
+ }
23
30
  }
24
31
  finally {
25
- setIsLoading(false);
32
+ if (isMounted) {
33
+ setIsLoading(false);
34
+ }
26
35
  }
27
36
  });
28
37
  doItAsync();
38
+ // Cleanup function to prevent state updates after unmount
39
+ return () => {
40
+ isMounted = false;
41
+ };
29
42
  }, [kind, verb, checkPermissions]);
30
43
  return [isAllowed, isLoading, error];
31
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useAccessReview.js","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,mDAAgD;AAChD,0CAAiD;AAK1C,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,IAAU,EAAsB,EAAE;IAChF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,EACJ,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAC5B,GAAG,IAAA,6BAAa,GAAE,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnD,YAAY,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAA,CAAC;QACF,SAAS,EAAE,CAAC;IACd,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAzBW,QAAA,eAAe,mBAyB1B"}
1
+ {"version":3,"file":"useAccessReview.js","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,mDAAgD;AAChD,0CAAiD;AAK1C,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,IAAU,EAAsB,EAAE;IAChF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,EACJ,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAC5B,GAAG,IAAA,6BAAa,GAAE,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,SAAS,EAAE,CAAC;oBACd,QAAQ,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;oBAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAA,CAAC;QAEF,SAAS,EAAE,CAAC;QAEZ,0DAA0D;QAC1D,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAzCW,QAAA,eAAe,mBAyC1B"}
@@ -0,0 +1,2 @@
1
+ export declare const useAlertsEnabled: () => boolean;
2
+ //# sourceMappingURL=useAlertsEnabled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAlertsEnabled.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAlertsEnabled.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,gBAAgB,QAAO,OAwCnC,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAlertsEnabled = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rbac_1 = require("../types/rbac");
7
+ const useAccessReview_1 = require("./useAccessReview");
8
+ const useFetch_1 = require("./useFetch");
9
+ // Alerts are considered disabled if the service returns either 501 (Not Implemented) or 500
10
+ const isDisabledAlertManagerService = (error) => Number(error.message) === 501 || Number(error.message) === 500;
11
+ const useAlertsEnabled = () => {
12
+ const { get } = (0, useFetch_1.useFetch)();
13
+ const [alertsEnabled, setAlertsEnabled] = React.useState(false);
14
+ const [canListAlerts, alertsLoading] = (0, useAccessReview_1.useAccessReview)(rbac_1.RESOURCE.ALERTS, rbac_1.VERB.LIST);
15
+ React.useEffect(() => {
16
+ let abortController;
17
+ const checkAlertServiceEnabled = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
+ try {
19
+ abortController = new AbortController();
20
+ yield get('alerts', abortController.signal);
21
+ setAlertsEnabled(true);
22
+ }
23
+ catch (err) {
24
+ if (!abortController.signal.aborted) {
25
+ if (isDisabledAlertManagerService(err)) {
26
+ setAlertsEnabled(false);
27
+ }
28
+ else {
29
+ // For other errors, assume alerts are enabled but there's a temporary issue
30
+ setAlertsEnabled(true);
31
+ }
32
+ }
33
+ }
34
+ });
35
+ if (!alertsLoading && canListAlerts) {
36
+ // Check only if we know that the user has permissions to read the alerts
37
+ checkAlertServiceEnabled();
38
+ }
39
+ else {
40
+ // If user doesn't have permissions, set to disabled
41
+ setAlertsEnabled(false);
42
+ }
43
+ return () => {
44
+ abortController === null || abortController === void 0 ? void 0 : abortController.abort();
45
+ };
46
+ }, [get, alertsLoading, canListAlerts]);
47
+ return alertsEnabled;
48
+ };
49
+ exports.useAlertsEnabled = useAlertsEnabled;
50
+ //# sourceMappingURL=useAlertsEnabled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAlertsEnabled.js","sourceRoot":"","sources":["../../../src/hooks/useAlertsEnabled.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,wCAA+C;AAC/C,uDAAoD;AACpD,yCAAsC;AAEtC,4FAA4F;AAC5F,MAAM,6BAA6B,GAAG,CAAC,KAAY,EAAW,EAAE,CAC9D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;AAE1D,MAAM,gBAAgB,GAAG,GAAY,EAAE;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAC3B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,IAAA,iCAAe,EAAC,eAAQ,CAAC,MAAM,EAAE,WAAI,CAAC,IAAI,CAAC,CAAC;IAEnF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,eAAgC,CAAC;QAErC,MAAM,wBAAwB,GAAG,GAAS,EAAE;YAC1C,IAAI,CAAC;gBACH,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;gBACxC,MAAM,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpC,IAAI,6BAA6B,CAAC,GAAY,CAAC,EAAE,CAAC;wBAChD,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,4EAA4E;wBAC5E,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAA,CAAC;QAEF,IAAI,CAAC,aAAa,IAAI,aAAa,EAAE,CAAC;YACpC,yEAAyE;YACzE,wBAAwB,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,oDAAoD;YACpD,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,GAAG,EAAE;YACV,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IAExC,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAxCW,QAAA,gBAAgB,oBAwC3B"}
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { Link, Navigate, Route, NavigateFunction as RouterNavigateFunction, Routes, useBlocker, useLocation, useParams, useSearchParams } from 'react-router-dom';
3
3
  import { PatchRequest } from '@flightctl/types';
4
- import { CliArtifactsResponse } from '@flightctl/ui-components/src/types/extraTypes';
5
4
  import { ROUTE } from './useNavigate';
6
5
  import { RESOURCE, VERB } from '../types/rbac';
7
6
  export declare const appRoutes: {
@@ -63,15 +62,13 @@ export type AppContextProps = {
63
62
  fetch: {
64
63
  getWsEndpoint: (deviceId: string) => string;
65
64
  get: <R>(kind: string, abortSignal?: AbortSignal) => Promise<R>;
66
- post: <R>(kind: string, data: R, abortSignal?: AbortSignal) => Promise<R>;
67
- put: <R>(kind: string, data: R, abortSignal?: AbortSignal) => Promise<R>;
65
+ post: <TRequest, TResponse = TRequest>(kind: string, data: TRequest, abortSignal?: AbortSignal) => Promise<TResponse>;
66
+ put: <TRequest>(kind: string, data: TRequest, abortSignal?: AbortSignal) => Promise<TRequest>;
68
67
  remove: <R>(kind: string, abortSignal?: AbortSignal) => Promise<R>;
69
68
  patch: <R>(kind: string, patches: PatchRequest, abortSignal?: AbortSignal) => Promise<R>;
70
69
  checkPermissions: (resource: RESOURCE, verb: VERB) => Promise<boolean>;
70
+ proxyFetch: (endpoint: string, requestInit: RequestInit) => Promise<Response>;
71
71
  };
72
- getAlerts?: <R>(abortSignal?: AbortSignal) => Promise<R>;
73
- getMetrics?: <R>(query: string, abortSignal?: AbortSignal) => Promise<R>;
74
- getCliArtifacts?: (abortSignal?: AbortSignal) => Promise<CliArtifactsResponse>;
75
72
  };
76
73
  export declare const AppContext: React.Context<AppContextProps>;
77
74
  export declare const useAppContext: () => AppContextProps;
@@ -1 +1 @@
1
- {"version":3,"file":"useAppContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAppContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAppContext.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAppContext.tsx"],"names":[],"mappings":"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"}
@@ -60,6 +60,7 @@ exports.AppContext = React.createContext({
60
60
  remove: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return ({}); }),
61
61
  patch: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return ({}); }),
62
62
  checkPermissions: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return true; }),
63
+ proxyFetch: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return ({}); }),
63
64
  },
64
65
  /* eslint-enable */
65
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useAppContext.js","sourceRoot":"","sources":["../../../src/hooks/useAppContext.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,uDAY0B;AAG1B,+CAAsC;AAGzB,QAAA,SAAS,GAAG;IACvB,CAAC,mBAAK,CAAC,IAAI,CAAC,EAAE,GAAG;IACjB,CAAC,mBAAK,CAAC,MAAM,CAAC,EAAE,0BAA0B;IAC1C,CAAC,mBAAK,CAAC,aAAa,CAAC,EAAE,0BAA0B;IACjD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,iCAAiC;IACvD,CAAC,mBAAK,CAAC,UAAU,CAAC,EAAE,+BAA+B;IACnD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,iCAAiC;IACvD,CAAC,mBAAK,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAC5C,CAAC,mBAAK,CAAC,cAAc,CAAC,EAAE,2BAA2B;IACnD,CAAC,mBAAK,CAAC,WAAW,CAAC,EAAE,gCAAgC;IACrD,CAAC,mBAAK,CAAC,WAAW,CAAC,EAAE,uCAAuC;IAC5D,CAAC,mBAAK,CAAC,SAAS,CAAC,EAAE,qCAAqC;IACxD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,gCAAgC;IACtD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,gCAAgC;IACtD,CAAC,mBAAK,CAAC,qBAAqB,CAAC,EAAE,iCAAiC;IAChE,CAAC,mBAAK,CAAC,mBAAmB,CAAC,EAAE,sCAAsC;IACnE,CAAC,mBAAK,CAAC,0BAA0B,CAAC,EAAE,sCAAsC;IAC1E,CAAC,mBAAK,CAAC,kBAAkB,CAAC,EAAE,qBAAqB;CAClD,CAAC;AAIF,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,2BAAW,CAAA;IACX,2BAAW,CAAA;AACb,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAwCY,QAAA,UAAU,GAAG,KAAK,CAAC,aAAa,CAAkB;IAC7D,OAAO,EAAE,YAAY,CAAC,UAAU;IAChC,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK;KACd;IACD,MAAM,EAAE;QACN,WAAW,EAAX,8BAAW;QACX,IAAI,EAAJ,uBAAI;QACJ,SAAS,EAAT,iBAAS;QACT,OAAO,EAAE,0BAAoB;QAC7B,SAAS,EAAT,4BAAS;QACT,UAAU,EAAV,6BAAU;QACV,eAAe,EAAf,kCAAe;QACf,KAAK,EAAL,wBAAK;QACL,MAAM,EAAN,yBAAM;QACN,QAAQ,EAAR,2BAAQ;QACR,WAAW,EAAX,8BAAW;KACZ;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,SAAS;KAC1B;IACD,oBAAoB;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE;QACvB,GAAG,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC5B,IAAI,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC7B,GAAG,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC5B,MAAM,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC/B,KAAK,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC9B,gBAAgB,EAAE,GAAS,EAAE,0DAAC,OAAA,IAAI,CAAA,GAAA;KACnC;IACD,mBAAmB;CACpB,CAAC,CAAC;AAEI,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAU,CAAC,CAAC;AAAnD,QAAA,aAAa,iBAAsC"}
1
+ {"version":3,"file":"useAppContext.js","sourceRoot":"","sources":["../../../src/hooks/useAppContext.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,uDAY0B;AAE1B,+CAAsC;AAGzB,QAAA,SAAS,GAAG;IACvB,CAAC,mBAAK,CAAC,IAAI,CAAC,EAAE,GAAG;IACjB,CAAC,mBAAK,CAAC,MAAM,CAAC,EAAE,0BAA0B;IAC1C,CAAC,mBAAK,CAAC,aAAa,CAAC,EAAE,0BAA0B;IACjD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,iCAAiC;IACvD,CAAC,mBAAK,CAAC,UAAU,CAAC,EAAE,+BAA+B;IACnD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,iCAAiC;IACvD,CAAC,mBAAK,CAAC,OAAO,CAAC,EAAE,2BAA2B;IAC5C,CAAC,mBAAK,CAAC,cAAc,CAAC,EAAE,2BAA2B;IACnD,CAAC,mBAAK,CAAC,WAAW,CAAC,EAAE,gCAAgC;IACrD,CAAC,mBAAK,CAAC,WAAW,CAAC,EAAE,uCAAuC;IAC5D,CAAC,mBAAK,CAAC,SAAS,CAAC,EAAE,qCAAqC;IACxD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,gCAAgC;IACtD,CAAC,mBAAK,CAAC,YAAY,CAAC,EAAE,gCAAgC;IACtD,CAAC,mBAAK,CAAC,qBAAqB,CAAC,EAAE,iCAAiC;IAChE,CAAC,mBAAK,CAAC,mBAAmB,CAAC,EAAE,sCAAsC;IACnE,CAAC,mBAAK,CAAC,0BAA0B,CAAC,EAAE,sCAAsC;IAC1E,CAAC,mBAAK,CAAC,kBAAkB,CAAC,EAAE,qBAAqB;CAClD,CAAC;AAIF,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,2BAAW,CAAA;IACX,2BAAW,CAAA;AACb,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AA0CY,QAAA,UAAU,GAAG,KAAK,CAAC,aAAa,CAAkB;IAC7D,OAAO,EAAE,YAAY,CAAC,UAAU;IAChC,QAAQ,EAAE;QACR,MAAM,EAAE,KAAK;KACd;IACD,MAAM,EAAE;QACN,WAAW,EAAX,8BAAW;QACX,IAAI,EAAJ,uBAAI;QACJ,SAAS,EAAT,iBAAS;QACT,OAAO,EAAE,0BAAoB;QAC7B,SAAS,EAAT,4BAAS;QACT,UAAU,EAAV,6BAAU;QACV,eAAe,EAAf,kCAAe;QACf,KAAK,EAAL,wBAAK;QACL,MAAM,EAAN,yBAAM;QACN,QAAQ,EAAR,2BAAQ;QACR,WAAW,EAAX,8BAAW;KACZ;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,SAAS;KAC1B;IACD,oBAAoB;IACpB,KAAK,EAAE;QACL,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE;QACvB,GAAG,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC5B,IAAI,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC7B,GAAG,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC5B,MAAM,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC/B,KAAK,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;QAC9B,gBAAgB,EAAE,GAAS,EAAE,0DAAC,OAAA,IAAI,CAAA,GAAA;QAClC,UAAU,EAAE,GAAS,EAAE,0DAAC,OAAA,CAAC,EAAE,CAAQ,CAAA,GAAA;KACpC;IACD,mBAAmB;CACpB,CAAC,CAAC;AAEI,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAU,CAAC,CAAC;AAAnD,QAAA,aAAa,iBAAsC"}
@@ -1,12 +1,11 @@
1
1
  export declare const useFetch: () => {
2
- getCliArtifacts: ((abortSignal?: AbortSignal | undefined) => Promise<import("../types/extraTypes").CliArtifactsResponse>) | undefined;
3
- getMetrics: (<R>(query: string, abortSignal?: AbortSignal | undefined) => Promise<R>) | undefined;
4
2
  getWsEndpoint: (deviceId: string) => string;
5
- get: <R_1>(kind: string, abortSignal?: AbortSignal | undefined) => Promise<R_1>;
6
- post: <R_2>(kind: string, data: R_2, abortSignal?: AbortSignal | undefined) => Promise<R_2>;
7
- put: <R_3>(kind: string, data: R_3, abortSignal?: AbortSignal | undefined) => Promise<R_3>;
8
- remove: <R_4>(kind: string, abortSignal?: AbortSignal | undefined) => Promise<R_4>;
9
- patch: <R_5>(kind: string, patches: import("@flightctl/types").PatchRequest, abortSignal?: AbortSignal | undefined) => Promise<R_5>;
3
+ get: <R>(kind: string, abortSignal?: AbortSignal | undefined) => Promise<R>;
4
+ post: <TRequest, TResponse = TRequest>(kind: string, data: TRequest, abortSignal?: AbortSignal | undefined) => Promise<TResponse>;
5
+ put: <TRequest_1>(kind: string, data: TRequest_1, abortSignal?: AbortSignal | undefined) => Promise<TRequest_1>;
6
+ remove: <R_1>(kind: string, abortSignal?: AbortSignal | undefined) => Promise<R_1>;
7
+ patch: <R_2>(kind: string, patches: import("@flightctl/types").PatchRequest, abortSignal?: AbortSignal | undefined) => Promise<R_2>;
10
8
  checkPermissions: (resource: import("../types/rbac").RESOURCE, verb: import("../types/rbac").VERB) => Promise<boolean>;
9
+ proxyFetch: (endpoint: string, requestInit: RequestInit) => Promise<Response>;
11
10
  };
12
11
  //# sourceMappingURL=useFetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;CAQpB,CAAC"}
1
+ {"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;CAMpB,CAAC"}
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useFetch = void 0;
4
4
  const useAppContext_1 = require("./useAppContext");
5
5
  const useFetch = () => {
6
- const { fetch, getCliArtifacts, getMetrics } = (0, useAppContext_1.useAppContext)();
7
- return Object.assign(Object.assign({}, fetch), { getCliArtifacts,
8
- getMetrics });
6
+ const { fetch } = (0, useAppContext_1.useAppContext)();
7
+ return Object.assign({}, fetch);
9
8
  };
10
9
  exports.useFetch = useFetch;
11
10
  //# sourceMappingURL=useFetch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../../src/hooks/useFetch.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAEzC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,6BAAa,GAAE,CAAC;IAE/D,uCACK,KAAK,KACR,eAAe;QACf,UAAU,IACV;AACJ,CAAC,CAAC;AARW,QAAA,QAAQ,YAQnB"}
1
+ {"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../../src/hooks/useFetch.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAEzC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,6BAAa,GAAE,CAAC;IAElC,yBACK,KAAK,EACR;AACJ,CAAC,CAAC;AANW,QAAA,QAAQ,YAMnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchPeriodically.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetchPeriodically.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAO/C,eAAO,MAAM,oBAAoB,aACxB,QAAQ,kCACgB,IAAI,0EA2EpC,CAAC"}
1
+ {"version":3,"file":"useFetchPeriodically.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetchPeriodically.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,eAAO,MAAM,oBAAoB,aACxB,QAAQ,kCACgB,IAAI,0EAqEpC,CAAC"}