@plutonhq/core-frontend 0.1.22 → 0.1.24
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/index.js +4 -1
- package/dist-lib/@types/index.js.map +1 -1
- package/dist-lib/@types/plans.d.ts +11 -20
- package/dist-lib/@types/plans.d.ts.map +1 -1
- package/dist-lib/@types/settings.d.ts +14 -0
- package/dist-lib/@types/settings.d.ts.map +1 -1
- package/dist-lib/@types/settings.js +34 -0
- package/dist-lib/@types/settings.js.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js +49 -47
- package/dist-lib/components/Plan/PlanSettings/PlanAdvancedSettings.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.d.ts +7 -4
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.js +235 -52
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettings.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.d.ts +9 -0
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.js +62 -0
- package/dist-lib/components/Plan/PlanSettings/PlanNotificationSettingsTester.js.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js +2 -2
- package/dist-lib/components/Plan/PlanSettings/PlanPruneSettings.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js +56 -40
- package/dist-lib/components/Plan/PlanSettings/PlanSettings.module.scss.js.map +1 -1
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts.map +1 -1
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +16 -8
- 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 +52 -47
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.module.scss.js +12 -6
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.module.scss.js.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/NtfySettings.d.ts +9 -0
- package/dist-lib/components/Settings/IntegrationSettings/NtfySettings.d.ts.map +1 -0
- package/dist-lib/components/Settings/IntegrationSettings/NtfySettings.js +79 -0
- package/dist-lib/components/Settings/IntegrationSettings/NtfySettings.js.map +1 -0
- package/dist-lib/components/Settings/IntegrationSettings/SMTPSettings.d.ts +4 -3
- package/dist-lib/components/Settings/IntegrationSettings/SMTPSettings.d.ts.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/SMTPSettings.js +37 -35
- package/dist-lib/components/Settings/IntegrationSettings/SMTPSettings.js.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/ValidateEmailIntegration.d.ts +10 -0
- package/dist-lib/components/Settings/IntegrationSettings/ValidateEmailIntegration.d.ts.map +1 -0
- package/dist-lib/components/Settings/IntegrationSettings/ValidateEmailIntegration.js +49 -0
- package/dist-lib/components/Settings/IntegrationSettings/ValidateEmailIntegration.js.map +1 -0
- package/dist-lib/components/Storage/EditStorage/EditStorage.js +10 -10
- package/dist-lib/components/Storage/EditStorage/EditStorage.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +15 -1
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/index.d.ts +3 -0
- package/dist-lib/components/index.d.ts.map +1 -1
- package/dist-lib/components.js +114 -108
- package/dist-lib/components.js.map +1 -1
- package/dist-lib/providers/s3compatible.png +0 -0
- package/dist-lib/services/plans.d.ts +13 -1
- package/dist-lib/services/plans.d.ts.map +1 -1
- package/dist-lib/services/plans.js +88 -61
- package/dist-lib/services/plans.js.map +1 -1
- package/dist-lib/services/settings.d.ts +3 -2
- package/dist-lib/services/settings.d.ts.map +1 -1
- package/dist-lib/services/settings.js +25 -25
- package/dist-lib/services/settings.js.map +1 -1
- package/dist-lib/services.js +102 -100
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/constants.d.ts.map +1 -1
- package/dist-lib/utils/constants.js +28 -5
- package/dist-lib/utils/constants.js.map +1 -1
- package/dist-lib/utils/helpers.d.ts +1 -0
- package/dist-lib/utils/helpers.d.ts.map +1 -1
- package/dist-lib/utils/helpers.js +17 -10
- package/dist-lib/utils/helpers.js.map +1 -1
- package/dist-lib/utils.js +28 -27
- package/package.json +1 -1
- package/src/@types/plans.ts +11 -20
- package/src/@types/settings.ts +43 -0
- package/src/components/Plan/PlanSettings/PlanAdvancedSettings.tsx +4 -4
- package/src/components/Plan/PlanSettings/PlanNotificationSettings.tsx +244 -47
- package/src/components/Plan/PlanSettings/PlanNotificationSettingsTester.tsx +85 -0
- package/src/components/Plan/PlanSettings/PlanPruneSettings.tsx +2 -2
- package/src/components/Plan/PlanSettings/PlanSettings.module.scss +71 -0
- package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +6 -1
- package/src/components/Settings/IntegrationSettings/IntegrationSettings.module.scss +16 -0
- package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +45 -42
- package/src/components/Settings/IntegrationSettings/NtfySettings.tsx +106 -0
- package/src/components/Settings/IntegrationSettings/SMTPSettings.tsx +28 -19
- package/src/components/Settings/IntegrationSettings/ValidateEmailIntegration.tsx +58 -0
- package/src/components/Storage/EditStorage/EditStorage.tsx +1 -1
- package/src/components/common/Icon/Icon.tsx +16 -0
- package/src/components/index.ts +3 -0
- package/src/services/plans.ts +38 -1
- package/src/services/settings.ts +4 -4
- package/src/utils/constants.ts +23 -0
- package/src/utils/helpers.ts +9 -0
- /package/dist-lib/providers/{azureBlob.png → azureblob.png} +0 -0
- /package/dist-lib/providers/{azureFiles.png → azurefiles.png} +0 -0
- /package/dist-lib/providers/{files.png → filescom.png} +0 -0
- /package/dist-lib/providers/{oracle.png → oracleobjectstorage.png} +0 -0
- /package/dist-lib/providers/{proton.png → protondrive.png} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useQuery as
|
|
1
|
+
import { useQuery as f, useMutation as r, useQueryClient as c } from "@tanstack/react-query";
|
|
2
2
|
import { toast as u } from "react-toastify";
|
|
3
3
|
import { API_URL as a } from "../utils/constants.js";
|
|
4
|
-
async function
|
|
4
|
+
async function m() {
|
|
5
5
|
const n = new URL(`${a}/plans`), t = await (await fetch(n.toString(), {
|
|
6
6
|
method: "GET",
|
|
7
7
|
credentials: "include"
|
|
@@ -11,9 +11,9 @@ async function g() {
|
|
|
11
11
|
return t;
|
|
12
12
|
}
|
|
13
13
|
function U() {
|
|
14
|
-
return
|
|
14
|
+
return f({
|
|
15
15
|
queryKey: ["plans"],
|
|
16
|
-
queryFn: () =>
|
|
16
|
+
queryFn: () => m(),
|
|
17
17
|
refetchOnMount: !0,
|
|
18
18
|
retry: !1
|
|
19
19
|
});
|
|
@@ -31,8 +31,8 @@ async function P(n) {
|
|
|
31
31
|
}
|
|
32
32
|
return o;
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
return
|
|
34
|
+
function B(n) {
|
|
35
|
+
return f({
|
|
36
36
|
queryKey: ["plan", n],
|
|
37
37
|
queryFn: () => P(n),
|
|
38
38
|
refetchOnMount: !0,
|
|
@@ -40,7 +40,7 @@ function A(n) {
|
|
|
40
40
|
staleTime: 0
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
|
-
async function
|
|
43
|
+
async function j(n) {
|
|
44
44
|
const e = new URL(`${a}/plans/${n}/logs`), t = await fetch(e.toString(), {
|
|
45
45
|
method: "GET",
|
|
46
46
|
credentials: "include"
|
|
@@ -51,16 +51,16 @@ async function E(n) {
|
|
|
51
51
|
}
|
|
52
52
|
return o;
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function D(n) {
|
|
55
|
+
return f({
|
|
56
56
|
queryKey: ["planLogs", n],
|
|
57
|
-
queryFn: () =>
|
|
57
|
+
queryFn: () => j(n),
|
|
58
58
|
refetchOnMount: !0,
|
|
59
59
|
retry: !1
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
async function
|
|
63
|
-
var w,
|
|
62
|
+
async function E(n) {
|
|
63
|
+
var w, y;
|
|
64
64
|
const e = await fetch(`${a}/plans/${n}/logs/download`, {
|
|
65
65
|
method: "GET",
|
|
66
66
|
credentials: "include"
|
|
@@ -70,21 +70,21 @@ async function j(n) {
|
|
|
70
70
|
const l = await e.json();
|
|
71
71
|
throw new Error(l.error);
|
|
72
72
|
}
|
|
73
|
-
const t = ((w = e.headers.get("content-disposition")) == null ? void 0 : w.split("filename=")[1]) || `plan-${n}.log`, o = (
|
|
73
|
+
const t = ((w = e.headers.get("content-disposition")) == null ? void 0 : w.split("filename=")[1]) || `plan-${n}.log`, o = (y = e.body) == null ? void 0 : y.getReader(), s = new ReadableStream({
|
|
74
74
|
async start(l) {
|
|
75
75
|
for (; ; ) {
|
|
76
|
-
const { done: h, value:
|
|
76
|
+
const { done: h, value: g } = await o.read();
|
|
77
77
|
if (h) break;
|
|
78
|
-
l.enqueue(
|
|
78
|
+
l.enqueue(g);
|
|
79
79
|
}
|
|
80
80
|
l.close(), o.releaseLock();
|
|
81
81
|
}
|
|
82
82
|
}), d = await new Response(s).blob(), p = window.URL.createObjectURL(d), i = document.createElement("a");
|
|
83
83
|
i.href = p, i.download = t, document.body.appendChild(i), i.click(), i.remove(), window.URL.revokeObjectURL(p);
|
|
84
84
|
}
|
|
85
|
-
function
|
|
85
|
+
function H() {
|
|
86
86
|
return r({
|
|
87
|
-
mutationFn:
|
|
87
|
+
mutationFn: E,
|
|
88
88
|
onSuccess: (n) => {
|
|
89
89
|
console.log("# Logs Downloaded! :", n);
|
|
90
90
|
},
|
|
@@ -115,7 +115,7 @@ function G() {
|
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
|
-
async function
|
|
118
|
+
async function q(n) {
|
|
119
119
|
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" });
|
|
120
120
|
console.log("newPlan :", n);
|
|
121
121
|
const o = await (await fetch(`${a}/plans/${n.id}`, {
|
|
@@ -128,10 +128,10 @@ async function k(n) {
|
|
|
128
128
|
throw new Error(o.error);
|
|
129
129
|
return o;
|
|
130
130
|
}
|
|
131
|
-
function
|
|
131
|
+
function N() {
|
|
132
132
|
const n = c();
|
|
133
133
|
return r({
|
|
134
|
-
mutationFn:
|
|
134
|
+
mutationFn: q,
|
|
135
135
|
onSuccess: (e) => {
|
|
136
136
|
var o;
|
|
137
137
|
console.log("# Plan Updated! :", e);
|
|
@@ -140,7 +140,7 @@ function H() {
|
|
|
140
140
|
}
|
|
141
141
|
});
|
|
142
142
|
}
|
|
143
|
-
async function
|
|
143
|
+
async function k({ id: n, removeRemoteData: e }) {
|
|
144
144
|
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), s = await (await fetch(`${a}/plans/${n}?removeData=${e}`, {
|
|
145
145
|
method: "DELETE",
|
|
146
146
|
credentials: "include",
|
|
@@ -150,10 +150,10 @@ async function q({ id: n, removeRemoteData: e }) {
|
|
|
150
150
|
throw new Error(s.error);
|
|
151
151
|
return s;
|
|
152
152
|
}
|
|
153
|
-
function
|
|
153
|
+
function I() {
|
|
154
154
|
const n = c();
|
|
155
155
|
return r({
|
|
156
|
-
mutationFn:
|
|
156
|
+
mutationFn: k,
|
|
157
157
|
onSuccess: (e) => {
|
|
158
158
|
console.log("# Plan Removed! :", e), n.invalidateQueries({ queryKey: ["plans"] });
|
|
159
159
|
}
|
|
@@ -169,7 +169,7 @@ async function $(n) {
|
|
|
169
169
|
throw new Error(o.error);
|
|
170
170
|
return o;
|
|
171
171
|
}
|
|
172
|
-
function
|
|
172
|
+
function J() {
|
|
173
173
|
const n = c();
|
|
174
174
|
return r({
|
|
175
175
|
mutationFn: $,
|
|
@@ -178,7 +178,7 @@ function N() {
|
|
|
178
178
|
}
|
|
179
179
|
});
|
|
180
180
|
}
|
|
181
|
-
async function
|
|
181
|
+
async function T(n) {
|
|
182
182
|
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${a}/plans/${n}/action/pause`, {
|
|
183
183
|
method: "POST",
|
|
184
184
|
credentials: "include",
|
|
@@ -188,16 +188,16 @@ async function v(n) {
|
|
|
188
188
|
throw new Error(o.error);
|
|
189
189
|
return o;
|
|
190
190
|
}
|
|
191
|
-
function
|
|
191
|
+
function M() {
|
|
192
192
|
const n = c();
|
|
193
193
|
return r({
|
|
194
|
-
mutationFn:
|
|
194
|
+
mutationFn: T,
|
|
195
195
|
onSuccess: (e, t) => {
|
|
196
196
|
console.log("# Backup Paused! :", e, t), n.invalidateQueries({ queryKey: ["plan", t] }), n.invalidateQueries({ queryKey: ["plans"] });
|
|
197
197
|
}
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
|
-
async function
|
|
200
|
+
async function v(n) {
|
|
201
201
|
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${a}/plans/${n}/action/resume`, {
|
|
202
202
|
method: "POST",
|
|
203
203
|
credentials: "include",
|
|
@@ -207,16 +207,16 @@ async function C(n) {
|
|
|
207
207
|
throw new Error(o.error);
|
|
208
208
|
return o;
|
|
209
209
|
}
|
|
210
|
-
function
|
|
210
|
+
function x() {
|
|
211
211
|
const n = c();
|
|
212
212
|
return r({
|
|
213
|
-
mutationFn:
|
|
213
|
+
mutationFn: v,
|
|
214
214
|
onSuccess: (e, t) => {
|
|
215
215
|
console.log("# Backup Resumed! :", e, t), n.invalidateQueries({ queryKey: ["plan", t] }), n.invalidateQueries({ queryKey: ["plans"] });
|
|
216
216
|
}
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
|
-
async function
|
|
219
|
+
async function C(n) {
|
|
220
220
|
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${a}/plans/${n}/action/prune`, {
|
|
221
221
|
method: "POST",
|
|
222
222
|
credentials: "include",
|
|
@@ -226,10 +226,10 @@ async function R(n) {
|
|
|
226
226
|
throw new Error(o.error);
|
|
227
227
|
return o;
|
|
228
228
|
}
|
|
229
|
-
function
|
|
229
|
+
function _() {
|
|
230
230
|
const n = c();
|
|
231
231
|
return r({
|
|
232
|
-
mutationFn:
|
|
232
|
+
mutationFn: C,
|
|
233
233
|
onError: (e) => {
|
|
234
234
|
console.log("error :", e == null ? void 0 : e.message), u.error(e.message || "Error Removing Old Backups.");
|
|
235
235
|
},
|
|
@@ -238,7 +238,7 @@ function x() {
|
|
|
238
238
|
}
|
|
239
239
|
});
|
|
240
240
|
}
|
|
241
|
-
async function
|
|
241
|
+
async function R(n) {
|
|
242
242
|
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await (await fetch(`${a}/plans/${n}/action/unlock`, {
|
|
243
243
|
method: "POST",
|
|
244
244
|
credentials: "include",
|
|
@@ -248,10 +248,10 @@ async function T(n) {
|
|
|
248
248
|
throw new Error(o.error);
|
|
249
249
|
return o;
|
|
250
250
|
}
|
|
251
|
-
function
|
|
251
|
+
function z() {
|
|
252
252
|
const n = c();
|
|
253
253
|
return r({
|
|
254
|
-
mutationFn:
|
|
254
|
+
mutationFn: R,
|
|
255
255
|
onError: (e) => {
|
|
256
256
|
console.log("error :", e == null ? void 0 : e.message), u.error(e.message || "Error Removing stale locks.");
|
|
257
257
|
},
|
|
@@ -271,7 +271,7 @@ async function O(n, e = "backup") {
|
|
|
271
271
|
throw new Error(s.error);
|
|
272
272
|
return s;
|
|
273
273
|
}
|
|
274
|
-
function
|
|
274
|
+
function V() {
|
|
275
275
|
return r({
|
|
276
276
|
// queryKey: ['planActiveBackups-' + planId],
|
|
277
277
|
mutationFn: ({ planId: n, type: e }) => O(n, e)
|
|
@@ -295,7 +295,7 @@ async function K({
|
|
|
295
295
|
throw new Error(i.error);
|
|
296
296
|
return i;
|
|
297
297
|
}
|
|
298
|
-
function
|
|
298
|
+
function W() {
|
|
299
299
|
const n = c();
|
|
300
300
|
return r({
|
|
301
301
|
mutationFn: K,
|
|
@@ -317,7 +317,7 @@ async function L({ planId: n }) {
|
|
|
317
317
|
throw new Error(t.error);
|
|
318
318
|
return t;
|
|
319
319
|
}
|
|
320
|
-
function
|
|
320
|
+
function X() {
|
|
321
321
|
const n = c();
|
|
322
322
|
return r({
|
|
323
323
|
mutationFn: L,
|
|
@@ -329,36 +329,63 @@ function W() {
|
|
|
329
329
|
}
|
|
330
330
|
});
|
|
331
331
|
}
|
|
332
|
+
async function F(n) {
|
|
333
|
+
console.log("payload :", n);
|
|
334
|
+
const e = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), t = await fetch(`${a}/plans/${n.planId}/action/test-notification`, {
|
|
335
|
+
method: "POST",
|
|
336
|
+
headers: e,
|
|
337
|
+
credentials: "include",
|
|
338
|
+
body: JSON.stringify(n)
|
|
339
|
+
});
|
|
340
|
+
if (!t.ok) {
|
|
341
|
+
const s = await t.json();
|
|
342
|
+
throw new Error(s.error);
|
|
343
|
+
}
|
|
344
|
+
return await t.json();
|
|
345
|
+
}
|
|
346
|
+
function Y() {
|
|
347
|
+
return r({
|
|
348
|
+
mutationFn: F,
|
|
349
|
+
onSuccess: (n) => {
|
|
350
|
+
console.log("# Test notification request sent successfully! :", n);
|
|
351
|
+
},
|
|
352
|
+
onError: (n) => {
|
|
353
|
+
console.log("# Test notification request failed! :", n);
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
}
|
|
332
357
|
export {
|
|
333
358
|
O as checkActiveBackupsOrRestore,
|
|
334
359
|
L as checkPlanIntegrity,
|
|
335
360
|
S as createPlan,
|
|
336
|
-
|
|
361
|
+
k as deletePlan,
|
|
337
362
|
K as deleteReplicationStorage,
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
363
|
+
E as downloadPlanLogs,
|
|
364
|
+
m as getAllPlans,
|
|
365
|
+
j as getPlanLogs,
|
|
341
366
|
P as getSinglePlan,
|
|
342
|
-
|
|
367
|
+
T as pausePlan,
|
|
343
368
|
$ as performBackup,
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
369
|
+
C as prunePlan,
|
|
370
|
+
v as resumePlan,
|
|
371
|
+
F as sendTestNotificationRequest,
|
|
372
|
+
R as unlockPlan,
|
|
373
|
+
q as updatePlan,
|
|
374
|
+
V as useCheckActiveBackupsOrRestore,
|
|
375
|
+
X as useCheckPlanIntegrity,
|
|
350
376
|
G as useCreatePlan,
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
377
|
+
I as useDeletePlan,
|
|
378
|
+
W as useDeleteReplicationStorage,
|
|
379
|
+
H as useGetDownloadLogs,
|
|
380
|
+
B as useGetPlan,
|
|
381
|
+
D as useGetPlanLogs,
|
|
356
382
|
U as useGetPlans,
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
383
|
+
M as usePausePlan,
|
|
384
|
+
J as usePerformBackup,
|
|
385
|
+
_ as usePrunePlan,
|
|
386
|
+
x as useResumePlan,
|
|
387
|
+
Y as useTestNotification,
|
|
388
|
+
z as useUnlockPlan,
|
|
389
|
+
N as useUpdatePlan
|
|
363
390
|
};
|
|
364
391
|
//# sourceMappingURL=plans.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans.js","sources":["../../src/services/plans.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\nimport { NewPlanSettings, Plan } from '../@types/plans';\r\n\r\n// Get All Plans\r\nexport async function getAllPlans() {\r\n const url = new URL(`${API_URL}/plans`);\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 useGetPlans() {\r\n return useQuery({\r\n queryKey: ['plans'],\r\n queryFn: () => getAllPlans(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Plan\r\nexport async function getSinglePlan(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/plans/${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 const error = new Error(data.error) as Error & { status?: number };\r\n error.status = res.status;\r\n throw error;\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetPlan(id: string) {\r\n return useQuery({\r\n queryKey: ['plan', id],\r\n queryFn: () => getSinglePlan(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Get Plan Logs\r\nexport async function getPlanLogs(planId: string) {\r\n const url = new URL(`${API_URL}/plans/${planId}/logs`);\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 const error = new Error(data.error) as Error & { status?: number };\r\n error.status = res.status;\r\n throw error;\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetPlanLogs(planId: string) {\r\n return useQuery({\r\n queryKey: ['planLogs', planId],\r\n queryFn: () => getPlanLogs(planId),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Download Plan Logs\r\nexport async function downloadPlanLogs(id: string) {\r\n const res = await fetch(`${API_URL}/plans/${id}/logs/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] || `plan-${id}.log`;\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 useGetDownloadLogs() {\r\n return useMutation({\r\n mutationFn: downloadPlanLogs,\r\n onSuccess: (res) => {\r\n console.log('# Logs Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Logs Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Create New Plan\r\nexport async function createPlan(newPlan: NewPlanSettings) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n console.log('newPlan :', newPlan);\r\n const res = await fetch(`${API_URL}/plans`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify(newPlan),\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error || data.result);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useCreatePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createPlan,\r\n onSuccess: (res) => {\r\n // TODO: Should Display a Notification Bubble.\r\n console.log('# Plan Created! :', res);\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// UpdatePlan\r\nexport async function updatePlan(updatePayload: { id: string; data: Partial<Plan> }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n console.log('newPlan :', updatePayload);\r\n const res = await fetch(`${API_URL}/plans/${updatePayload.id}`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ plan: updatePayload.data }),\r\n });\r\n const data = await res.json();\r\n console.log('data :', data);\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 useUpdatePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: updatePlan,\r\n onSuccess: (res) => {\r\n // TODO: Should Display a Notification Bubble.\r\n console.log('# Plan Updated! :', res);\r\n const planID = res?.result?.id;\r\n if (planID) {\r\n queryClient.invalidateQueries({ queryKey: ['plan', planID] });\r\n }\r\n\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Plan\r\nexport async function deletePlan({ id, removeRemoteData }: { id: string; removeRemoteData: boolean }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}?removeData=${removeRemoteData}`, {\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 useDeletePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deletePlan,\r\n onSuccess: (res) => {\r\n console.log('# Plan Removed! :', res);\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Perform Backup\r\nexport async function performBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/backup`, {\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 usePerformBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: performBackup,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Started! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Pause Backup\r\nexport async function pausePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/pause`, {\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 usePausePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: pausePlan,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Paused! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Resume Backup\r\nexport async function resumePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/resume`, {\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 useResumePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: resumePlan,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Resumed! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Prune Backup Plan\r\nexport async function prunePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/prune`, {\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 usePrunePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: prunePlan,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing Old Backups.`);\r\n },\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Pruned! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n toast.success(res?.message || `Removed Old Backups Successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\n// Unlock Backup Plan\r\nexport async function unlockPlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/unlock`, {\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 useUnlockPlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: unlockPlan,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing stale locks.`);\r\n },\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Pruned! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n toast.success(`Removed Stale locks Successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function checkActiveBackupsOrRestore(planId: string, type: 'backup' | 'restore' = 'backup') {\r\n const url = new URL(`${API_URL}/plans/${planId}/checkactive`);\r\n url.searchParams.append('type', type);\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 useCheckActiveBackupsOrRestore() {\r\n return useMutation({\r\n // queryKey: ['planActiveBackups-' + planId],\r\n mutationFn: ({ planId, type }: { planId: string; type: 'backup' | 'restore' }) => checkActiveBackupsOrRestore(planId, type),\r\n // refetchOnMount: true,\r\n });\r\n}\r\n\r\n// Remove Replication Storage\r\nexport async function deleteReplicationStorage({\r\n planID,\r\n storageID,\r\n storagePath,\r\n removeData,\r\n replicationId,\r\n}: {\r\n planID: string;\r\n storageID: string;\r\n storagePath: string;\r\n removeData: boolean;\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}/plans/${planID}/action/delete-replication-storage`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ storageID, storagePath, removeData, 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 useDeleteReplicationStorage() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deleteReplicationStorage,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error removing replication storage.`);\r\n },\r\n onSuccess: (res, variables) => {\r\n console.log('# Replication Storage Removed! :', res, variables);\r\n queryClient.invalidateQueries({ queryKey: ['plan', variables.planID] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n toast.success(res?.message || `Replication storage removed successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\nexport async function checkPlanIntegrity({ planId }: { planId: string }) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${planId}/action/checkintegrity`, {\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 useCheckPlanIntegrity() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: checkPlanIntegrity,\r\n onSuccess: (res, payload) => {\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n console.log('res :', payload, res);\r\n },\r\n onError: (error, payload) => {\r\n console.error('Error checking plan integrity for planId:', payload.planId, error);\r\n toast.error(`Error checking plan integrity. ${error instanceof Error ? error.message : 'Unknown error'}`, { autoClose: false });\r\n },\r\n });\r\n}\r\n"],"names":["getAllPlans","url","API_URL","data","useGetPlans","useQuery","getSinglePlan","id","res","error","useGetPlan","getPlanLogs","planId","useGetPlanLogs","downloadPlanLogs","filename","_a","reader","_b","stream","controller","done","value","blob","link","useGetDownloadLogs","useMutation","createPlan","newPlan","header","useCreatePlan","queryClient","useQueryClient","updatePlan","updatePayload","useUpdatePlan","planID","deletePlan","removeRemoteData","useDeletePlan","performBackup","usePerformBackup","pausePlan","usePausePlan","resumePlan","useResumePlan","prunePlan","usePrunePlan","toast","unlockPlan","useUnlockPlan","checkActiveBackupsOrRestore","type","useCheckActiveBackupsOrRestore","deleteReplicationStorage","storageID","storagePath","removeData","replicationId","useDeleteReplicationStorage","variables","checkPlanIntegrity","useCheckPlanIntegrity","payload"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plans.js","sources":["../../src/services/plans.ts"],"sourcesContent":["import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport { API_URL } from '../utils/constants';\r\nimport { NewPlanSettings, Plan, PlanNotification } from '../@types/plans';\r\n\r\n// Get All Plans\r\nexport async function getAllPlans() {\r\n const url = new URL(`${API_URL}/plans`);\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 useGetPlans() {\r\n return useQuery({\r\n queryKey: ['plans'],\r\n queryFn: () => getAllPlans(),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Get Single Plan\r\nexport async function getSinglePlan(id: string) {\r\n if (!id) {\r\n throw new Error('ID Not Provided.');\r\n }\r\n const url = new URL(`${API_URL}/plans/${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 const error = new Error(data.error) as Error & { status?: number };\r\n error.status = res.status;\r\n throw error;\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetPlan(id: string) {\r\n return useQuery({\r\n queryKey: ['plan', id],\r\n queryFn: () => getSinglePlan(id),\r\n refetchOnMount: true,\r\n retry: false,\r\n staleTime: 0,\r\n });\r\n}\r\n\r\n// Get Plan Logs\r\nexport async function getPlanLogs(planId: string) {\r\n const url = new URL(`${API_URL}/plans/${planId}/logs`);\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 const error = new Error(data.error) as Error & { status?: number };\r\n error.status = res.status;\r\n throw error;\r\n }\r\n return data;\r\n}\r\n\r\nexport function useGetPlanLogs(planId: string) {\r\n return useQuery({\r\n queryKey: ['planLogs', planId],\r\n queryFn: () => getPlanLogs(planId),\r\n refetchOnMount: true,\r\n retry: false,\r\n });\r\n}\r\n\r\n// Download Plan Logs\r\nexport async function downloadPlanLogs(id: string) {\r\n const res = await fetch(`${API_URL}/plans/${id}/logs/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] || `plan-${id}.log`;\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 useGetDownloadLogs() {\r\n return useMutation({\r\n mutationFn: downloadPlanLogs,\r\n onSuccess: (res) => {\r\n console.log('# Logs Downloaded! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Logs Download Failed! :', res);\r\n },\r\n });\r\n}\r\n\r\n// Create New Plan\r\nexport async function createPlan(newPlan: NewPlanSettings) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n console.log('newPlan :', newPlan);\r\n const res = await fetch(`${API_URL}/plans`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify(newPlan),\r\n });\r\n const data = await res.json();\r\n if (!data.success) {\r\n throw new Error(data.error || data.result);\r\n }\r\n return data;\r\n}\r\n\r\nexport function useCreatePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: createPlan,\r\n onSuccess: (res) => {\r\n // TODO: Should Display a Notification Bubble.\r\n console.log('# Plan Created! :', res);\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// UpdatePlan\r\nexport async function updatePlan(updatePayload: { id: string; data: Partial<Plan> }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n console.log('newPlan :', updatePayload);\r\n const res = await fetch(`${API_URL}/plans/${updatePayload.id}`, {\r\n method: 'PUT',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ plan: updatePayload.data }),\r\n });\r\n const data = await res.json();\r\n console.log('data :', data);\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 useUpdatePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: updatePlan,\r\n onSuccess: (res) => {\r\n // TODO: Should Display a Notification Bubble.\r\n console.log('# Plan Updated! :', res);\r\n const planID = res?.result?.id;\r\n if (planID) {\r\n queryClient.invalidateQueries({ queryKey: ['plan', planID] });\r\n }\r\n\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Remove Plan\r\nexport async function deletePlan({ id, removeRemoteData }: { id: string; removeRemoteData: boolean }) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}?removeData=${removeRemoteData}`, {\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 useDeletePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deletePlan,\r\n onSuccess: (res) => {\r\n console.log('# Plan Removed! :', res);\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Perform Backup\r\nexport async function performBackup(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/backup`, {\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 usePerformBackup() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: performBackup,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Started! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Pause Backup\r\nexport async function pausePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/pause`, {\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 usePausePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: pausePlan,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Paused! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Resume Backup\r\nexport async function resumePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/resume`, {\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 useResumePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: resumePlan,\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Resumed! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n },\r\n });\r\n}\r\n\r\n// Prune Backup Plan\r\nexport async function prunePlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/prune`, {\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 usePrunePlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: prunePlan,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing Old Backups.`);\r\n },\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Pruned! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n toast.success(res?.message || `Removed Old Backups Successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\n// Unlock Backup Plan\r\nexport async function unlockPlan(id: string) {\r\n const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${id}/action/unlock`, {\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 useUnlockPlan() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: unlockPlan,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing stale locks.`);\r\n },\r\n onSuccess: (res, planId) => {\r\n console.log('# Backup Pruned! :', res, planId);\r\n queryClient.invalidateQueries({ queryKey: ['plan', planId] });\r\n toast.success(`Removed Stale locks Successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\n// Get Backup Progress\r\nexport async function checkActiveBackupsOrRestore(planId: string, type: 'backup' | 'restore' = 'backup') {\r\n const url = new URL(`${API_URL}/plans/${planId}/checkactive`);\r\n url.searchParams.append('type', type);\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 useCheckActiveBackupsOrRestore() {\r\n return useMutation({\r\n // queryKey: ['planActiveBackups-' + planId],\r\n mutationFn: ({ planId, type }: { planId: string; type: 'backup' | 'restore' }) => checkActiveBackupsOrRestore(planId, type),\r\n // refetchOnMount: true,\r\n });\r\n}\r\n\r\n// Remove Replication Storage\r\nexport async function deleteReplicationStorage({\r\n planID,\r\n storageID,\r\n storagePath,\r\n removeData,\r\n replicationId,\r\n}: {\r\n planID: string;\r\n storageID: string;\r\n storagePath: string;\r\n removeData: boolean;\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}/plans/${planID}/action/delete-replication-storage`, {\r\n method: 'POST',\r\n credentials: 'include',\r\n headers: header,\r\n body: JSON.stringify({ storageID, storagePath, removeData, 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 useDeleteReplicationStorage() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: deleteReplicationStorage,\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error removing replication storage.`);\r\n },\r\n onSuccess: (res, variables) => {\r\n console.log('# Replication Storage Removed! :', res, variables);\r\n queryClient.invalidateQueries({ queryKey: ['plan', variables.planID] });\r\n queryClient.invalidateQueries({ queryKey: ['plans'] });\r\n toast.success(res?.message || `Replication storage removed successfully!`, { autoClose: 5000 });\r\n },\r\n });\r\n}\r\n\r\nexport async function checkPlanIntegrity({ planId }: { planId: string }) {\r\n // const header = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${planId}/action/checkintegrity`, {\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 useCheckPlanIntegrity() {\r\n const queryClient = useQueryClient();\r\n return useMutation({\r\n mutationFn: checkPlanIntegrity,\r\n onSuccess: (res, payload) => {\r\n queryClient.invalidateQueries({ queryKey: ['plan', payload.planId] });\r\n console.log('res :', payload, res);\r\n },\r\n onError: (error, payload) => {\r\n console.error('Error checking plan integrity for planId:', payload.planId, error);\r\n toast.error(`Error checking plan integrity. ${error instanceof Error ? error.message : 'Unknown error'}`, { autoClose: false });\r\n },\r\n });\r\n}\r\n\r\nexport async function sendTestNotificationRequest(payload: {\r\n planId: string;\r\n notificationCase: string;\r\n notificationChannel: 'webhook' | 'slack' | 'discord';\r\n channelSettings: PlanNotification['webhook'] | PlanNotification['slack'] | PlanNotification['discord'];\r\n}) {\r\n console.log('payload :', payload);\r\n const headers = new Headers({ 'Content-Type': 'application/json', Accept: 'application/json' });\r\n const res = await fetch(`${API_URL}/plans/${payload.planId}/action/test-notification`, {\r\n method: 'POST',\r\n headers,\r\n credentials: 'include',\r\n body: JSON.stringify(payload),\r\n });\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 data = await res.json();\r\n return data;\r\n}\r\n\r\nexport function useTestNotification() {\r\n return useMutation({\r\n mutationFn: sendTestNotificationRequest,\r\n onSuccess: (res) => {\r\n console.log('# Test notification request sent successfully! :', res);\r\n },\r\n onError: (res) => {\r\n console.log('# Test notification request failed! :', res);\r\n },\r\n });\r\n}\r\n"],"names":["getAllPlans","url","API_URL","data","useGetPlans","useQuery","getSinglePlan","id","res","error","useGetPlan","getPlanLogs","planId","useGetPlanLogs","downloadPlanLogs","filename","_a","reader","_b","stream","controller","done","value","blob","link","useGetDownloadLogs","useMutation","createPlan","newPlan","header","useCreatePlan","queryClient","useQueryClient","updatePlan","updatePayload","useUpdatePlan","planID","deletePlan","removeRemoteData","useDeletePlan","performBackup","usePerformBackup","pausePlan","usePausePlan","resumePlan","useResumePlan","prunePlan","usePrunePlan","toast","unlockPlan","useUnlockPlan","checkActiveBackupsOrRestore","type","useCheckActiveBackupsOrRestore","deleteReplicationStorage","storageID","storagePath","removeData","replicationId","useDeleteReplicationStorage","variables","checkPlanIntegrity","useCheckPlanIntegrity","payload","sendTestNotificationRequest","headers","useTestNotification"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IntegrationSettings } from '../@types';
|
|
1
2
|
export declare function getSettings(): Promise<any>;
|
|
2
3
|
export declare function useGetSettings(): import("@tanstack/react-query").UseQueryResult<any, Error>;
|
|
3
4
|
export declare function updateSettings(updatePayload: {
|
|
@@ -15,13 +16,13 @@ export declare function useGetDownloadAppLogs(): import("@tanstack/react-query")
|
|
|
15
16
|
export declare function validateIntegration(updatePayload: {
|
|
16
17
|
settingsID: number;
|
|
17
18
|
type: string;
|
|
18
|
-
settings:
|
|
19
|
+
settings: IntegrationSettings;
|
|
19
20
|
test: Record<string, string | boolean | number>;
|
|
20
21
|
}): Promise<any>;
|
|
21
22
|
export declare function useValidateIntegration(): import("@tanstack/react-query").UseMutationResult<any, Error, {
|
|
22
23
|
settingsID: number;
|
|
23
24
|
type: string;
|
|
24
|
-
settings:
|
|
25
|
+
settings: IntegrationSettings;
|
|
25
26
|
test: Record<string, string | boolean | number>;
|
|
26
27
|
}, unknown>;
|
|
27
28
|
export interface SetupStatus {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKhD,wBAAsB,WAAW,iBAWhC;AAED,wBAAgB,cAAc,+DAQ7B;AAED,wBAAsB,cAAc,CAAC,aAAa,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAA;CAAE,gBActH;AAED,wBAAgB,iBAAiB;QAhByB,MAAM;cAAY,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;YAyBpH;AAGD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,gBAYlD;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,8DAO/C;AAGD,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,iBAsCvD;AAED,wBAAgB,qBAAqB,oFAUpC;AAED,wBAAsB,mBAAmB,CAAC,aAAa,EAAE;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CAClD,gBAcA;AAED,wBAAgB,sBAAsB;gBApBvB,MAAM;UACZ,MAAM;cACF,mBAAmB;UACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;YA0BjD;AAID,MAAM,WAAW,WAAW;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACvB;AAGD,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC,CAMvF;AAED,wBAAgB,cAAc;aAR6B,OAAO;UAAQ,WAAW;UAcpF;AAGD,wBAAsB,aAAa,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOlI;AAED,wBAAgB,gBAAgB;aATuD,OAAO;cAAY,MAAM;YAAU,MAAM;qCAa/H;AAID,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,gBAclD;AAED,wBAAgB,qBAAqB,mFAUpC;AACD,wBAAsB,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,gBAenF;AAED,wBAAgB,sBAAsB;UAjB0B,MAAM;QAAM,MAAM;YA2BjF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,gBAelE;AAED,wBAAgB,qBAAqB;UAjBsB,MAAM;YA6BhE;AAGD,wBAAsB,kBAAkB,iBAWvC;AASD,wBAAgB,qBAAqB,+DAYpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useQuery as u, useQueryClient as
|
|
1
|
+
import { useQuery as u, useQueryClient as g, useMutation as r } from "@tanstack/react-query";
|
|
2
2
|
import { API_URL as s } from "../utils/constants.js";
|
|
3
3
|
import { useNavigate as m } from "react-router";
|
|
4
4
|
import { experimental_createQueryPersister as S } from "../node_modules/.pnpm/@tanstack_query-persist-client-core@5.96.0/node_modules/@tanstack/query-persist-client-core/build/modern/createPersister.js";
|
|
@@ -32,7 +32,7 @@ async function T(e) {
|
|
|
32
32
|
return n;
|
|
33
33
|
}
|
|
34
34
|
function V() {
|
|
35
|
-
const e =
|
|
35
|
+
const e = g();
|
|
36
36
|
return r({
|
|
37
37
|
mutationFn: T,
|
|
38
38
|
onSuccess: (t) => {
|
|
@@ -71,8 +71,8 @@ async function A(e) {
|
|
|
71
71
|
const o = ((p = t.headers.get("content-disposition")) == null ? void 0 : p.split("filename=")[1]) || "app.log", n = (w = t.body) == null ? void 0 : w.getReader(), a = new ReadableStream({
|
|
72
72
|
async start(c) {
|
|
73
73
|
for (; ; ) {
|
|
74
|
-
const { done:
|
|
75
|
-
if (
|
|
74
|
+
const { done: y, value: h } = await n.read();
|
|
75
|
+
if (y) break;
|
|
76
76
|
c.enqueue(h);
|
|
77
77
|
}
|
|
78
78
|
c.close(), n.releaseLock();
|
|
@@ -80,7 +80,7 @@ async function A(e) {
|
|
|
80
80
|
}), l = await new Response(a).blob(), f = window.URL.createObjectURL(l), i = document.createElement("a");
|
|
81
81
|
i.href = f, i.download = o, document.body.appendChild(i), i.click(), i.remove(), window.URL.revokeObjectURL(f);
|
|
82
82
|
}
|
|
83
|
-
function
|
|
83
|
+
function K() {
|
|
84
84
|
return r({
|
|
85
85
|
mutationFn: A,
|
|
86
86
|
onSuccess: (e) => {
|
|
@@ -92,7 +92,6 @@ function N() {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
async function E(e) {
|
|
95
|
-
console.log("updatePayload :", e);
|
|
96
95
|
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), n = await (await fetch(`${s}/settings/integration/validate`, {
|
|
97
96
|
method: "POST",
|
|
98
97
|
credentials: "include",
|
|
@@ -103,11 +102,12 @@ async function E(e) {
|
|
|
103
102
|
throw new Error(n.error);
|
|
104
103
|
return n;
|
|
105
104
|
}
|
|
106
|
-
function
|
|
105
|
+
function N() {
|
|
106
|
+
const e = g();
|
|
107
107
|
return r({
|
|
108
108
|
mutationFn: E,
|
|
109
|
-
onSuccess: (
|
|
110
|
-
console.log("# Settings Updated! :",
|
|
109
|
+
onSuccess: (t) => {
|
|
110
|
+
e.invalidateQueries({ queryKey: ["settings"] }), console.log("# Settings Updated! :", t);
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
}
|
|
@@ -117,26 +117,26 @@ async function O() {
|
|
|
117
117
|
throw new Error("Failed to get setup status");
|
|
118
118
|
return e.json();
|
|
119
119
|
}
|
|
120
|
-
function
|
|
120
|
+
function J() {
|
|
121
121
|
return u({
|
|
122
122
|
queryKey: ["setupStatus"],
|
|
123
123
|
queryFn: O,
|
|
124
124
|
retry: !1
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
-
async function
|
|
127
|
+
async function v(e) {
|
|
128
128
|
return (await fetch(`${s}/setup/complete`, {
|
|
129
129
|
method: "POST",
|
|
130
130
|
headers: { "Content-Type": "application/json" },
|
|
131
131
|
body: JSON.stringify(e)
|
|
132
132
|
})).json();
|
|
133
133
|
}
|
|
134
|
-
function
|
|
134
|
+
function Q() {
|
|
135
135
|
return r({
|
|
136
|
-
mutationFn:
|
|
136
|
+
mutationFn: v
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
|
-
async function
|
|
139
|
+
async function L(e) {
|
|
140
140
|
const t = new Headers({ "Content-Type": "application/json", Accept: "application/json" }), o = await fetch(`${s}/settings/${e}/2fa/setup`, {
|
|
141
141
|
method: "POST",
|
|
142
142
|
headers: t,
|
|
@@ -148,9 +148,9 @@ async function v(e) {
|
|
|
148
148
|
}
|
|
149
149
|
return await o.json();
|
|
150
150
|
}
|
|
151
|
-
function
|
|
151
|
+
function M() {
|
|
152
152
|
return r({
|
|
153
|
-
mutationFn:
|
|
153
|
+
mutationFn: L,
|
|
154
154
|
onSuccess: (e) => {
|
|
155
155
|
console.log("# 2FA setup data fetched successfully! :", e);
|
|
156
156
|
},
|
|
@@ -219,7 +219,7 @@ async function k() {
|
|
|
219
219
|
}
|
|
220
220
|
return await e.json();
|
|
221
221
|
}
|
|
222
|
-
const d = 1e3 * 60 * 60 * 6, { persisterFn:
|
|
222
|
+
const d = 1e3 * 60 * 60 * 6, { persisterFn: q } = S({
|
|
223
223
|
storage: window.localStorage,
|
|
224
224
|
maxAge: d
|
|
225
225
|
});
|
|
@@ -227,7 +227,7 @@ function _() {
|
|
|
227
227
|
return u({
|
|
228
228
|
queryKey: ["latestVersion"],
|
|
229
229
|
queryFn: () => k(),
|
|
230
|
-
persister:
|
|
230
|
+
persister: q,
|
|
231
231
|
retry: !1,
|
|
232
232
|
staleTime: d,
|
|
233
233
|
gcTime: d,
|
|
@@ -238,22 +238,22 @@ function _() {
|
|
|
238
238
|
}
|
|
239
239
|
export {
|
|
240
240
|
k as checkLatestVersion,
|
|
241
|
-
|
|
241
|
+
v as completeSetup,
|
|
242
242
|
A as downloadAppLogs,
|
|
243
243
|
F as getAppLogs,
|
|
244
244
|
j as getSettings,
|
|
245
245
|
O as getSetupStatus,
|
|
246
|
-
|
|
246
|
+
L as setupTwoFactorAuth,
|
|
247
247
|
T as updateSettings,
|
|
248
248
|
_ as useCheckLatestVersion,
|
|
249
|
-
|
|
249
|
+
Q as useCompleteSetup,
|
|
250
250
|
H as useGetAppLogs,
|
|
251
|
-
|
|
251
|
+
K as useGetDownloadAppLogs,
|
|
252
252
|
G as useGetSettings,
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
J as useSetupStatus,
|
|
254
|
+
M as useSetupTwoFactorAuth,
|
|
255
255
|
V as useUpdateSettings,
|
|
256
|
-
|
|
256
|
+
N as useValidateIntegration,
|
|
257
257
|
x as useVerifyTwoFactorAuth,
|
|
258
258
|
I as useVerifyTwoFactorOTP,
|
|
259
259
|
E as validateIntegration,
|