@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restores.d.ts","sourceRoot":"","sources":["../../src/services/restores.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,iBAYnC;AAED,wBAAgB,cAAc,+DAO7B;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,gBAehD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8DAQvC;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAO/B;AAGD,wBAAsB,aAAa,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,
|
|
1
|
+
{"version":3,"file":"restores.d.ts","sourceRoot":"","sources":["../../src/services/restores.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,iBAYnC;AAED,wBAAgB,cAAc,+DAO7B;AAGD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,gBAehD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,8DAQvC;AAGD,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM,gBAY7C;AAED,wBAAgB,gBAAgB,mFAO/B;AAGD,wBAAsB,aAAa,CAAC,EACjC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,GACf,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACzB,gBAaA;AAED,wBAAgB,gBAAgB;cAxBnB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;kBACL,OAAO;gBACT,MAAM;oBACF,MAAM;YAyBxB;AAGD,wBAAsB,kBAAkB,CAAC,EACtC,QAAQ,EACR,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,aAAa,GACf,EAAE;IACA,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACzB,gBAaA;AAED,wBAAgB,qBAAqB;cAxBxB,MAAM;YACR,MAAM;YACN,MAAM;eACH,MAAM;eACN,MAAM,EAAE;eACR,MAAM,EAAE;mBACJ,OAAO;gBACV,MAAM;oBACF,MAAM;YAuBxB;AAGD,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,gBAc/C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,8DAQ5C;AAGD,wBAAsB,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,gBAY/F;AACD,wBAAgB,gBAAgB;YAbqC,MAAM;eAAa,MAAM;YAoB7F;AAGD,wBAAsB,kBAAkB,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,gBASlJ;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAgClH;AACD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,8DAOtH"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { useQuery as d, useMutation as l, useQueryClient as
|
|
2
|
-
import { toast as
|
|
1
|
+
import { useQuery as d, useMutation as l, useQueryClient as y } from "@tanstack/react-query";
|
|
2
|
+
import { toast as m } from "react-toastify";
|
|
3
3
|
import { API_URL as o } from "../utils/constants.js";
|
|
4
|
-
const
|
|
5
|
-
async function
|
|
4
|
+
const w = /* @__PURE__ */ new Set();
|
|
5
|
+
async function g() {
|
|
6
6
|
const e = new URL(`${o}/restores`), s = await (await fetch(e.toString(), {
|
|
7
7
|
method: "GET",
|
|
8
8
|
credentials: "include"
|
|
@@ -11,15 +11,15 @@ async function R() {
|
|
|
11
11
|
throw new Error(s.error);
|
|
12
12
|
return s;
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function P() {
|
|
15
15
|
return d({
|
|
16
16
|
queryKey: ["restores"],
|
|
17
|
-
queryFn: () =>
|
|
17
|
+
queryFn: () => g(),
|
|
18
18
|
refetchOnMount: !0,
|
|
19
19
|
retry: !1
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
async function
|
|
22
|
+
async function S(e) {
|
|
23
23
|
if (!e)
|
|
24
24
|
throw new Error("ID Not Provided.");
|
|
25
25
|
const r = new URL(`${o}/restores/${e}`), t = await (await fetch(r.toString(), {
|
|
@@ -30,16 +30,16 @@ async function m(e) {
|
|
|
30
30
|
throw new Error(t.error);
|
|
31
31
|
return t;
|
|
32
32
|
}
|
|
33
|
-
function
|
|
33
|
+
function G(e) {
|
|
34
34
|
return d({
|
|
35
35
|
queryKey: ["restore", e],
|
|
36
|
-
queryFn: () =>
|
|
36
|
+
queryFn: () => S(e),
|
|
37
37
|
refetchOnMount: !0,
|
|
38
38
|
retry: !1,
|
|
39
39
|
staleTime: 0
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
async function
|
|
42
|
+
async function $(e) {
|
|
43
43
|
const r = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), t = await (await fetch(`${o}/restores/${e}`, {
|
|
44
44
|
method: "DELETE",
|
|
45
45
|
credentials: "include",
|
|
@@ -49,70 +49,74 @@ async function g(e) {
|
|
|
49
49
|
throw new Error(t.error);
|
|
50
50
|
return t;
|
|
51
51
|
}
|
|
52
|
-
function
|
|
52
|
+
function C() {
|
|
53
53
|
return l({
|
|
54
|
-
mutationFn:
|
|
54
|
+
mutationFn: $,
|
|
55
55
|
onSuccess: (e) => {
|
|
56
56
|
console.log("# Restore Removed! :", e);
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
-
async function
|
|
60
|
+
async function E({
|
|
61
61
|
backupId: e,
|
|
62
62
|
planId: r,
|
|
63
63
|
target: s,
|
|
64
64
|
overwrite: t,
|
|
65
65
|
includes: u,
|
|
66
66
|
excludes: c,
|
|
67
|
-
deleteOption: a
|
|
67
|
+
deleteOption: a,
|
|
68
|
+
storageId: n,
|
|
69
|
+
replicationId: f
|
|
68
70
|
}) {
|
|
69
|
-
const
|
|
71
|
+
const h = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/restore`, {
|
|
70
72
|
method: "POST",
|
|
71
73
|
credentials: "include",
|
|
72
|
-
headers:
|
|
73
|
-
body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a })
|
|
74
|
+
headers: h,
|
|
75
|
+
body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a, storageId: n, replicationId: f })
|
|
74
76
|
})).json();
|
|
75
77
|
if (!i.success)
|
|
76
78
|
throw new Error(i.error);
|
|
77
79
|
return i;
|
|
78
80
|
}
|
|
79
|
-
function
|
|
80
|
-
const e =
|
|
81
|
+
function v() {
|
|
82
|
+
const e = y();
|
|
81
83
|
return l({
|
|
82
|
-
mutationFn:
|
|
84
|
+
mutationFn: E,
|
|
83
85
|
onSuccess: (r, s) => {
|
|
84
86
|
console.log("# Backup Restored! :", r, s), e.invalidateQueries({ queryKey: ["plan", s.planId] });
|
|
85
87
|
}
|
|
86
88
|
});
|
|
87
89
|
}
|
|
88
|
-
async function
|
|
90
|
+
async function j({
|
|
89
91
|
backupId: e,
|
|
90
92
|
planId: r,
|
|
91
93
|
target: s,
|
|
92
94
|
overwrite: t,
|
|
93
95
|
includes: u,
|
|
94
96
|
excludes: c,
|
|
95
|
-
deleteOption: a
|
|
97
|
+
deleteOption: a,
|
|
98
|
+
storageId: n,
|
|
99
|
+
replicationId: f
|
|
96
100
|
}) {
|
|
97
|
-
const
|
|
101
|
+
const h = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), i = await (await fetch(`${o}/restores/action/dryrestore`, {
|
|
98
102
|
method: "POST",
|
|
99
103
|
credentials: "include",
|
|
100
|
-
headers:
|
|
101
|
-
body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a })
|
|
104
|
+
headers: h,
|
|
105
|
+
body: JSON.stringify({ backupId: e, planId: r, target: s, overwrite: t, includes: u, excludes: c, delete: a, storageId: n, replicationId: f })
|
|
102
106
|
})).json();
|
|
103
107
|
if (!i.success)
|
|
104
108
|
throw new Error(i.error);
|
|
105
109
|
return i;
|
|
106
110
|
}
|
|
107
|
-
function
|
|
111
|
+
function K() {
|
|
108
112
|
return l({
|
|
109
|
-
mutationFn:
|
|
113
|
+
mutationFn: j,
|
|
110
114
|
onSuccess: (e, r) => {
|
|
111
115
|
console.log("# Backup Restore Stats! :", e, r);
|
|
112
116
|
}
|
|
113
117
|
});
|
|
114
118
|
}
|
|
115
|
-
async function
|
|
119
|
+
async function q(e) {
|
|
116
120
|
if (!e)
|
|
117
121
|
throw new Error("ID Not Provided.");
|
|
118
122
|
const s = await (await fetch(`${o}/restores/${e}/stats`, {
|
|
@@ -123,16 +127,16 @@ async function E(e) {
|
|
|
123
127
|
throw new Error(s.error);
|
|
124
128
|
return s;
|
|
125
129
|
}
|
|
126
|
-
function
|
|
130
|
+
function M(e) {
|
|
127
131
|
return d({
|
|
128
132
|
queryKey: ["restore-stats", e],
|
|
129
|
-
queryFn: () =>
|
|
133
|
+
queryFn: () => q(e),
|
|
130
134
|
refetchOnMount: !0,
|
|
131
135
|
retry: !1,
|
|
132
136
|
staleTime: 0
|
|
133
137
|
});
|
|
134
138
|
}
|
|
135
|
-
async function
|
|
139
|
+
async function T({ planId: e, restoreId: r }) {
|
|
136
140
|
const t = await (await fetch(`${o}/restores/${r}/action/cancel?planId=${e}`, {
|
|
137
141
|
method: "POST",
|
|
138
142
|
credentials: "include"
|
|
@@ -142,26 +146,26 @@ async function j({ planId: e, restoreId: r }) {
|
|
|
142
146
|
throw new Error(t.error);
|
|
143
147
|
return t;
|
|
144
148
|
}
|
|
145
|
-
function
|
|
149
|
+
function A() {
|
|
146
150
|
return l({
|
|
147
|
-
mutationFn:
|
|
151
|
+
mutationFn: T,
|
|
148
152
|
onSuccess: (e, r) => {
|
|
149
153
|
console.log("res :", r, e);
|
|
150
154
|
}
|
|
151
155
|
});
|
|
152
156
|
}
|
|
153
|
-
async function
|
|
157
|
+
async function p({ id: e, sourceId: r, sourceType: s, planId: t }) {
|
|
154
158
|
const u = new URL(`${o}/restores/${e}/progress?sourceId=${r}&sourceType=${s}&planId=${t}`);
|
|
155
159
|
return await (await fetch(u.toString(), {
|
|
156
160
|
method: "GET",
|
|
157
161
|
credentials: "include"
|
|
158
162
|
})).json();
|
|
159
163
|
}
|
|
160
|
-
function
|
|
161
|
-
const r =
|
|
164
|
+
function L(e) {
|
|
165
|
+
const r = y();
|
|
162
166
|
return d({
|
|
163
167
|
queryKey: ["progress-restore", e.id],
|
|
164
|
-
queryFn: () =>
|
|
168
|
+
queryFn: () => p(e),
|
|
165
169
|
refetchOnMount: !0,
|
|
166
170
|
retry: !1,
|
|
167
171
|
refetchInterval(s) {
|
|
@@ -169,37 +173,37 @@ function M(e) {
|
|
|
169
173
|
const t = (c = s.state) == null ? void 0 : c.data;
|
|
170
174
|
if ((a = t == null ? void 0 : t.events) == null ? void 0 : a.some((n) => n.phase === "finished" && n.completed === !0)) {
|
|
171
175
|
const n = (t == null ? void 0 : t.planId) || e.planId;
|
|
172
|
-
return
|
|
176
|
+
return w.has(e.id) || (w.add(e.id), n && (console.log("Invalidate Plan and Reload It :", n), r.invalidateQueries({ queryKey: ["plan", n] })), m.success("Restoration Complete!")), !1;
|
|
173
177
|
}
|
|
174
178
|
return 1e3;
|
|
175
179
|
}
|
|
176
180
|
});
|
|
177
181
|
}
|
|
178
|
-
function
|
|
182
|
+
function k(e) {
|
|
179
183
|
return d({
|
|
180
184
|
queryKey: ["progress-restore", e.id],
|
|
181
|
-
queryFn: () =>
|
|
185
|
+
queryFn: () => p(e),
|
|
182
186
|
refetchOnMount: !0,
|
|
183
187
|
retry: !1
|
|
184
188
|
});
|
|
185
189
|
}
|
|
186
190
|
export {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
191
|
+
T as cancelRestore,
|
|
192
|
+
$ as deleteRestore,
|
|
193
|
+
g as getAllRestores,
|
|
194
|
+
j as getDryRestoreStats,
|
|
195
|
+
p as getRestoreProgress,
|
|
196
|
+
q as getRestoreStats,
|
|
197
|
+
S as getSingleRestore,
|
|
198
|
+
E as restoreBackup,
|
|
199
|
+
A as useCancelRestore,
|
|
200
|
+
C as useDeleteRestore,
|
|
201
|
+
K as useGetDryRestoreStats,
|
|
202
|
+
G as useGetRestore,
|
|
203
|
+
L as useGetRestoreProgress,
|
|
204
|
+
k as useGetRestoreProgressOnce,
|
|
205
|
+
M as useGetRestoreStats,
|
|
206
|
+
P as useGetRestores,
|
|
207
|
+
v as useRestoreBackup
|
|
204
208
|
};
|
|
205
209
|
//# sourceMappingURL=restores.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restores.js","sources":["../../src/services/restores.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 notifiedRestoreProgress = new Set<string>();\r\n\r\n// Get All Restores\r\nexport async function getAllRestores() {\r\n const url = new URL(`${API_URL}/restores`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestores() {\r\n return useQuery({\r\n queryKey: ['restores'],\r\n queryFn: () => getAllRestores(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Restore\r\nexport async function getSingleRestore(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/restores/${id}`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestore(id: string) {\r\n return useQuery({\r\n queryKey: ['restore', id],\r\n queryFn: () => getSingleRestore(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Remove Restore\r\nexport async function deleteRestore(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/${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 useDeleteRestore() {\r\n return useMutation({\r\n mutationFn: deleteRestore,\r\n onSuccess: (res) => {\r\n console.log('# Restore Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Restore Backup\r\nexport async function restoreBackup({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption: boolean;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption }),\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 useRestoreBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: restoreBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restored! :', res, payload);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// DRY Restore Backup\r\nexport async function getDryRestoreStats({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption?: boolean;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/dryrestore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption }),\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 useGetDryRestoreStats() {\r\n return useMutation({\r\n mutationFn: getDryRestoreStats,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restore Stats! :', res, payload);\r\n },\r\n });\r\n}\r\n\r\n// Get Restore Stats\r\nexport async function getRestoreStats(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n\r\n const res = await fetch(`${API_URL}/restores/${id}/stats`, {\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\n\r\nexport function useGetRestoreStats(id: string) {\r\n return useQuery({\r\n queryKey: ['restore-stats', id],\r\n queryFn: () => getRestoreStats(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Cancel Restore\r\nexport async function cancelRestore({ planId, restoreId }: { planId: string; restoreId: string }) {\r\n const res = await fetch(`${API_URL}/restores/${restoreId}/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 useCancelRestore() {\r\n return useMutation({\r\n mutationFn: cancelRestore,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getRestoreProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/restores/${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 useGetRestoreProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(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 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 (!notifiedRestoreProgress.has(payload.id)) {\r\n notifiedRestoreProgress.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('Restoration Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\nexport function useGetRestoreProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedRestoreProgress","getAllRestores","url","API_URL","data","useGetRestores","useQuery","getSingleRestore","id","useGetRestore","deleteRestore","header","useDeleteRestore","useMutation","res","restoreBackup","backupId","planId","target","overwrite","includes","excludes","deleteOption","useRestoreBackup","queryClient","useQueryClient","payload","getDryRestoreStats","useGetDryRestoreStats","getRestoreStats","useGetRestoreStats","cancelRestore","restoreId","useCancelRestore","getRestoreProgress","sourceId","sourceType","useGetRestoreProgress","query","progressData","_a","_b","event","toast","useGetRestoreProgressOnce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"restores.js","sources":["../../src/services/restores.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 notifiedRestoreProgress = new Set<string>();\r\n\r\n// Get All Restores\r\nexport async function getAllRestores() {\r\n const url = new URL(`${API_URL}/restores`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestores() {\r\n return useQuery({\r\n queryKey: ['restores'],\r\n queryFn: () => getAllRestores(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Restore\r\nexport async function getSingleRestore(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/restores/${id}`);\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 if (!data.success) {\r\n throw new Error(data.error);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetRestore(id: string) {\r\n return useQuery({\r\n queryKey: ['restore', id],\r\n queryFn: () => getSingleRestore(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Remove Restore\r\nexport async function deleteRestore(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/${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 useDeleteRestore() {\r\n return useMutation({\r\n mutationFn: deleteRestore,\r\n onSuccess: (res) => {\r\n console.log('# Restore Removed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Restore Backup\r\nexport async function restoreBackup({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n storageId,\r\n replicationId,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption: boolean;\r\n storageId?: string;\r\n replicationId?: string;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/restore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption, storageId, replicationId }),\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 useRestoreBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: restoreBackup,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restored! :', res, payload);\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n },\r\n });\r\n}\r\n\r\n// DRY Restore Backup\r\nexport async function getDryRestoreStats({\r\n backupId,\r\n planId,\r\n target,\r\n overwrite,\r\n includes,\r\n excludes,\r\n deleteOption,\r\n storageId,\r\n replicationId,\r\n}: {\r\n backupId: string;\r\n planId: string;\r\n target: string;\r\n overwrite: string;\r\n includes?: string[];\r\n excludes?: string[];\r\n deleteOption?: boolean;\r\n storageId?: string;\r\n replicationId?: string;\r\n}) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/restores/action/dryrestore`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ backupId, planId, target, overwrite, includes, excludes, delete: deleteOption, storageId, replicationId }),\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 useGetDryRestoreStats() {\r\n return useMutation({\r\n mutationFn: getDryRestoreStats,\r\n onSuccess: (res, payload) => {\r\n console.log('# Backup Restore Stats! :', res, payload);\r\n },\r\n });\r\n}\r\n\r\n// Get Restore Stats\r\nexport async function getRestoreStats(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n\r\n const res = await fetch(`${API_URL}/restores/${id}/stats`, {\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\n\r\nexport function useGetRestoreStats(id: string) {\r\n return useQuery({\r\n queryKey: ['restore-stats', id],\r\n queryFn: () => getRestoreStats(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Cancel Restore\r\nexport async function cancelRestore({ planId, restoreId }: { planId: string; restoreId: string }) {\r\n const res = await fetch(`${API_URL}/restores/${restoreId}/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 useCancelRestore() {\r\n return useMutation({\r\n mutationFn: cancelRestore,\r\n onSuccess: (res, payload) => {\r\n console.log('res :', payload, res);\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function getRestoreProgress({ id, sourceId, sourceType, planId }: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const url = new URL(`${API_URL}/restores/${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 useGetRestoreProgress(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n const queryClient = useQueryClient();\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(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 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 (!notifiedRestoreProgress.has(payload.id)) {\r\n notifiedRestoreProgress.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('Restoration Complete!');\r\n }\r\n return false;\r\n }\r\n\r\n return 1000;\r\n },\r\n });\r\n}\r\nexport function useGetRestoreProgressOnce(payload: { id: string; sourceId: string; sourceType: string; planId: string }) {\r\n return useQuery({\r\n queryKey: ['progress-restore', payload.id],\r\n queryFn: () => getRestoreProgress(payload),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n"],"names":["notifiedRestoreProgress","getAllRestores","url","API_URL","data","useGetRestores","useQuery","getSingleRestore","id","useGetRestore","deleteRestore","header","useDeleteRestore","useMutation","res","restoreBackup","backupId","planId","target","overwrite","includes","excludes","deleteOption","storageId","replicationId","useRestoreBackup","queryClient","useQueryClient","payload","getDryRestoreStats","useGetDryRestoreStats","getRestoreStats","useGetRestoreStats","cancelRestore","restoreId","useCancelRestore","getRestoreProgress","sourceId","sourceType","useGetRestoreProgress","query","progressData","_a","_b","event","toast","useGetRestoreProgressOnce"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAGtD,wBAAsB,YAAY,
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/services/users.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAGtD,wBAAsB,YAAY,iBAyBjC;AAED,wBAAgB,OAAO,+DAOtB;AAGD,wBAAsB,SAAS,CAAC,WAAW,EAAE,gBAAgB,gBAa5D;AAGD,wBAAgB,QAAQ,6FAcvB;AAGD,wBAAsB,UAAU,iBAU/B;AAED,wBAAgB,SAAS,iFAUxB"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { API_URL as
|
|
2
|
-
import { useQuery as i, useMutation as
|
|
1
|
+
import { API_URL as r } from "../utils/constants.js";
|
|
2
|
+
import { useQuery as c, useQueryClient as i, useMutation as u } from "@tanstack/react-query";
|
|
3
3
|
import { useNavigate as a } from "react-router";
|
|
4
|
-
async function
|
|
5
|
-
const e = await fetch(`${
|
|
6
|
-
if (!e.ok)
|
|
4
|
+
async function d() {
|
|
5
|
+
const e = await fetch(`${r}/user/validate`, { method: "GET", credentials: "include" }), t = e.headers.get("x-app-version"), o = e.headers.get("x-server-os"), n = e.headers.get("x-install-type") || "dev", s = e.headers.get("x-setup-pending") === "1";
|
|
6
|
+
if (window.plutonVersion = t || "unknown", window.plutonServerOS = o || "unknown", window.plutonInstallType = n, window.plutonSetupPending = s, !e.ok)
|
|
7
7
|
throw new Error("Invalid authentication");
|
|
8
|
-
|
|
9
|
-
return window.plutonVersion = t || "unknown", window.plutonServerOS = r || "unknown", window.plutonInstallType = n, {
|
|
8
|
+
return {
|
|
10
9
|
...await e.json(),
|
|
11
10
|
appVersion: t,
|
|
12
|
-
installType: n
|
|
11
|
+
installType: n,
|
|
12
|
+
setupPending: s
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
function
|
|
16
|
-
return
|
|
15
|
+
function g() {
|
|
16
|
+
return c({
|
|
17
17
|
queryKey: ["auth"],
|
|
18
|
-
queryFn:
|
|
18
|
+
queryFn: d,
|
|
19
19
|
refetchOnMount: !0,
|
|
20
20
|
retry: !1
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
-
async function
|
|
24
|
-
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), n = await (await fetch(`${
|
|
23
|
+
async function l(e) {
|
|
24
|
+
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), n = await (await fetch(`${r}/user/login`, {
|
|
25
25
|
method: "POST",
|
|
26
26
|
credentials: "include",
|
|
27
27
|
headers: t,
|
|
@@ -31,17 +31,17 @@ async function c(e) {
|
|
|
31
31
|
throw new Error(n.error);
|
|
32
32
|
return n;
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
const e = a();
|
|
36
|
-
return
|
|
37
|
-
mutationFn:
|
|
38
|
-
onSuccess: (
|
|
39
|
-
|
|
34
|
+
function v() {
|
|
35
|
+
const e = a(), t = i();
|
|
36
|
+
return u({
|
|
37
|
+
mutationFn: l,
|
|
38
|
+
onSuccess: (o) => {
|
|
39
|
+
t.removeQueries({ queryKey: ["auth"] }), o.totpRequired ? e("/login/verify-otp") : e("/");
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
async function
|
|
44
|
-
const t = await (await fetch(`${
|
|
43
|
+
async function p() {
|
|
44
|
+
const t = await (await fetch(`${r}/user/logout`, {
|
|
45
45
|
method: "POST",
|
|
46
46
|
credentials: "include"
|
|
47
47
|
})).json();
|
|
@@ -49,21 +49,21 @@ async function l() {
|
|
|
49
49
|
throw new Error(t.error);
|
|
50
50
|
return t;
|
|
51
51
|
}
|
|
52
|
-
function
|
|
53
|
-
const e = a();
|
|
54
|
-
return
|
|
55
|
-
mutationFn:
|
|
52
|
+
function m() {
|
|
53
|
+
const e = a(), t = i();
|
|
54
|
+
return u({
|
|
55
|
+
mutationFn: p,
|
|
56
56
|
onSuccess: () => {
|
|
57
|
-
e("/login");
|
|
57
|
+
t.removeQueries({ queryKey: ["auth"] }), e("/login");
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
export {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
l as loginUser,
|
|
63
|
+
p as logoutUser,
|
|
64
|
+
g as useAuth,
|
|
65
|
+
v as useLogin,
|
|
66
|
+
m as useLogout,
|
|
67
|
+
d as validateAuth
|
|
68
68
|
};
|
|
69
69
|
//# sourceMappingURL=users.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sources":["../../src/services/users.ts"],"sourcesContent":["import { API_URL } from '../utils/constants';\r\nimport { useQuery, useMutation } from '@tanstack/react-query';\r\nimport { useNavigate } from 'react-router';\r\n\r\ninterface LoginCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport type InstallType = 'docker' | 'binary' | 'dev';\r\n\r\n//VALIDATE USER\r\nexport async function validateAuth() {\r\n const res = await fetch(`${API_URL}/user/validate`, { method: 'GET', credentials: 'include' });\r\n
|
|
1
|
+
{"version":3,"file":"users.js","sources":["../../src/services/users.ts"],"sourcesContent":["import { API_URL } from '../utils/constants';\r\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport { useNavigate } from 'react-router';\r\n\r\ninterface LoginCredentials {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport type InstallType = 'docker' | 'binary' | 'dev';\r\n\r\n//VALIDATE USER\r\nexport async function validateAuth() {\r\n const res = await fetch(`${API_URL}/user/validate`, { method: 'GET', credentials: 'include' });\r\n\r\n // Read headers before checking status - middleware sets these on all responses\r\n const appVersion = res.headers.get('x-app-version');\r\n const serverOS = res.headers.get('x-server-os');\r\n const installType = (res.headers.get('x-install-type') || 'dev') as InstallType;\r\n const setupPending = res.headers.get('x-setup-pending') === '1';\r\n\r\n (window as any).plutonVersion = appVersion || 'unknown';\r\n (window as any).plutonServerOS = serverOS || 'unknown';\r\n (window as any).plutonInstallType = installType;\r\n (window as any).plutonSetupPending = setupPending;\r\n\r\n if (!res.ok) {\r\n throw new Error('Invalid authentication');\r\n }\r\n\r\n const data = await res.json();\r\n return {\r\n ...data,\r\n appVersion,\r\n installType,\r\n setupPending,\r\n };\r\n}\r\n\r\nexport function useAuth() {\r\n return useQuery({\r\n queryKey: ['auth'],\r\n queryFn: validateAuth,\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// LOGIN USER\r\nexport async function loginUser(credentials: LoginCredentials) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/user/login`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify(credentials),\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\n// Add this new hook\r\nexport function useLogin() {\r\n const navigate = useNavigate();\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: loginUser,\r\n onSuccess: (res) => {\r\n queryClient.removeQueries({ queryKey: ['auth'] });\r\n if (res.totpRequired) {\r\n navigate('/login/verify-otp');\r\n } else {\r\n navigate('/');\r\n }\r\n },\r\n });\r\n}\r\n\r\n// LOGOUT USER\r\nexport async function logoutUser() {\r\n const res = await fetch(`${API_URL}/user/logout`, {\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 useLogout() {\r\n const navigate = useNavigate();\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: logoutUser,\r\n onSuccess: () => {\r\n queryClient.removeQueries({ queryKey: ['auth'] });\r\n navigate('/login');\r\n },\r\n });\r\n}\r\n"],"names":["validateAuth","res","API_URL","appVersion","serverOS","installType","setupPending","useAuth","useQuery","loginUser","credentials","header","data","useLogin","navigate","useNavigate","queryClient","useQueryClient","useMutation","logoutUser","useLogout"],"mappings":";;;AAYA,eAAsBA,IAAe;AAClC,QAAMC,IAAM,MAAM,MAAM,GAAGC,CAAO,kBAAkB,EAAE,QAAQ,OAAO,aAAa,UAAA,CAAW,GAGvFC,IAAaF,EAAI,QAAQ,IAAI,eAAe,GAC5CG,IAAWH,EAAI,QAAQ,IAAI,aAAa,GACxCI,IAAeJ,EAAI,QAAQ,IAAI,gBAAgB,KAAK,OACpDK,IAAeL,EAAI,QAAQ,IAAI,iBAAiB,MAAM;AAO5D,MALC,OAAe,gBAAgBE,KAAc,WAC7C,OAAe,iBAAiBC,KAAY,WAC5C,OAAe,oBAAoBC,GACnC,OAAe,qBAAqBC,GAEjC,CAACL,EAAI;AACN,UAAM,IAAI,MAAM,wBAAwB;AAI3C,SAAO;AAAA,IACJ,GAFU,MAAMA,EAAI,KAAA;AAAA,IAGpB,YAAAE;AAAA,IACA,aAAAE;AAAA,IACA,cAAAC;AAAA,EAAA;AAEN;AAEO,SAASC,IAAU;AACvB,SAAOC,EAAS;AAAA,IACb,UAAU,CAAC,MAAM;AAAA,IACjB,SAASR;AAAA,IACT,gBAAgB;AAAA,IAChB,OAAO;AAAA,EAAA,CACT;AACJ;AAGA,eAAsBS,EAAUC,GAA+B;AAC5D,QAAMC,IAAS,IAAI,QAAQ,EAAE,gBAAgB,oBAAoB,QAAQ,oBAAoB,GAOvFC,IAAO,OAND,MAAM,MAAM,GAAGV,CAAO,eAAe;AAAA,IAC9C,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAASS;AAAA,IACT,MAAM,KAAK,UAAUD,CAAW;AAAA,EAAA,CAClC,GACsB,KAAA;AACvB,MAAI,CAACE,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAGO,SAASC,IAAW;AACxB,QAAMC,IAAWC,EAAA,GACXC,IAAcC,EAAA;AACpB,SAAOC,EAAY;AAAA,IAChB,YAAYT;AAAA,IACZ,WAAW,CAACR,MAAQ;AACjB,MAAAe,EAAY,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,GAC5Cf,EAAI,eACLa,EAAS,mBAAmB,IAE5BA,EAAS,GAAG;AAAA,IAElB;AAAA,EAAA,CACF;AACJ;AAGA,eAAsBK,IAAa;AAKhC,QAAMP,IAAO,OAJD,MAAM,MAAM,GAAGV,CAAO,gBAAgB;AAAA,IAC/C,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA,CACf,GACsB,KAAA;AACvB,MAAI,CAACU,EAAK;AACP,UAAM,IAAI,MAAMA,EAAK,KAAK;AAE7B,SAAOA;AACV;AAEO,SAASQ,IAAY;AACzB,QAAMN,IAAWC,EAAA,GACXC,IAAcC,EAAA;AACpB,SAAOC,EAAY;AAAA,IAChB,YAAYC;AAAA,IACZ,WAAW,MAAM;AACd,MAAAH,EAAY,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,GAChDF,EAAS,QAAQ;AAAA,IACpB;AAAA,EAAA,CACF;AACJ;"}
|