@plutonhq/core-frontend 0.1.13 → 0.1.14
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-lib/@types/backups.d.ts +26 -0
- package/dist-lib/@types/backups.d.ts.map +1 -1
- package/dist-lib/@types/devices.d.ts +7 -0
- package/dist-lib/@types/devices.d.ts.map +1 -1
- package/dist-lib/@types/plans.d.ts +21 -1
- package/dist-lib/@types/plans.d.ts.map +1 -1
- package/dist-lib/@types/restores.d.ts +2 -0
- package/dist-lib/@types/restores.d.ts.map +1 -1
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts +3 -2
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts.map +1 -1
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js +73 -85
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +88 -50
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +70 -38
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +166 -123
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +64 -30
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/Backups/Backups.d.ts +8 -1
- package/dist-lib/components/Plan/Backups/Backups.d.ts.map +1 -1
- package/dist-lib/components/Plan/Backups/Backups.js +154 -125
- package/dist-lib/components/Plan/Backups/Backups.js.map +1 -1
- package/dist-lib/components/Plan/EditPlan/EditPlan.d.ts.map +1 -1
- package/dist-lib/components/Plan/EditPlan/EditPlan.js +11 -10
- package/dist-lib/components/Plan/EditPlan/EditPlan.js.map +1 -1
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts +12 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.js +68 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js +26 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts +11 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js +38 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js +16 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts +14 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js +54 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js +26 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts +15 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js +34 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js.map +1 -0
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +20 -17
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +2 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.js +85 -58
- package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
- package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
- package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
- package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
- package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
- package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
- package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +11 -0
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
- package/dist-lib/components/index.d.ts +4 -0
- package/dist-lib/components/index.d.ts.map +1 -1
- package/dist-lib/components.js +86 -78
- package/dist-lib/components.js.map +1 -1
- package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
- package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
- package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
- package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
- package/dist-lib/router.d.ts.map +1 -1
- package/dist-lib/router.js +46 -35
- package/dist-lib/router.js.map +1 -1
- package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
- package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
- package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
- package/dist-lib/services/backups.d.ts +15 -2
- package/dist-lib/services/backups.d.ts.map +1 -1
- package/dist-lib/services/backups.js +119 -100
- package/dist-lib/services/backups.js.map +1 -1
- package/dist-lib/services/plans.d.ts +14 -0
- package/dist-lib/services/plans.d.ts.map +1 -1
- package/dist-lib/services/plans.js +160 -129
- package/dist-lib/services/plans.js.map +1 -1
- package/dist-lib/services/restores.d.ts +10 -2
- package/dist-lib/services/restores.d.ts.map +1 -1
- package/dist-lib/services/restores.js +61 -57
- package/dist-lib/services/restores.js.map +1 -1
- package/dist-lib/services/users.d.ts.map +1 -1
- package/dist-lib/services/users.js +32 -32
- package/dist-lib/services/users.js.map +1 -1
- package/dist-lib/services.js +107 -103
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/progressHelpers.d.ts +12 -1
- package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
- package/dist-lib/utils/progressHelpers.js +121 -63
- package/dist-lib/utils/progressHelpers.js.map +1 -1
- package/dist-lib/utils.js +29 -28
- package/package.json +1 -1
- package/src/@types/backups.ts +28 -0
- package/src/@types/devices.ts +8 -0
- package/src/@types/plans.ts +23 -1
- package/src/@types/restores.ts +2 -0
- package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
- package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
- package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
- package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
- package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
- package/src/components/Plan/Backups/Backups.tsx +52 -4
- package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
- package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
- package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
- package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
- package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
- package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
- package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
- package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
- package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
- package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
- package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
- package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
- package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
- package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
- package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
- package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
- package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
- package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
- package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
- package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
- package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
- package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
- package/src/components/common/Icon/Icon.tsx +10 -1
- package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
- package/src/components/index.ts +6 -0
- package/src/hooks/usePwaAutoUpdate.ts +51 -11
- package/src/router.tsx +26 -17
- package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
- package/src/services/backups.ts +32 -9
- package/src/services/plans.ts +45 -0
- package/src/services/restores.ts +10 -2
- package/src/services/users.ts +14 -5
- package/src/utils/progressHelpers.ts +85 -1
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useParams as
|
|
3
|
-
import { useState as
|
|
1
|
+
import { jsx as s, jsxs as t, Fragment as a } from "react/jsx-runtime";
|
|
2
|
+
import { useParams as z } from "react-router";
|
|
3
|
+
import { useState as M } from "react";
|
|
4
4
|
import m from "../../components/common/Icon/Icon.js";
|
|
5
|
-
import
|
|
6
|
-
import { useGetDevice as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
const
|
|
13
|
-
var h, g, v;
|
|
14
|
-
const { id:
|
|
15
|
-
console.log("DeviceError :",
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
18
|
-
return /* @__PURE__ */
|
|
19
|
-
const e = (h =
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
d ? /* @__PURE__ */
|
|
22
|
-
|
|
5
|
+
import P from "../../components/common/PageHeader/PageHeader.js";
|
|
6
|
+
import { useGetDevice as T, useGetSystemMetrics as C } from "../../services/devices.js";
|
|
7
|
+
import R from "../../components/Device/DeviceInfo/DeviceInfo.js";
|
|
8
|
+
import j from "../../components/Device/EditDevice/EditDevice.js";
|
|
9
|
+
import r from "./DeviceSingle.module.scss.js";
|
|
10
|
+
import w from "../../components/common/NotFound/NotFound.js";
|
|
11
|
+
import B from "../../components/Device/DeviceBackups/DeviceBackups.js";
|
|
12
|
+
const K = () => {
|
|
13
|
+
var h, g, v, N;
|
|
14
|
+
const { id: l } = z(), [S, p] = M(!1), { data: o, isLoading: y, error: i } = T(l), { data: n } = C(l);
|
|
15
|
+
console.log("DeviceError :", i, i == null ? void 0 : i.status);
|
|
16
|
+
const b = i == null ? void 0 : i.status;
|
|
17
|
+
if (!l || b === 404)
|
|
18
|
+
return /* @__PURE__ */ s(w, { name: "Device", link: "/sources", linkText: "All Sources" });
|
|
19
|
+
const e = (h = o == null ? void 0 : o.result) == null ? void 0 : h.device, c = n != null && n.result && ((g = n == null ? void 0 : n.result) != null && g.system) ? n.result : e == null ? void 0 : e.metrics, k = ((v = o == null ? void 0 : o.result) == null ? void 0 : v.plans) || [], x = ((N = o == null ? void 0 : o.result) == null ? void 0 : N.storages) || [], d = e == null ? void 0 : e.name, $ = (e == null ? void 0 : e.status) && (e == null ? void 0 : e.status) === "pending", { restic: u = "100.0.0", rclone: f = "100.0.0" } = (e == null ? void 0 : e.versions) || {};
|
|
20
|
+
return /* @__PURE__ */ t("div", { className: r.device, children: [
|
|
21
|
+
d ? /* @__PURE__ */ s(
|
|
22
|
+
P,
|
|
23
23
|
{
|
|
24
|
-
title: /* @__PURE__ */
|
|
24
|
+
title: /* @__PURE__ */ t(a, { children: [
|
|
25
25
|
d,
|
|
26
|
-
|
|
26
|
+
l === "main" && /* @__PURE__ */ s("span", { className: "label in_progress", children: "Main" })
|
|
27
27
|
] }),
|
|
28
28
|
pageTitle: d,
|
|
29
29
|
icon: "devices",
|
|
30
|
-
rightSection: /* @__PURE__ */
|
|
31
|
-
(
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
/* @__PURE__ */
|
|
30
|
+
rightSection: /* @__PURE__ */ t(a, { children: [
|
|
31
|
+
(!$ || l === "main") && /* @__PURE__ */ t(a, { children: [
|
|
32
|
+
/* @__PURE__ */ t("button", { className: `${r.version}`, "data-tooltip-id": "appTooltip", "data-tooltip-content": `Restic version: ${u}`, children: [
|
|
33
|
+
/* @__PURE__ */ s(m, { type: "restic", size: 14 }),
|
|
34
34
|
" ",
|
|
35
|
-
/* @__PURE__ */
|
|
35
|
+
/* @__PURE__ */ t("i", { children: [
|
|
36
36
|
"v",
|
|
37
37
|
u
|
|
38
38
|
] })
|
|
39
39
|
] }),
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
-
/* @__PURE__ */
|
|
40
|
+
/* @__PURE__ */ t("button", { className: `${r.version}`, "data-tooltip-id": "appTooltip", "data-tooltip-content": `Rclone version: ${f}`, children: [
|
|
41
|
+
/* @__PURE__ */ s(m, { type: "rclone", size: 14 }),
|
|
42
42
|
" ",
|
|
43
|
-
/* @__PURE__ */
|
|
43
|
+
/* @__PURE__ */ t("i", { children: [
|
|
44
44
|
"v",
|
|
45
45
|
f
|
|
46
46
|
] })
|
|
47
47
|
] }),
|
|
48
|
-
/* @__PURE__ */
|
|
48
|
+
/* @__PURE__ */ s("b", { children: "|" })
|
|
49
49
|
] }),
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ t("button", { className: r.actionBtn, onClick: () => p(!0), children: [
|
|
51
|
+
/* @__PURE__ */ s(m, { size: 14, type: "edit-settings" }),
|
|
52
52
|
" Edit"
|
|
53
53
|
] })
|
|
54
54
|
] })
|
|
55
55
|
}
|
|
56
|
-
) : /* @__PURE__ */
|
|
57
|
-
/* @__PURE__ */
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
-
(c == null ? void 0 : c.system) && /* @__PURE__ */
|
|
56
|
+
) : /* @__PURE__ */ s("span", { className: `skeleton-box ${r.titleSkeleton}` }),
|
|
57
|
+
/* @__PURE__ */ s("div", { className: r.deviceContent, children: y ? /* @__PURE__ */ s("div", { className: "loadingScreen", children: /* @__PURE__ */ s(m, { size: 60, type: "loading" }) }) : /* @__PURE__ */ t(a, { children: [
|
|
58
|
+
/* @__PURE__ */ s(B, { plans: k, storages: x }),
|
|
59
|
+
(c == null ? void 0 : c.system) && /* @__PURE__ */ s(R, { metrics: c, isRefetching: !1 })
|
|
60
60
|
] }) }),
|
|
61
|
-
e &&
|
|
61
|
+
e && S && /* @__PURE__ */ s(j, { device: e, close: () => p(!1) })
|
|
62
62
|
] });
|
|
63
63
|
};
|
|
64
64
|
export {
|
|
65
|
-
|
|
65
|
+
K as default
|
|
66
66
|
};
|
|
67
67
|
//# sourceMappingURL=DeviceSingle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceSingle.js","sources":["../../../src/routes/DeviceSingle/DeviceSingle.tsx"],"sourcesContent":["import { useParams } from 'react-router';\r\nimport { useState } from 'react';\r\nimport Icon from '../../components/common/Icon/Icon';\r\nimport PageHeader from '../../components/common/PageHeader/PageHeader';\r\nimport { useGetDevice, useGetSystemMetrics } from '../../services/devices';\r\nimport DeviceInfo from '../../components/Device/DeviceInfo/DeviceInfo';\r\nimport EditDevice from '../../components/Device/EditDevice/EditDevice';\r\nimport classes from './DeviceSingle.module.scss';\r\
|
|
1
|
+
{"version":3,"file":"DeviceSingle.js","sources":["../../../src/routes/DeviceSingle/DeviceSingle.tsx"],"sourcesContent":["import { useParams } from 'react-router';\r\nimport { useState } from 'react';\r\nimport Icon from '../../components/common/Icon/Icon';\r\nimport PageHeader from '../../components/common/PageHeader/PageHeader';\r\nimport { useGetDevice, useGetSystemMetrics } from '../../services/devices';\r\nimport DeviceInfo from '../../components/Device/DeviceInfo/DeviceInfo';\r\nimport EditDevice from '../../components/Device/EditDevice/EditDevice';\r\nimport classes from './DeviceSingle.module.scss';\r\nimport NotFound from '../../components/common/NotFound/NotFound';\r\nimport DeviceBackups from '../../components/Device/DeviceBackups/DeviceBackups';\r\nimport { DevicePlan, DeviceStorage } from '../../@types/devices';\r\n\r\nconst DeviceSingle = () => {\r\n const { id } = useParams();\r\n const [showEditModal, setShowEditModal] = useState(false);\r\n const { data, isLoading, error: DeviceError } = useGetDevice(id as string);\r\n const { data: metricsData } = useGetSystemMetrics(id as string);\r\n\r\n console.log('DeviceError :', DeviceError, (DeviceError as Error & { status?: number })?.status);\r\n\r\n const errorStatusCode = (DeviceError as Error & { status?: number })?.status;\r\n if (!id || errorStatusCode === 404) {\r\n return <NotFound name=\"Device\" link=\"/sources\" linkText=\"All Sources\" />;\r\n }\r\n\r\n const device = data?.result?.device;\r\n const metrics = metricsData?.result && metricsData?.result?.system ? metricsData.result : device?.metrics;\r\n const devicePlans: DevicePlan[] = data?.result?.plans || [];\r\n const deviceStorages: DeviceStorage[] = data?.result?.storages || [];\r\n const deviceName = device?.name;\r\n const isPending = device?.status && device?.status === 'pending';\r\n\r\n const { restic = '100.0.0', rclone = '100.0.0' } = device?.versions || {};\r\n\r\n return (\r\n <div className={classes.device}>\r\n {deviceName ? (\r\n <PageHeader\r\n title={\r\n <>\r\n {deviceName}\r\n {id === 'main' && <span className=\"label in_progress\">Main</span>}\r\n </>\r\n }\r\n pageTitle={deviceName}\r\n icon=\"devices\"\r\n rightSection={\r\n <>\r\n {(!isPending || id === 'main') && (\r\n <>\r\n <button className={`${classes.version}`} data-tooltip-id=\"appTooltip\" data-tooltip-content={`Restic version: ${restic}`}>\r\n <Icon type=\"restic\" size={14} /> <i>v{restic}</i>\r\n </button>\r\n <button className={`${classes.version}`} data-tooltip-id=\"appTooltip\" data-tooltip-content={`Rclone version: ${rclone}`}>\r\n <Icon type=\"rclone\" size={14} /> <i>v{rclone}</i>\r\n </button>\r\n <b>|</b>\r\n </>\r\n )}\r\n <button className={classes.actionBtn} onClick={() => setShowEditModal(true)}>\r\n <Icon size={14} type=\"edit-settings\" /> Edit\r\n </button>\r\n </>\r\n }\r\n />\r\n ) : (\r\n <span className={`skeleton-box ${classes.titleSkeleton}`} />\r\n )}\r\n <div className={classes.deviceContent}>\r\n {isLoading ? (\r\n <div className=\"loadingScreen\">\r\n <Icon size={60} type=\"loading\" />\r\n </div>\r\n ) : (\r\n <>\r\n <DeviceBackups plans={devicePlans} storages={deviceStorages} />\r\n {metrics?.system && <DeviceInfo metrics={metrics} isRefetching={false} />}\r\n </>\r\n )}\r\n </div>\r\n {device && showEditModal && <EditDevice device={device} close={() => setShowEditModal(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DeviceSingle;\r\n"],"names":["DeviceSingle","id","useParams","showEditModal","setShowEditModal","useState","data","isLoading","DeviceError","useGetDevice","metricsData","useGetSystemMetrics","errorStatusCode","NotFound","device","_a","metrics","_b","devicePlans","_c","deviceStorages","_d","deviceName","isPending","restic","rclone","jsxs","classes","jsx","PageHeader","Fragment","Icon","DeviceBackups","DeviceInfo","EditDevice"],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export declare function generateBackupDownload({ backupId }: {
|
|
1
|
+
export declare function generateBackupDownload({ backupId, replicationId }: {
|
|
2
2
|
backupId: string;
|
|
3
3
|
planId: string;
|
|
4
|
+
replicationId?: string;
|
|
4
5
|
}): Promise<any>;
|
|
5
6
|
export declare function useDownloadBackup(): import("@tanstack/react-query").UseMutationResult<any, Error, {
|
|
6
7
|
backupId: string;
|
|
7
8
|
planId: string;
|
|
9
|
+
replicationId?: string;
|
|
8
10
|
}, unknown>;
|
|
9
11
|
export declare function getBackupDownload(id: string): Promise<void>;
|
|
10
12
|
export declare function useGetBackupDownload(): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
|
|
@@ -58,10 +60,21 @@ export declare function useUpdateBackup(): import("@tanstack/react-query").UseMu
|
|
|
58
60
|
description?: string;
|
|
59
61
|
};
|
|
60
62
|
}, unknown>;
|
|
61
|
-
export declare function getSnapshotFiles({ backupId }: {
|
|
63
|
+
export declare function getSnapshotFiles({ backupId, replicationId }: {
|
|
62
64
|
backupId: string;
|
|
65
|
+
replicationId?: string;
|
|
63
66
|
}): Promise<any>;
|
|
64
67
|
export declare function useGetSnapshotFiles(payload: {
|
|
65
68
|
backupId: string;
|
|
66
69
|
}): import("@tanstack/react-query").UseQueryResult<any, Error>;
|
|
70
|
+
export declare function retryFailedReplications({ backupId, replicationId }: {
|
|
71
|
+
backupId: string;
|
|
72
|
+
planId: string;
|
|
73
|
+
replicationId: string;
|
|
74
|
+
}): Promise<any>;
|
|
75
|
+
export declare function useRetryFailedReplications(): import("@tanstack/react-query").UseMutationResult<any, Error, {
|
|
76
|
+
backupId: string;
|
|
77
|
+
planId: string;
|
|
78
|
+
replicationId: string;
|
|
79
|
+
}, unknown>;
|
|
67
80
|
//# sourceMappingURL=backups.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../src/services/backups.ts"],"names":[],"mappings":"AAOA,wBAAsB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../src/services/backups.ts"],"names":[],"mappings":"AAOA,wBAAsB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,gBAWrI;AAED,wBAAgB,iBAAiB;cAbqD,MAAM;YAAU,MAAM;oBAAkB,MAAM;YAuBnI;AAGD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,iBAuCjD;AAED,wBAAgB,oBAAoB,oFAUnC;AAGD,wBAAsB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gBAY5F;AACD,wBAAgB,uBAAuB;cAb8B,MAAM;YAAU,MAAM;YAsB1F;AAGD,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,gBAY5C;AAED,wBAAgB,eAAe,mFAO9B;AAGD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,gBASjJ;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAiCjH;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAOrH;AAGD,wBAAsB,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,gBAY5F;AACD,wBAAgB,eAAe;YAboC,MAAM;cAAY,MAAM;YAoB1F;AAGD,wBAAsB,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,gBAe5I;AACD,wBAAgB,eAAe;cAhB6C,MAAM;mBAAiB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;YAuB1I;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,gBAW/G;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,8DAQhE;AAGD,wBAAsB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,gBAYrI;AAED,wBAAgB,0BAA0B;cAd6C,MAAM;YAAU,MAAM;mBAAiB,MAAM;YAuBnI"}
|
|
@@ -1,52 +1,51 @@
|
|
|
1
|
-
import { useQueryClient as d, useMutation as
|
|
2
|
-
import { toast as
|
|
1
|
+
import { useQueryClient as d, useMutation as a, useQuery as p } from "@tanstack/react-query";
|
|
2
|
+
import { toast as $ } from "react-toastify";
|
|
3
3
|
import { API_URL as c } from "../utils/constants.js";
|
|
4
4
|
const h = /* @__PURE__ */ new Set();
|
|
5
|
-
async function
|
|
6
|
-
const
|
|
5
|
+
async function b({ backupId: e, replicationId: n }) {
|
|
6
|
+
const t = `${c}/backups/${e}/action/download?${n ? `replicationId=${n}` : ""}`, s = await (await fetch(t, {
|
|
7
7
|
method: "POST",
|
|
8
8
|
credentials: "include"
|
|
9
|
-
// headers: header,
|
|
10
9
|
})).json();
|
|
11
|
-
if (!
|
|
12
|
-
throw new Error(
|
|
13
|
-
return
|
|
10
|
+
if (!s.success)
|
|
11
|
+
throw new Error(s.error);
|
|
12
|
+
return s;
|
|
14
13
|
}
|
|
15
|
-
function
|
|
14
|
+
function C() {
|
|
16
15
|
const e = d();
|
|
17
|
-
return
|
|
18
|
-
mutationFn:
|
|
19
|
-
onSuccess: (
|
|
20
|
-
console.log("res :",
|
|
16
|
+
return a({
|
|
17
|
+
mutationFn: b,
|
|
18
|
+
onSuccess: (n, t) => {
|
|
19
|
+
console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
|
|
21
20
|
}
|
|
22
21
|
});
|
|
23
22
|
}
|
|
24
|
-
async function
|
|
23
|
+
async function g(e) {
|
|
25
24
|
var f, w;
|
|
26
|
-
const
|
|
25
|
+
const n = await fetch(`${c}/backups/${e}/action/download`, {
|
|
27
26
|
method: "GET",
|
|
28
27
|
credentials: "include"
|
|
29
28
|
// headers: header,
|
|
30
29
|
});
|
|
31
|
-
if (!
|
|
32
|
-
const l = await
|
|
30
|
+
if (!n.ok) {
|
|
31
|
+
const l = await n.json();
|
|
33
32
|
throw new Error(l.error);
|
|
34
33
|
}
|
|
35
|
-
const
|
|
34
|
+
const t = ((f = n.headers.get("content-disposition")) == null ? void 0 : f.split("filename=")[1]) || `backup-${e}.tar`, o = (w = n.body) == null ? void 0 : w.getReader(), s = new ReadableStream({
|
|
36
35
|
async start(l) {
|
|
37
36
|
for (; ; ) {
|
|
38
|
-
const { done:
|
|
39
|
-
if (
|
|
40
|
-
l.enqueue(
|
|
37
|
+
const { done: k, value: m } = await o.read();
|
|
38
|
+
if (k) break;
|
|
39
|
+
l.enqueue(m);
|
|
41
40
|
}
|
|
42
41
|
l.close(), o.releaseLock();
|
|
43
42
|
}
|
|
44
|
-
}),
|
|
45
|
-
|
|
43
|
+
}), u = await new Response(s).blob(), i = window.URL.createObjectURL(u), r = document.createElement("a");
|
|
44
|
+
r.href = i, r.download = t, document.body.appendChild(r), r.click(), r.remove(), window.URL.revokeObjectURL(i);
|
|
46
45
|
}
|
|
47
|
-
function
|
|
48
|
-
return
|
|
49
|
-
mutationFn:
|
|
46
|
+
function O() {
|
|
47
|
+
return a({
|
|
48
|
+
mutationFn: g,
|
|
50
49
|
onSuccess: (e) => {
|
|
51
50
|
console.log("# Backup Downloaded! :", e);
|
|
52
51
|
},
|
|
@@ -55,78 +54,78 @@ function C() {
|
|
|
55
54
|
}
|
|
56
55
|
});
|
|
57
56
|
}
|
|
58
|
-
async function
|
|
59
|
-
const
|
|
57
|
+
async function E({ backupId: e }) {
|
|
58
|
+
const t = await (await fetch(`${c}/backups/${e}/action/download`, {
|
|
60
59
|
method: "DELETE",
|
|
61
60
|
credentials: "include"
|
|
62
61
|
// headers: header,
|
|
63
62
|
})).json();
|
|
64
|
-
if (!
|
|
65
|
-
throw new Error(
|
|
66
|
-
return
|
|
63
|
+
if (!t.success)
|
|
64
|
+
throw new Error(t.error);
|
|
65
|
+
return t;
|
|
67
66
|
}
|
|
68
|
-
function
|
|
67
|
+
function P() {
|
|
69
68
|
const e = d();
|
|
70
|
-
return
|
|
71
|
-
mutationFn:
|
|
72
|
-
onSuccess: (
|
|
73
|
-
console.log("res :",
|
|
69
|
+
return a({
|
|
70
|
+
mutationFn: E,
|
|
71
|
+
onSuccess: (n, t) => {
|
|
72
|
+
console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
|
|
74
73
|
}
|
|
75
74
|
});
|
|
76
75
|
}
|
|
77
|
-
async function
|
|
78
|
-
const
|
|
76
|
+
async function B(e) {
|
|
77
|
+
const n = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${c}/backups/${e}`, {
|
|
79
78
|
method: "DELETE",
|
|
80
79
|
credentials: "include",
|
|
81
|
-
headers:
|
|
80
|
+
headers: n
|
|
82
81
|
})).json();
|
|
83
82
|
if (!o.success)
|
|
84
83
|
throw new Error(o.error);
|
|
85
84
|
return o;
|
|
86
85
|
}
|
|
87
|
-
function
|
|
88
|
-
return
|
|
89
|
-
mutationFn:
|
|
86
|
+
function v() {
|
|
87
|
+
return a({
|
|
88
|
+
mutationFn: B,
|
|
90
89
|
onSuccess: (e) => {
|
|
91
90
|
console.log("# Backup Removed! :", e);
|
|
92
91
|
}
|
|
93
92
|
});
|
|
94
93
|
}
|
|
95
|
-
async function
|
|
96
|
-
const
|
|
97
|
-
return await (await fetch(
|
|
94
|
+
async function y({ id: e, sourceId: n, sourceType: t, planId: o }) {
|
|
95
|
+
const s = new URL(`${c}/backups/${e}/progress?sourceId=${n}&sourceType=${t}&planId=${o}`);
|
|
96
|
+
return await (await fetch(s.toString(), {
|
|
98
97
|
method: "GET",
|
|
99
98
|
credentials: "include"
|
|
100
99
|
})).json();
|
|
101
100
|
}
|
|
102
|
-
function
|
|
103
|
-
const
|
|
101
|
+
function L(e) {
|
|
102
|
+
const n = d();
|
|
104
103
|
return p({
|
|
105
104
|
queryKey: ["progress-backup", e.id],
|
|
106
|
-
queryFn: () =>
|
|
105
|
+
queryFn: () => y(e),
|
|
107
106
|
refetchOnMount: !0,
|
|
108
107
|
retry: !1,
|
|
109
|
-
refetchInterval(
|
|
110
|
-
var
|
|
111
|
-
const o = (
|
|
112
|
-
if ((
|
|
113
|
-
const
|
|
114
|
-
return h.has(e.id) || (h.add(e.id),
|
|
108
|
+
refetchInterval(t) {
|
|
109
|
+
var u, i;
|
|
110
|
+
const o = (u = t.state) == null ? void 0 : u.data;
|
|
111
|
+
if ((i = o == null ? void 0 : o.events) == null ? void 0 : i.some((r) => r.phase === "finished" && r.completed === !0)) {
|
|
112
|
+
const r = (o == null ? void 0 : o.planId) || e.planId;
|
|
113
|
+
return h.has(e.id) || (h.add(e.id), r && (console.log("Invalidate Plan and Reload It :", r), n.invalidateQueries({ queryKey: ["plan", r] })), $.success("Process Complete!")), !1;
|
|
115
114
|
}
|
|
116
115
|
return 1e3;
|
|
117
116
|
}
|
|
118
117
|
});
|
|
119
118
|
}
|
|
120
|
-
function
|
|
119
|
+
function D(e) {
|
|
121
120
|
return p({
|
|
122
121
|
queryKey: ["progress-backup", e.id],
|
|
123
|
-
queryFn: () =>
|
|
122
|
+
queryFn: () => y(e),
|
|
124
123
|
refetchOnMount: !0,
|
|
125
124
|
retry: !1
|
|
126
125
|
});
|
|
127
126
|
}
|
|
128
|
-
async function
|
|
129
|
-
const o = await (await fetch(`${c}/backups/${
|
|
127
|
+
async function j({ planId: e, backupId: n }) {
|
|
128
|
+
const o = await (await fetch(`${c}/backups/${n}/action/cancel?planId=${e}`, {
|
|
130
129
|
method: "POST",
|
|
131
130
|
credentials: "include"
|
|
132
131
|
// headers: header,
|
|
@@ -135,71 +134,91 @@ async function S({ planId: e, backupId: t }) {
|
|
|
135
134
|
throw new Error(o.error);
|
|
136
135
|
return o;
|
|
137
136
|
}
|
|
138
|
-
function
|
|
139
|
-
return
|
|
140
|
-
mutationFn:
|
|
141
|
-
onSuccess: (e,
|
|
142
|
-
console.log("res :",
|
|
137
|
+
function G() {
|
|
138
|
+
return a({
|
|
139
|
+
mutationFn: j,
|
|
140
|
+
onSuccess: (e, n) => {
|
|
141
|
+
console.log("res :", n, e);
|
|
143
142
|
}
|
|
144
143
|
});
|
|
145
144
|
}
|
|
146
|
-
async function
|
|
147
|
-
console.log("updatePayload :",
|
|
148
|
-
const
|
|
145
|
+
async function F({ backupId: e, updatePayload: n }) {
|
|
146
|
+
console.log("updatePayload :", n);
|
|
147
|
+
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), s = await (await fetch(`${c}/backups/${e}`, {
|
|
149
148
|
method: "POST",
|
|
150
149
|
credentials: "include",
|
|
151
|
-
body: JSON.stringify(
|
|
152
|
-
headers:
|
|
150
|
+
body: JSON.stringify(n),
|
|
151
|
+
headers: t
|
|
153
152
|
})).json();
|
|
154
|
-
if (!
|
|
155
|
-
throw new Error(
|
|
156
|
-
return
|
|
157
|
-
}
|
|
158
|
-
function
|
|
159
|
-
return
|
|
160
|
-
mutationFn:
|
|
161
|
-
onSuccess: (e,
|
|
162
|
-
console.log("res :",
|
|
153
|
+
if (!s.success)
|
|
154
|
+
throw new Error(s.error);
|
|
155
|
+
return s;
|
|
156
|
+
}
|
|
157
|
+
function K() {
|
|
158
|
+
return a({
|
|
159
|
+
mutationFn: F,
|
|
160
|
+
onSuccess: (e, n) => {
|
|
161
|
+
console.log("res :", n, e);
|
|
163
162
|
}
|
|
164
163
|
});
|
|
165
164
|
}
|
|
166
|
-
async function
|
|
167
|
-
const
|
|
165
|
+
async function S({ backupId: e, replicationId: n }) {
|
|
166
|
+
const t = n ? `${c}/backups/${e}/files?replicationId=${n}` : `${c}/backups/${e}/files`, s = await (await fetch(t, {
|
|
168
167
|
method: "GET",
|
|
169
168
|
credentials: "include"
|
|
170
|
-
// headers: header,
|
|
171
169
|
})).json();
|
|
172
|
-
if (!
|
|
173
|
-
throw new Error(
|
|
174
|
-
return
|
|
170
|
+
if (!s.success)
|
|
171
|
+
throw new Error(s.error);
|
|
172
|
+
return s;
|
|
175
173
|
}
|
|
176
174
|
function U(e) {
|
|
177
175
|
return p({
|
|
178
176
|
queryKey: ["snapshot-files", e.backupId],
|
|
179
|
-
queryFn: () =>
|
|
177
|
+
queryFn: () => S(e),
|
|
180
178
|
refetchOnMount: !0,
|
|
181
179
|
staleTime: 1e3 * 60 * 60,
|
|
182
180
|
// Cache the data for 60 minutes
|
|
183
181
|
retry: !1
|
|
184
182
|
});
|
|
185
183
|
}
|
|
184
|
+
async function q({ backupId: e, replicationId: n }) {
|
|
185
|
+
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), s = await (await fetch(`${c}/backups/${e}/action/replication-retry?replicationId=${n}`, {
|
|
186
|
+
method: "POST",
|
|
187
|
+
credentials: "include",
|
|
188
|
+
headers: t
|
|
189
|
+
})).json();
|
|
190
|
+
if (!s.success)
|
|
191
|
+
throw new Error(s.error);
|
|
192
|
+
return s;
|
|
193
|
+
}
|
|
194
|
+
function Q() {
|
|
195
|
+
const e = d();
|
|
196
|
+
return a({
|
|
197
|
+
mutationFn: q,
|
|
198
|
+
onSuccess: (n, t) => {
|
|
199
|
+
console.log("res :", t, n), e.invalidateQueries({ queryKey: ["plan", t.planId] });
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
186
203
|
export {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
P as
|
|
198
|
-
|
|
199
|
-
C as
|
|
200
|
-
|
|
201
|
-
L as
|
|
204
|
+
j as cancelBackup,
|
|
205
|
+
E as cancelBackupDownload,
|
|
206
|
+
B as deleteBackup,
|
|
207
|
+
b as generateBackupDownload,
|
|
208
|
+
g as getBackupDownload,
|
|
209
|
+
y as getBackupProgress,
|
|
210
|
+
S as getSnapshotFiles,
|
|
211
|
+
q as retryFailedReplications,
|
|
212
|
+
F as updateBackup,
|
|
213
|
+
G as useCancelBackup,
|
|
214
|
+
P as useCancelBackupDownload,
|
|
215
|
+
v as useDeleteBackup,
|
|
216
|
+
C as useDownloadBackup,
|
|
217
|
+
O as useGetBackupDownload,
|
|
218
|
+
L as useGetBackupProgress,
|
|
219
|
+
D as useGetBackupProgressOnce,
|
|
202
220
|
U as useGetSnapshotFiles,
|
|
203
|
-
|
|
221
|
+
Q as useRetryFailedReplications,
|
|
222
|
+
K as useUpdateBackup
|
|
204
223
|
};
|
|
205
224
|
//# sourceMappingURL=backups.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backups.js","sources":["../../src/services/backups.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\n\r\nconst notifiedBackupProgress = new Set<string>();\r\n\r\n// Generate Download\r\nexport async function generateBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDownloadBackup() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: generateBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Get Download\r\nexport async function getBackupDownload(id: string) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}/action/download`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n if (!res.ok) {\r\n const data = await res.json();\r\n throw new Error(data.error);\r\n }\r\n\r\n const filename = res.headers.get('content-disposition')?.split('filename=')[1] || `backup-${id}.tar`;\r\n\r\n // Use streams API\r\n const reader = res.body?.getReader();\r\n const stream = new ReadableStream({\r\n async start(controller) {\r\n while (true) {\r\n const { done, value } = await reader!.read();\r\n if (done) break;\r\n controller.enqueue(value);\r\n }\r\n controller.close();\r\n reader!.releaseLock();\r\n },\r\n });\r\n\r\n // Create download from stream\r\n const blob = await new Response(stream).blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport function useGetBackupDownload() {\r\n return useMutation({\r\n mutationFn: getBackupDownload,\r\n onSuccess: (res) => {\r\n console.log('# Backup Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Cancel Download\r\nexport async function cancelBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackupDownload() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: cancelBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Backup\r\nexport async function deleteBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDeleteBackup() {\r\n return useMutation({\r\n mutationFn: deleteBackup,\r\n onSuccess: (res) => {\r\n console.log('# Backup Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getBackupProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/backups/${id}/progress?sourceId=${sourceId}&sourceType=${sourceType}&planId=${planId}`);\r\n\r\n const res = await fetch(url.toString(), {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n return data;\r\n}\r\n\r\nexport function useGetBackupProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n refetchInterval(query) {\r\n // Only refetch if the browser tab is active\r\n // if (document.hidden) return false;\r\n\r\n // console.log('query :', query.state?.data);\r\n const progressData = query.state?.data;\r\n\r\n // Check if backup is finished by looking for a \"finished\" phase event\r\n const isFinished = progressData?.events?.some((event: any) => event.phase === 'finished' && event.completed === true);\r\n\r\n if (isFinished) {\r\n const planId = progressData?.planId || payload.planId;\r\n if (!notifiedBackupProgress.has(payload.id)) {\r\n notifiedBackupProgress.add(payload.id);\r\n if (planId) {\r\n console.log('Invalidate Plan and Reload It :', planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n }\r\n toast.success('Process Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\n\r\nexport function useGetBackupProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Cancel Backup\r\nexport async function cancelBackup({ planId, backupId }: { planId: string; backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/cancel?planId=${planId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackup() {\r\n return useMutation({\r\n mutationFn: cancelBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Update Backup Title and Description\r\nexport async function updateBackup({ backupId, updatePayload }: { backupId: string; updatePayload: { title?: string; description?: string } }) {\r\n console.log('updatePayload :', updatePayload);\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n body: JSON.stringify(updatePayload),\r\n headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useUpdateBackup() {\r\n return useMutation({\r\n mutationFn: updateBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Snapshot Files\r\nexport async function getSnapshotFiles({ backupId }: { backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/files`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useGetSnapshotFiles(payload: { backupId: string }) {\r\n return useQuery({\r\n queryKey: ['snapshot-files', payload.backupId],\r\n queryFn: () => getSnapshotFiles(payload),\r\n refetchOnMount: true,\r\n staleTime: 1000 * 60 * 60, // Cache the data for 60 minutes\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedBackupProgress","generateBackupDownload","backupId","data","API_URL","useDownloadBackup","queryClient","useQueryClient","useMutation","res","payload","getBackupDownload","id","filename","_a","reader","_b","stream","controller","done","value","blob","url","link","useGetBackupDownload","cancelBackupDownload","useCancelBackupDownload","deleteBackup","header","useDeleteBackup","getBackupProgress","sourceId","sourceType","planId","useGetBackupProgress","useQuery","query","progressData","event","toast","useGetBackupProgressOnce","cancelBackup","useCancelBackup","updateBackup","updatePayload","useUpdateBackup","getSnapshotFiles","useGetSnapshotFiles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"backups.js","sources":["../../src/services/backups.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\n\r\nconst notifiedBackupProgress = new Set<string>();\r\n\r\n// Generate Download\r\nexport async function generateBackupDownload({ backupId, replicationId }: { backupId: string; planId: string; replicationId?: string }) {\r\n const url = `${API_URL}/backups/${backupId}/action/download?${replicationId ? `replicationId=${replicationId}` : ''}`;\r\n const res = await fetch(url, {\r\n method: 'POST',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDownloadBackup() {\r\n const queryClient = useQueryClient();\r\n\r\n return useMutation({\r\n mutationFn: generateBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Get Download\r\nexport async function getBackupDownload(id: string) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}/action/download`, {\r\n method: 'GET',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n if (!res.ok) {\r\n const data = await res.json();\r\n throw new Error(data.error);\r\n }\r\n\r\n const filename = res.headers.get('content-disposition')?.split('filename=')[1] || `backup-${id}.tar`;\r\n\r\n // Use streams API\r\n const reader = res.body?.getReader();\r\n const stream = new ReadableStream({\r\n async start(controller) {\r\n while (true) {\r\n const { done, value } = await reader!.read();\r\n if (done) break;\r\n controller.enqueue(value);\r\n }\r\n controller.close();\r\n reader!.releaseLock();\r\n },\r\n });\r\n\r\n // Create download from stream\r\n const blob = await new Response(stream).blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\nexport function useGetBackupDownload() {\r\n return useMutation({\r\n mutationFn: getBackupDownload,\r\n onSuccess: (res) => {\r\n console.log('# Backup Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Cancel Download\r\nexport async function cancelBackupDownload({ backupId }: { backupId: string; planId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/download`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackupDownload() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: cancelBackupDownload,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Backup\r\nexport async function deleteBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${id}`, {\r\n method: 'DELETE',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useDeleteBackup() {\r\n return useMutation({\r\n mutationFn: deleteBackup,\r\n onSuccess: (res) => {\r\n console.log('# Backup Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getBackupProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/backups/${id}/progress?sourceId=${sourceId}&sourceType=${sourceType}&planId=${planId}`);\r\n\r\n const res = await fetch(url.toString(), {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n return data;\r\n}\r\n\r\nexport function useGetBackupProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n refetchInterval(query) {\r\n // Only refetch if the browser tab is active\r\n // if (document.hidden) return false;\r\n\r\n // console.log('query :', query.state?.data);\r\n const progressData = query.state?.data;\r\n\r\n // Check if backup is finished by looking for a \"finished\" phase event\r\n const isFinished = progressData?.events?.some((event: any) => event.phase === 'finished' && event.completed === true);\r\n\r\n if (isFinished) {\r\n const planId = progressData?.planId || payload.planId;\r\n if (!notifiedBackupProgress.has(payload.id)) {\r\n notifiedBackupProgress.add(payload.id);\r\n if (planId) {\r\n console.log('Invalidate Plan and Reload It :', planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n }\r\n toast.success('Process Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\n\r\nexport function useGetBackupProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-backup', payload.id],\r\n queryFn: () => getBackupProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Cancel Backup\r\nexport async function cancelBackup({ planId, backupId }: { planId: string; backupId: string }) {\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/cancel?planId=${planId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n // headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useCancelBackup() {\r\n return useMutation({\r\n mutationFn: cancelBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Update Backup Title and Description\r\nexport async function updateBackup({ backupId, updatePayload }: { backupId: string; updatePayload: { title?: string; description?: string } }) {\r\n console.log('updatePayload :', updatePayload);\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n body: JSON.stringify(updatePayload),\r\n headers: header,\r\n });\r\n // Check if response is ok\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useUpdateBackup() {\r\n return useMutation({\r\n mutationFn: updateBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Snapshot Files\r\nexport async function getSnapshotFiles({ backupId, replicationId }: { backupId: string; replicationId?: string }) {\r\n const url = replicationId ? `${API_URL}/backups/${backupId}/files?replicationId=${replicationId}` : `${API_URL}/backups/${backupId}/files`;\r\n const res = await fetch(url, {\r\n method: 'GET',\r\n credentials: 'include',\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\nexport function useGetSnapshotFiles(payload: { backupId: string }) {\r\n return useQuery({\r\n queryKey: ['snapshot-files', payload.backupId],\r\n queryFn: () => getSnapshotFiles(payload),\r\n refetchOnMount: true,\r\n staleTime: 1000 * 60 * 60, // Cache the data for 60 minutes\r\n retry: false,\r\n });\r\n}\r\n\r\n// Retry Failed Replications\r\nexport async function retryFailedReplications({ backupId, replicationId }: { backupId: string; planId: string; replicationId: string }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/backups/${backupId}/action/replication-retry?replicationId=${replicationId}`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useRetryFailedReplications() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: retryFailedReplications,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n"],"names":["notifiedBackupProgress","generateBackupDownload","backupId","replicationId","url","API_URL","data","useDownloadBackup","queryClient","useQueryClient","useMutation","res","payload","getBackupDownload","id","filename","_a","reader","_b","stream","controller","done","value","blob","link","useGetBackupDownload","cancelBackupDownload","useCancelBackupDownload","deleteBackup","header","useDeleteBackup","getBackupProgress","sourceId","sourceType","planId","useGetBackupProgress","useQuery","query","progressData","event","toast","useGetBackupProgressOnce","cancelBackup","useCancelBackup","updateBackup","updatePayload","useUpdateBackup","getSnapshotFiles","useGetSnapshotFiles","retryFailedReplications","useRetryFailedReplications"],"mappings":"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"}
|
|
@@ -40,4 +40,18 @@ export declare function useCheckActiveBackupsOrRestore(): import("@tanstack/reac
|
|
|
40
40
|
planId: string;
|
|
41
41
|
type: "backup" | "restore";
|
|
42
42
|
}, unknown>;
|
|
43
|
+
export declare function deleteReplicationStorage({ planID, storageID, storagePath, removeData, replicationId, }: {
|
|
44
|
+
planID: string;
|
|
45
|
+
storageID: string;
|
|
46
|
+
storagePath: string;
|
|
47
|
+
removeData: boolean;
|
|
48
|
+
replicationId?: string;
|
|
49
|
+
}): Promise<any>;
|
|
50
|
+
export declare function useDeleteReplicationStorage(): import("@tanstack/react-query").UseMutationResult<any, Error, {
|
|
51
|
+
planID: string;
|
|
52
|
+
storageID: string;
|
|
53
|
+
storagePath: string;
|
|
54
|
+
removeData: boolean;
|
|
55
|
+
replicationId?: string;
|
|
56
|
+
}, unknown>;
|
|
43
57
|
//# sourceMappingURL=plans.d.ts.map
|