@plutonhq/core-frontend 0.1.9 → 0.1.11
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/components/Plan/PlanStats/PlanStats.js +9 -9
- package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.js +52 -51
- package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.d.ts.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.js +36 -36
- package/dist-lib/components/Storage/StorageItem/StorageItem.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +7 -0
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/common/form/Select/Select.js +12 -12
- package/dist-lib/components/common/form/Select/Select.js.map +1 -1
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts +20 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js +75 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js +30 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js.map +1 -0
- package/dist-lib/providers/drime.png +0 -0
- package/dist-lib/providers/filelu.png +0 -0
- package/dist-lib/providers/filen.png +0 -0
- package/dist-lib/providers/internxt.png +0 -0
- package/dist-lib/providers/shade.png +0 -0
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/storageProviders.d.ts +40 -0
- package/dist-lib/utils/storageProviders.d.ts.map +1 -1
- package/dist-lib/utils/storageProviders.js +35 -0
- package/dist-lib/utils/storageProviders.js.map +1 -1
- package/package.json +14 -12
- package/src/components/Plan/PlanStats/PlanStats.tsx +1 -1
- package/src/components/Storage/AddStorage/AddStorage.tsx +7 -6
- package/src/components/Storage/StorageItem/StorageItem.tsx +9 -2
- package/src/components/common/Icon/Icon.tsx +8 -0
- package/src/components/common/form/Select/Select.tsx +1 -1
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss +223 -0
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx +106 -0
- package/src/utils/storageProviders.ts +35 -0
|
@@ -3,23 +3,23 @@ import a from "../../common/Icon/Icon.js";
|
|
|
3
3
|
import { formatNumberToK as f, formatBytes as u } from "../../../utils/helpers.js";
|
|
4
4
|
import S from "../PlanHistory/PlanHistory.js";
|
|
5
5
|
import d from "./PlanStats.module.scss.js";
|
|
6
|
-
const w = ({ plan:
|
|
7
|
-
const { sourceConfig:
|
|
6
|
+
const w = ({ plan: r, isSync: h, lastBackupItem: n }) => {
|
|
7
|
+
const { sourceConfig: c, storage: e, storagePath: g, isActive: v, settings: N } = r, { interval: o } = N, m = (n == null ? void 0 : n.totalFiles) || 0, y = (n == null ? void 0 : n.totalSize) || 0, T = (l) => {
|
|
8
8
|
let s = "";
|
|
9
|
-
return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((
|
|
9
|
+
return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((p) => `<div>${r.device.name} -> ${p}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (s += "<div><strong>Excludes</strong></div>", s += l.excludes.map((p) => `<div>${p}</div>`).join("")), s;
|
|
10
10
|
};
|
|
11
11
|
return /* @__PURE__ */ i("div", { className: d.planStats, children: [
|
|
12
12
|
/* @__PURE__ */ i("div", { className: d.sources, children: [
|
|
13
13
|
/* @__PURE__ */ i("div", { className: d.widgetTitle, children: [
|
|
14
14
|
/* @__PURE__ */ t(a, { type: "backup", size: 12 }),
|
|
15
15
|
" ",
|
|
16
|
-
|
|
16
|
+
h ? "Syncing" : "Backing Up"
|
|
17
17
|
] }),
|
|
18
18
|
/* @__PURE__ */ i("div", { className: d.sourceContent, children: [
|
|
19
|
-
/* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(
|
|
19
|
+
/* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(c), children: [
|
|
20
20
|
/* @__PURE__ */ t(a, { type: "folders", size: 18 }),
|
|
21
21
|
/* @__PURE__ */ i("span", { children: [
|
|
22
|
-
|
|
22
|
+
c == null ? void 0 : c.includes.length,
|
|
23
23
|
" Sources"
|
|
24
24
|
] })
|
|
25
25
|
] }),
|
|
@@ -28,9 +28,9 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
|
|
|
28
28
|
{
|
|
29
29
|
"data-tooltip-id": "htmlToolTip",
|
|
30
30
|
"data-tooltip-place": "top",
|
|
31
|
-
"data-tooltip-html": v ?
|
|
31
|
+
"data-tooltip-html": v ? h ? `Syncing changes every ${o.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(o.type) ? o[o.type] + o.type : o.type}` : "Plan is Not Active",
|
|
32
32
|
children: [
|
|
33
|
-
/* @__PURE__ */ t(a, { type: v ?
|
|
33
|
+
/* @__PURE__ */ t(a, { type: v ? h ? "reload" : "copy" : "pause", size: 16 }),
|
|
34
34
|
/* @__PURE__ */ t("div", { className: d.sourceArrow, children: "→" })
|
|
35
35
|
]
|
|
36
36
|
}
|
|
@@ -71,7 +71,7 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
|
|
|
71
71
|
/* @__PURE__ */ t(a, { type: "speed", size: 12 }),
|
|
72
72
|
" Health"
|
|
73
73
|
] }),
|
|
74
|
-
/* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId:
|
|
74
|
+
/* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId: r.id, history: r.backups, itemsCount: 90 }) })
|
|
75
75
|
] })
|
|
76
76
|
] });
|
|
77
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","
|
|
1
|
+
{"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","jsxs","classes","jsx","Icon","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,
|
|
1
|
+
{"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,4CAqQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
|
|
@@ -1,29 +1,32 @@
|
|
|
1
|
-
import { jsx as t, jsxs as
|
|
1
|
+
import { jsx as t, jsxs as d, Fragment as B } from "react/jsx-runtime";
|
|
2
2
|
import { useState as p, useMemo as O, useEffect as j } from "react";
|
|
3
3
|
import { toast as R } from "react-toastify";
|
|
4
4
|
import a from "./AddStorage.module.scss.js";
|
|
5
5
|
import m from "../../common/Icon/Icon.js";
|
|
6
|
-
import I from "
|
|
7
|
-
import
|
|
8
|
-
import G from "../../common/
|
|
9
|
-
import M from "
|
|
10
|
-
import H from "
|
|
11
|
-
import
|
|
12
|
-
import K from "
|
|
6
|
+
import { useAddStorage as I, useGetAvailableStorages as L } from "../../../services/storage.js";
|
|
7
|
+
import V from "../../common/SidePanel/SidePanel.js";
|
|
8
|
+
import G from "../../common/form/TagsInput/TagsInput.js";
|
|
9
|
+
import M from "../StorageSettings/StorageSettings.js";
|
|
10
|
+
import { shouldDisplayStorageField as H } from "../../../utils/helpers.js";
|
|
11
|
+
import J from "../StorageAuthSettings/StorageAuthSettings.js";
|
|
12
|
+
import K from "../../common/form/StorageProviderSelect/StorageProviderSelect.js";
|
|
13
13
|
const le = ({ close: A }) => {
|
|
14
|
-
const [g, f] = p({}), [y,
|
|
15
|
-
|
|
14
|
+
const [g, f] = p({}), [y, P] = p(""), [r, w] = p(""), [S, $] = p(""), [T, k] = p(!1), [h, N] = p({}), [F, E] = p({}), [C, x] = p([]), q = I(), { data: b } = L(), i = (b == null ? void 0 : b.result) || {};
|
|
15
|
+
console.log("storageProviders :", i);
|
|
16
|
+
const z = O(() => Object.keys(i).map((e) => ({
|
|
17
|
+
label: i[e].name,
|
|
16
18
|
value: e,
|
|
19
|
+
doc: i[e].doc,
|
|
17
20
|
image: /* @__PURE__ */ t("img", { src: `providers/${e}.png` })
|
|
18
|
-
})).sort((e, s) => e.label.localeCompare(s.label)), [
|
|
19
|
-
var l,
|
|
20
|
-
const e = ((l =
|
|
21
|
-
e.forEach((
|
|
22
|
-
|
|
21
|
+
})).sort((e, s) => e.label.localeCompare(s.label)), [i]), c = O(() => {
|
|
22
|
+
var l, v;
|
|
23
|
+
const e = ((l = i[r]) == null ? void 0 : l.settings) || [], s = { required: [], optional: [], authFields: { fields: [], types: [] } };
|
|
24
|
+
e.forEach((n) => {
|
|
25
|
+
n.required ? s.required.push(n) : n.authFieldType || s.optional.push(n);
|
|
23
26
|
});
|
|
24
|
-
const u = (
|
|
27
|
+
const u = (v = i[r]) == null ? void 0 : v.authTypes, o = e.filter((n) => n.authFieldType);
|
|
25
28
|
return s.authFields = { fields: o, types: u }, s;
|
|
26
|
-
}, [
|
|
29
|
+
}, [i, r]);
|
|
27
30
|
j(() => {
|
|
28
31
|
if (r) {
|
|
29
32
|
const e = {};
|
|
@@ -48,20 +51,20 @@ const le = ({ close: A }) => {
|
|
|
48
51
|
const U = () => {
|
|
49
52
|
var u;
|
|
50
53
|
f({});
|
|
51
|
-
const e = {}, s = ((u =
|
|
54
|
+
const e = {}, s = ((u = i[r]) == null ? void 0 : u.settings) || [];
|
|
52
55
|
if (s.forEach((o) => {
|
|
53
|
-
if (!o.required || !
|
|
56
|
+
if (!o.required || !H(o, F, s)) return;
|
|
54
57
|
const l = !!o.authFieldType;
|
|
55
|
-
if (!(!l || o.authFieldType ===
|
|
56
|
-
const
|
|
57
|
-
(
|
|
58
|
-
}), y || (e.title = "Required"), r || (e.storageType = "Required"), console.log("storageType :", r,
|
|
58
|
+
if (!(!l || o.authFieldType === S)) return;
|
|
59
|
+
const n = l ? h[o.value] : F[o.value];
|
|
60
|
+
(n == null || n === "") && (e[o.value] = "Required");
|
|
61
|
+
}), y || (e.title = "Required"), r || (e.storageType = "Required"), console.log("storageType :", r, S, h), console.log("errors :", e), Object.keys(e).length === 0) {
|
|
59
62
|
const o = {
|
|
60
63
|
name: y,
|
|
61
64
|
type: r,
|
|
62
|
-
settings:
|
|
65
|
+
settings: F,
|
|
63
66
|
credentials: h,
|
|
64
|
-
authType:
|
|
67
|
+
authType: S,
|
|
65
68
|
tags: C
|
|
66
69
|
};
|
|
67
70
|
console.log("payload :", o), q.mutate(o, {
|
|
@@ -76,22 +79,22 @@ const le = ({ close: A }) => {
|
|
|
76
79
|
f(e);
|
|
77
80
|
};
|
|
78
81
|
return /* @__PURE__ */ t(
|
|
79
|
-
|
|
82
|
+
V,
|
|
80
83
|
{
|
|
81
84
|
title: "Add New Remote Storage",
|
|
82
85
|
icon: /* @__PURE__ */ t(m, { type: "storages", size: 18 }),
|
|
83
86
|
close: A,
|
|
84
|
-
footer: /* @__PURE__ */
|
|
87
|
+
footer: /* @__PURE__ */ d(B, { children: [
|
|
85
88
|
/* @__PURE__ */ t("div", { className: a.footerLeft, children: /* @__PURE__ */ t("div", { className: a.summary }) }),
|
|
86
|
-
/* @__PURE__ */ t("div", { className: a.footerRight, children: /* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ t("div", { className: a.footerRight, children: /* @__PURE__ */ d("button", { className: a.createButton, onClick: () => U(), children: [
|
|
87
90
|
/* @__PURE__ */ t(m, { type: "check", size: 12 }),
|
|
88
91
|
" Add Storage"
|
|
89
92
|
] }) })
|
|
90
93
|
] }),
|
|
91
|
-
children: /* @__PURE__ */
|
|
94
|
+
children: /* @__PURE__ */ d("div", { className: a.addStorageContent, children: [
|
|
92
95
|
q.isPending && /* @__PURE__ */ t("div", { className: a.loader, children: /* @__PURE__ */ t(m, { size: 36, type: "loading" }) }),
|
|
93
|
-
/* @__PURE__ */
|
|
94
|
-
/* @__PURE__ */
|
|
96
|
+
/* @__PURE__ */ d("div", { className: a.field, children: [
|
|
97
|
+
/* @__PURE__ */ d("label", { className: a.label, children: [
|
|
95
98
|
"Storage Name*",
|
|
96
99
|
/* @__PURE__ */ t("i", { "data-tooltip-id": "hintTooltip", "data-tooltip-content": "Storage name cannot be changed in future", "data-tooltip-place": "top", children: /* @__PURE__ */ t(m, { type: "help", size: 13 }) })
|
|
97
100
|
] }),
|
|
@@ -104,39 +107,37 @@ const le = ({ close: A }) => {
|
|
|
104
107
|
placeholder: "Give your Storage a Name",
|
|
105
108
|
value: y || "",
|
|
106
109
|
required: !0,
|
|
107
|
-
onChange: (e) =>
|
|
110
|
+
onChange: (e) => P(e.target.value)
|
|
108
111
|
}
|
|
109
112
|
)
|
|
110
113
|
] }),
|
|
111
|
-
/* @__PURE__ */
|
|
114
|
+
/* @__PURE__ */ d("div", { className: a.field, children: [
|
|
112
115
|
/* @__PURE__ */ t("label", { className: a.label, children: "Storage Type*" }),
|
|
113
116
|
g.storageType && /* @__PURE__ */ t("span", { className: a.fieldErrorLabel, children: g.storageType }),
|
|
114
117
|
/* @__PURE__ */ t("div", { className: a.selectField, children: /* @__PURE__ */ t(
|
|
115
|
-
|
|
118
|
+
K,
|
|
116
119
|
{
|
|
117
|
-
options: [
|
|
120
|
+
options: [...z],
|
|
118
121
|
fieldValue: r,
|
|
122
|
+
full: !0,
|
|
119
123
|
onUpdate: (e) => {
|
|
120
124
|
var o;
|
|
121
125
|
N({}), E({}), w(e);
|
|
122
|
-
const u = (((o =
|
|
123
|
-
(l,
|
|
126
|
+
const u = (((o = i[e]) == null ? void 0 : o.fields) || []).reduce(
|
|
127
|
+
(l, v) => ({
|
|
124
128
|
...l,
|
|
125
|
-
[
|
|
129
|
+
[v.value]: ""
|
|
126
130
|
}),
|
|
127
131
|
{}
|
|
128
132
|
);
|
|
129
133
|
N(u);
|
|
130
134
|
},
|
|
131
|
-
size: "large",
|
|
132
|
-
full: !0,
|
|
133
|
-
search: !0,
|
|
134
135
|
error: g.storageType
|
|
135
136
|
}
|
|
136
137
|
) })
|
|
137
138
|
] }),
|
|
138
139
|
r && c.authFields.fields.length > 0 && /* @__PURE__ */ t(
|
|
139
|
-
|
|
140
|
+
J,
|
|
140
141
|
{
|
|
141
142
|
storageType: r,
|
|
142
143
|
fields: c.authFields.fields,
|
|
@@ -144,15 +145,15 @@ const le = ({ close: A }) => {
|
|
|
144
145
|
settings: h,
|
|
145
146
|
onUpdate: (e) => N(e),
|
|
146
147
|
errors: g,
|
|
147
|
-
currentAuthType:
|
|
148
|
-
onAuthTypeChange:
|
|
148
|
+
currentAuthType: S,
|
|
149
|
+
onAuthTypeChange: $
|
|
149
150
|
}
|
|
150
151
|
),
|
|
151
|
-
Object.keys(c.optional).length > 0 && /* @__PURE__ */
|
|
152
|
+
Object.keys(c.optional).length > 0 && /* @__PURE__ */ d(
|
|
152
153
|
"div",
|
|
153
154
|
{
|
|
154
155
|
className: `${a.advancedButton} ${T ? a.advancedButtonActive : ""}`,
|
|
155
|
-
onClick: () =>
|
|
156
|
+
onClick: () => k(!T),
|
|
156
157
|
children: [
|
|
157
158
|
/* @__PURE__ */ t(m, { type: "settings" }),
|
|
158
159
|
/* @__PURE__ */ t("span", { children: "Advanced Options" }),
|
|
@@ -160,18 +161,18 @@ const le = ({ close: A }) => {
|
|
|
160
161
|
]
|
|
161
162
|
}
|
|
162
163
|
),
|
|
163
|
-
T && Object.keys(c.optional).length > 0 && /* @__PURE__ */
|
|
164
|
+
T && Object.keys(c.optional).length > 0 && /* @__PURE__ */ d("div", { className: a.advancedOptions, children: [
|
|
164
165
|
/* @__PURE__ */ t(
|
|
165
|
-
|
|
166
|
+
M,
|
|
166
167
|
{
|
|
167
168
|
fields: c.optional,
|
|
168
|
-
settings:
|
|
169
|
+
settings: F,
|
|
169
170
|
onUpdate: (e) => E(e)
|
|
170
171
|
}
|
|
171
172
|
),
|
|
172
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ d("div", { className: a.field, children: [
|
|
173
174
|
/* @__PURE__ */ t("label", { className: a.label, children: "Tags" }),
|
|
174
|
-
/* @__PURE__ */ t(
|
|
175
|
+
/* @__PURE__ */ t(G, { fieldValue: C, onUpdate: (e) => x(e) })
|
|
175
176
|
] })
|
|
176
177
|
] })
|
|
177
178
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddStorage.js","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport classes from './AddStorage.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { useAddStorage, useGetAvailableStorages } from '../../../services/storage';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n// import { useGetDevice } from '../../../services/devices';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport StorageAuthSettings from '../StorageAuthSettings/StorageAuthSettings';\r\n\r\ntype AddStorageProps = {\r\n close: () => void;\r\n};\r\n\r\nconst AddStorage = ({ close }: AddStorageProps) => {\r\n const [inputError, setInputError] = useState<Record<string, string>>({});\r\n const [storageTitle, setStorageTitle] = useState('');\r\n const [storageType, setStorageType] = useState('');\r\n const [currentAuthType, setCurrentAuthType] = useState<string>('');\r\n const [showAdvanced, setShowAdvanced] = useState(false);\r\n const [storageCredentials, setStorageCredentials] = useState<Record<string, string | number | boolean>>({});\r\n const [storageSettings, setStorageSettings] = useState<Record<string, string | number | boolean>>({});\r\n const [storageTags, setStorageTags] = useState<string[]>([]);\r\n const addStorageMutation = useAddStorage();\r\n const { data } = useGetAvailableStorages();\r\n // const { data: deviceData } = useGetDevice('main', true);\r\n // const mainDeviceIsServer =\r\n // deviceData?.result?.os && deviceData?.result?.platform ? isServerEdition(deviceData.result.os, deviceData.result.platform) : false;\r\n const storageProviders = data?.result || {};\r\n\r\n const providersOptions = useMemo(() => {\r\n return Object.keys(storageProviders)\r\n .map((k) => ({\r\n label: storageProviders[k as keyof typeof storageProviders].name,\r\n value: k,\r\n image: <img src={`providers/${k}.png`} />,\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }, [storageProviders]);\r\n\r\n const storageFields = useMemo(() => {\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n const groupedFields = { required: [], optional: [], authFields: { fields: [], types: [] } } as {\r\n required: storageOptionField[];\r\n optional: storageOptionField[];\r\n authFields: { fields: storageOptionField[]; types: string[] };\r\n };\r\n\r\n allFields.forEach((field: storageOptionField) => {\r\n if (field.required) {\r\n (groupedFields.required as storageOptionField[]).push(field);\r\n } else {\r\n if (!field.authFieldType) {\r\n (groupedFields.optional as storageOptionField[]).push(field);\r\n }\r\n }\r\n });\r\n const types: string[] = storageProviders[storageType as keyof typeof storageProviders]?.authTypes;\r\n const authFields = allFields.filter((f) => f.authFieldType);\r\n groupedFields.authFields = { fields: authFields, types };\r\n\r\n return groupedFields;\r\n }, [storageProviders, storageType]);\r\n\r\n // Initialize credentials when storage type changes\r\n useEffect(() => {\r\n if (storageType) {\r\n const storageCreds: Record<string, string> = {};\r\n storageFields.required.forEach((field: storageOptionField) => {\r\n storageCreds[field.value] = '';\r\n });\r\n setStorageCredentials(storageCreds);\r\n }\r\n }, [storageType, storageFields]);\r\n\r\n useEffect(() => {\r\n if (storageTitle) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['title'];\r\n return data;\r\n });\r\n }\r\n if (storageType) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['storageType'];\r\n return data;\r\n });\r\n }\r\n Object.entries(storageCredentials).forEach(([key, value]) => {\r\n if (value) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data[key];\r\n return data;\r\n });\r\n }\r\n });\r\n console.log('storageCredentials :', storageCredentials);\r\n }, [storageTitle, storageType, storageCredentials]);\r\n\r\n const addStorage = () => {\r\n setInputError({});\r\n const errors: Record<string, string> = {};\r\n // Get all fields for the selected storage type\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n\r\n // Validate required fields that are visible AND relevant to current auth type\r\n allFields.forEach((fieldDef) => {\r\n if (!fieldDef.required) return;\r\n\r\n // Check if this field should be displayed based on conditions\r\n if (!shouldDisplayStorageField(fieldDef, storageSettings, allFields)) return;\r\n\r\n // Check if this field is relevant to the current auth type\r\n const isAuthField = !!fieldDef.authFieldType;\r\n const isRelevantAuthField = !isAuthField || fieldDef.authFieldType === currentAuthType;\r\n if (!isRelevantAuthField) return;\r\n\r\n // Get the field value from the appropriate state object\r\n const fieldValue = isAuthField ? storageCredentials[fieldDef.value] : storageSettings[fieldDef.value];\r\n\r\n // Check if the value is empty\r\n const isEmpty = fieldValue === undefined || fieldValue === null || fieldValue === '';\r\n\r\n if (isEmpty) {\r\n errors[fieldDef.value] = 'Required';\r\n }\r\n });\r\n if (!storageTitle) {\r\n errors['title'] = 'Required';\r\n }\r\n if (!storageType) {\r\n errors['storageType'] = 'Required';\r\n }\r\n console.log('storageType :', storageType, currentAuthType, storageCredentials);\r\n console.log('errors :', errors);\r\n\r\n if (Object.keys(errors).length === 0) {\r\n const storagePayload = {\r\n name: storageTitle,\r\n type: storageType,\r\n settings: storageSettings,\r\n credentials: storageCredentials,\r\n authType: currentAuthType,\r\n tags: storageTags,\r\n };\r\n console.log('payload :', storagePayload);\r\n\r\n addStorageMutation.mutate(storagePayload, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Adding Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Successfully Added Storage!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n } else {\r\n setInputError(errors);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title=\"Add New Remote Storage\"\r\n icon={<Icon type={'storages'} size={18} />}\r\n close={close}\r\n footer={\r\n <>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}></div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button className={classes.createButton} onClick={() => addStorage()}>\r\n <Icon type=\"check\" size={12} /> Add Storage\r\n </button>\r\n </div>\r\n </>\r\n }\r\n >\r\n <div className={classes.addStorageContent}>\r\n {addStorageMutation.isPending && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n <div className={classes.field}>\r\n <label className={classes.label}>\r\n Storage Name*\r\n <i data-tooltip-id=\"hintTooltip\" data-tooltip-content={'Storage name cannot be changed in future'} data-tooltip-place=\"top\">\r\n <Icon type=\"help\" size={13} />\r\n </i>\r\n </label>\r\n {inputError['title'] && <span className={classes.fieldErrorLabel}>{inputError['title']}</span>}\r\n <input\r\n className={`${classes.input} ${inputError['title'] ? classes.inputHasError : ''}`}\r\n type=\"text\"\r\n placeholder=\"Give your Storage a Name\"\r\n value={storageTitle || ''}\r\n required\r\n onChange={(e) => setStorageTitle(e.target.value)}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Storage Type*</label>\r\n {inputError['storageType'] && <span className={classes.fieldErrorLabel}>{inputError['storageType']}</span>}\r\n <div className={classes.selectField}>\r\n <Select\r\n options={[{ label: 'Select Storage Type', value: '' }, ...providersOptions]}\r\n fieldValue={storageType}\r\n onUpdate={(val: string) => {\r\n setStorageCredentials({});\r\n setStorageSettings({});\r\n setStorageType(val);\r\n const fields = storageProviders[val as keyof typeof storageProviders]?.fields || [];\r\n const newCredentials = fields.reduce(\r\n (acc: any, field: { value: any }) => ({\r\n ...acc,\r\n [field.value]: '',\r\n }),\r\n {},\r\n );\r\n setStorageCredentials(newCredentials);\r\n }}\r\n size=\"large\"\r\n full={true}\r\n search={true}\r\n error={inputError['storageType']}\r\n />\r\n </div>\r\n </div>\r\n\r\n {storageType && storageFields.authFields.fields.length > 0 && (\r\n <StorageAuthSettings\r\n storageType={storageType}\r\n fields={storageFields.authFields.fields}\r\n authTypes={storageFields.authFields.types}\r\n settings={storageCredentials}\r\n onUpdate={(newSettings) => setStorageCredentials(newSettings)}\r\n errors={inputError}\r\n currentAuthType={currentAuthType}\r\n onAuthTypeChange={setCurrentAuthType}\r\n />\r\n )}\r\n {Object.keys(storageFields.optional).length > 0 && (\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'settings'} />\r\n <span>Advanced Options</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n )}\r\n {showAdvanced && Object.keys(storageFields.optional).length > 0 && (\r\n <div className={classes.advancedOptions}>\r\n <StorageSettings\r\n fields={storageFields.optional}\r\n settings={storageSettings}\r\n onUpdate={(newSettings) => setStorageSettings(newSettings)}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={storageTags} onUpdate={(val) => setStorageTags(val)} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\nexport default AddStorage;\r\n"],"names":["AddStorage","close","inputError","setInputError","useState","storageTitle","setStorageTitle","storageType","setStorageType","currentAuthType","setCurrentAuthType","showAdvanced","setShowAdvanced","storageCredentials","setStorageCredentials","storageSettings","setStorageSettings","storageTags","setStorageTags","addStorageMutation","useAddStorage","data","useGetAvailableStorages","storageProviders","providersOptions","useMemo","k","jsx","a","b","storageFields","allFields","_a","groupedFields","field","types","_b","authFields","f","useEffect","storageCreds","currentState","key","value","addStorage","errors","fieldDef","shouldDisplayStorageField","isAuthField","fieldValue","storagePayload","error","toast","SidePanel","Icon","jsxs","Fragment","classes","Select","val","newCredentials","acc","StorageAuthSettings","newSettings","StorageSettings","TagsInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AddStorage.js","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport classes from './AddStorage.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useAddStorage, useGetAvailableStorages } from '../../../services/storage';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport TagsInput from '../../common/form/TagsInput/TagsInput';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n// import { useGetDevice } from '../../../services/devices';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport StorageAuthSettings from '../StorageAuthSettings/StorageAuthSettings';\r\nimport StorageProviderSelect from '../../common/form/StorageProviderSelect/StorageProviderSelect';\r\n\r\ntype AddStorageProps = {\r\n close: () => void;\r\n};\r\n\r\nconst AddStorage = ({ close }: AddStorageProps) => {\r\n const [inputError, setInputError] = useState<Record<string, string>>({});\r\n const [storageTitle, setStorageTitle] = useState('');\r\n const [storageType, setStorageType] = useState('');\r\n const [currentAuthType, setCurrentAuthType] = useState<string>('');\r\n const [showAdvanced, setShowAdvanced] = useState(false);\r\n const [storageCredentials, setStorageCredentials] = useState<Record<string, string | number | boolean>>({});\r\n const [storageSettings, setStorageSettings] = useState<Record<string, string | number | boolean>>({});\r\n const [storageTags, setStorageTags] = useState<string[]>([]);\r\n const addStorageMutation = useAddStorage();\r\n const { data } = useGetAvailableStorages();\r\n // const { data: deviceData } = useGetDevice('main', true);\r\n // const mainDeviceIsServer =\r\n // deviceData?.result?.os && deviceData?.result?.platform ? isServerEdition(deviceData.result.os, deviceData.result.platform) : false;\r\n const storageProviders = data?.result || {};\r\n\r\n console.log('storageProviders :', storageProviders);\r\n\r\n const providersOptions = useMemo(() => {\r\n return Object.keys(storageProviders)\r\n .map((k) => ({\r\n label: storageProviders[k as keyof typeof storageProviders].name,\r\n value: k,\r\n doc: storageProviders[k as keyof typeof storageProviders].doc,\r\n image: <img src={`providers/${k}.png`} />,\r\n }))\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n }, [storageProviders]);\r\n\r\n const storageFields = useMemo(() => {\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n const groupedFields = { required: [], optional: [], authFields: { fields: [], types: [] } } as {\r\n required: storageOptionField[];\r\n optional: storageOptionField[];\r\n authFields: { fields: storageOptionField[]; types: string[] };\r\n };\r\n\r\n allFields.forEach((field: storageOptionField) => {\r\n if (field.required) {\r\n (groupedFields.required as storageOptionField[]).push(field);\r\n } else {\r\n if (!field.authFieldType) {\r\n (groupedFields.optional as storageOptionField[]).push(field);\r\n }\r\n }\r\n });\r\n const types: string[] = storageProviders[storageType as keyof typeof storageProviders]?.authTypes;\r\n const authFields = allFields.filter((f) => f.authFieldType);\r\n groupedFields.authFields = { fields: authFields, types };\r\n\r\n return groupedFields;\r\n }, [storageProviders, storageType]);\r\n\r\n // Initialize credentials when storage type changes\r\n useEffect(() => {\r\n if (storageType) {\r\n const storageCreds: Record<string, string> = {};\r\n storageFields.required.forEach((field: storageOptionField) => {\r\n storageCreds[field.value] = '';\r\n });\r\n setStorageCredentials(storageCreds);\r\n }\r\n }, [storageType, storageFields]);\r\n\r\n useEffect(() => {\r\n if (storageTitle) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['title'];\r\n return data;\r\n });\r\n }\r\n if (storageType) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data['storageType'];\r\n return data;\r\n });\r\n }\r\n Object.entries(storageCredentials).forEach(([key, value]) => {\r\n if (value) {\r\n setInputError((currentState) => {\r\n const data = { ...currentState };\r\n delete data[key];\r\n return data;\r\n });\r\n }\r\n });\r\n console.log('storageCredentials :', storageCredentials);\r\n }, [storageTitle, storageType, storageCredentials]);\r\n\r\n const addStorage = () => {\r\n setInputError({});\r\n const errors: Record<string, string> = {};\r\n // Get all fields for the selected storage type\r\n const allFields: storageOptionField[] = storageProviders[storageType as keyof typeof storageProviders]?.settings || [];\r\n\r\n // Validate required fields that are visible AND relevant to current auth type\r\n allFields.forEach((fieldDef) => {\r\n if (!fieldDef.required) return;\r\n\r\n // Check if this field should be displayed based on conditions\r\n if (!shouldDisplayStorageField(fieldDef, storageSettings, allFields)) return;\r\n\r\n // Check if this field is relevant to the current auth type\r\n const isAuthField = !!fieldDef.authFieldType;\r\n const isRelevantAuthField = !isAuthField || fieldDef.authFieldType === currentAuthType;\r\n if (!isRelevantAuthField) return;\r\n\r\n // Get the field value from the appropriate state object\r\n const fieldValue = isAuthField ? storageCredentials[fieldDef.value] : storageSettings[fieldDef.value];\r\n\r\n // Check if the value is empty\r\n const isEmpty = fieldValue === undefined || fieldValue === null || fieldValue === '';\r\n\r\n if (isEmpty) {\r\n errors[fieldDef.value] = 'Required';\r\n }\r\n });\r\n if (!storageTitle) {\r\n errors['title'] = 'Required';\r\n }\r\n if (!storageType) {\r\n errors['storageType'] = 'Required';\r\n }\r\n console.log('storageType :', storageType, currentAuthType, storageCredentials);\r\n console.log('errors :', errors);\r\n\r\n if (Object.keys(errors).length === 0) {\r\n const storagePayload = {\r\n name: storageTitle,\r\n type: storageType,\r\n settings: storageSettings,\r\n credentials: storageCredentials,\r\n authType: currentAuthType,\r\n tags: storageTags,\r\n };\r\n console.log('payload :', storagePayload);\r\n\r\n addStorageMutation.mutate(storagePayload, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Adding Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Successfully Added Storage!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n } else {\r\n setInputError(errors);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title=\"Add New Remote Storage\"\r\n icon={<Icon type={'storages'} size={18} />}\r\n close={close}\r\n footer={\r\n <>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}></div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n <button className={classes.createButton} onClick={() => addStorage()}>\r\n <Icon type=\"check\" size={12} /> Add Storage\r\n </button>\r\n </div>\r\n </>\r\n }\r\n >\r\n <div className={classes.addStorageContent}>\r\n {addStorageMutation.isPending && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n <div className={classes.field}>\r\n <label className={classes.label}>\r\n Storage Name*\r\n <i data-tooltip-id=\"hintTooltip\" data-tooltip-content={'Storage name cannot be changed in future'} data-tooltip-place=\"top\">\r\n <Icon type=\"help\" size={13} />\r\n </i>\r\n </label>\r\n {inputError['title'] && <span className={classes.fieldErrorLabel}>{inputError['title']}</span>}\r\n <input\r\n className={`${classes.input} ${inputError['title'] ? classes.inputHasError : ''}`}\r\n type=\"text\"\r\n placeholder=\"Give your Storage a Name\"\r\n value={storageTitle || ''}\r\n required\r\n onChange={(e) => setStorageTitle(e.target.value)}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Storage Type*</label>\r\n {inputError['storageType'] && <span className={classes.fieldErrorLabel}>{inputError['storageType']}</span>}\r\n <div className={classes.selectField}>\r\n <StorageProviderSelect\r\n options={[...providersOptions]}\r\n fieldValue={storageType}\r\n full={true}\r\n onUpdate={(val: string) => {\r\n setStorageCredentials({});\r\n setStorageSettings({});\r\n setStorageType(val);\r\n const fields = storageProviders[val as keyof typeof storageProviders]?.fields || [];\r\n const newCredentials = fields.reduce(\r\n (acc: any, field: { value: any }) => ({\r\n ...acc,\r\n [field.value]: '',\r\n }),\r\n {},\r\n );\r\n setStorageCredentials(newCredentials);\r\n }}\r\n error={inputError['storageType']}\r\n />\r\n </div>\r\n </div>\r\n\r\n {storageType && storageFields.authFields.fields.length > 0 && (\r\n <StorageAuthSettings\r\n storageType={storageType}\r\n fields={storageFields.authFields.fields}\r\n authTypes={storageFields.authFields.types}\r\n settings={storageCredentials}\r\n onUpdate={(newSettings) => setStorageCredentials(newSettings)}\r\n errors={inputError}\r\n currentAuthType={currentAuthType}\r\n onAuthTypeChange={setCurrentAuthType}\r\n />\r\n )}\r\n {Object.keys(storageFields.optional).length > 0 && (\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'settings'} />\r\n <span>Advanced Options</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n )}\r\n {showAdvanced && Object.keys(storageFields.optional).length > 0 && (\r\n <div className={classes.advancedOptions}>\r\n <StorageSettings\r\n fields={storageFields.optional}\r\n settings={storageSettings}\r\n onUpdate={(newSettings) => setStorageSettings(newSettings)}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Tags</label>\r\n <TagsInput fieldValue={storageTags} onUpdate={(val) => setStorageTags(val)} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\nexport default AddStorage;\r\n"],"names":["AddStorage","close","inputError","setInputError","useState","storageTitle","setStorageTitle","storageType","setStorageType","currentAuthType","setCurrentAuthType","showAdvanced","setShowAdvanced","storageCredentials","setStorageCredentials","storageSettings","setStorageSettings","storageTags","setStorageTags","addStorageMutation","useAddStorage","data","useGetAvailableStorages","storageProviders","providersOptions","useMemo","k","jsx","a","b","storageFields","allFields","_a","groupedFields","field","types","_b","authFields","f","useEffect","storageCreds","currentState","key","value","addStorage","errors","fieldDef","shouldDisplayStorageField","isAuthField","fieldValue","storagePayload","error","toast","SidePanel","Icon","jsxs","Fragment","classes","StorageProviderSelect","val","newCredentials","acc","StorageAuthSettings","newSettings","StorageSettings","TagsInput"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,UAAU,gBAAgB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"StorageItem.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,UAAU,gBAAgB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,QAAA,MAAM,WAAW,GAAI,qBAAqB,gBAAgB,4CA2IzD,CAAC;AACF,eAAe,WAAW,CAAC"}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { jsxs as t, jsx as e, Fragment as
|
|
1
|
+
import { jsxs as t, jsx as e, Fragment as a } from "react/jsx-runtime";
|
|
2
2
|
import { useState as d } from "react";
|
|
3
|
-
import { toast as
|
|
3
|
+
import { toast as z } from "react-toastify";
|
|
4
4
|
import i from "../../common/Icon/Icon.js";
|
|
5
5
|
import o from "./StorageItem.module.scss.js";
|
|
6
|
-
import { formatBytes as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import { useDeleteStorage as
|
|
6
|
+
import { formatBytes as P } from "../../../utils/helpers.js";
|
|
7
|
+
import x from "../EditStorage/EditStorage.js";
|
|
8
|
+
import A from "../../common/Modal/Modal.js";
|
|
9
|
+
import { useDeleteStorage as D, useVerifyStorage as T } from "../../../services/storage.js";
|
|
10
10
|
import B from "../../common/ActionModal/ActionModal.js";
|
|
11
|
-
const
|
|
12
|
-
var
|
|
13
|
-
const [m,
|
|
11
|
+
const K = ({ storage: n, layout: C }) => {
|
|
12
|
+
var N;
|
|
13
|
+
const [m, l] = d(!1), [p, g] = d(!1), [h, f] = d(!1), [u, y] = d(!1), { id: S, name: k, type: w, plans: E = [], usedSize: R = 200, storageTypeName: V, settings: $ = {} } = n, v = D(), s = T(), c = S === "local", M = $.description, b = () => {
|
|
14
14
|
v.mutate(n.id, {
|
|
15
15
|
onError: (r) => {
|
|
16
|
-
console.log("error :", r == null ? void 0 : r.message),
|
|
16
|
+
console.log("error :", r == null ? void 0 : r.message), z.error(r.message || "Error Removing Storage!");
|
|
17
17
|
},
|
|
18
18
|
onSuccess: (r) => {
|
|
19
|
-
console.log("Success :", r),
|
|
19
|
+
console.log("Success :", r), z.success("Removed Storage Successfully!", { autoClose: 5e3 }), close();
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
return /* @__PURE__ */ t(
|
|
24
24
|
"div",
|
|
25
25
|
{
|
|
26
|
-
className: `${o.storage} ${
|
|
26
|
+
className: `${o.storage} ${C === "grid" ? o.storageGrid : o.storageList} ${p || h || u ? o.storageEditing : ""}`,
|
|
27
27
|
children: [
|
|
28
28
|
/* @__PURE__ */ t("div", { className: o.leftContent, children: [
|
|
29
|
-
/* @__PURE__ */ e("div", { className: o.storageType, children: /* @__PURE__ */ e("img", { src: `providers/${
|
|
29
|
+
/* @__PURE__ */ e("div", { className: o.storageType, children: /* @__PURE__ */ e("img", { src: `providers/${w}.png` }) }),
|
|
30
30
|
/* @__PURE__ */ t("div", { className: o.content, children: [
|
|
31
31
|
/* @__PURE__ */ t("div", { className: o.title, onClick: () => !c && g(!0), children: [
|
|
32
|
-
/* @__PURE__ */ e("h4", { children:
|
|
33
|
-
" ",
|
|
32
|
+
/* @__PURE__ */ e("h4", { children: k }),
|
|
33
|
+
M && /* @__PURE__ */ e("i", { className: o.planDescription, "data-tooltip-id": "appTooltip", "data-tooltip-content": M, "data-tooltip-place": "top", children: /* @__PURE__ */ e(i, { type: "note", size: 13 }) }),
|
|
34
34
|
c && /* @__PURE__ */ e(i, { type: "lock", size: 14 })
|
|
35
35
|
] }),
|
|
36
|
-
/* @__PURE__ */ e("div", { children:
|
|
36
|
+
/* @__PURE__ */ e("div", { children: V })
|
|
37
37
|
] })
|
|
38
38
|
] }),
|
|
39
39
|
/* @__PURE__ */ t("div", { className: o.rightContent, children: [
|
|
@@ -41,31 +41,31 @@ const H = ({ storage: n, layout: N }) => {
|
|
|
41
41
|
/* @__PURE__ */ e(i, { type: "backup", size: 14 }),
|
|
42
42
|
" ",
|
|
43
43
|
/* @__PURE__ */ t("i", { children: [
|
|
44
|
-
|
|
44
|
+
E.length,
|
|
45
45
|
" Plans"
|
|
46
46
|
] })
|
|
47
47
|
] }),
|
|
48
48
|
/* @__PURE__ */ t("div", { className: o.info, children: [
|
|
49
49
|
/* @__PURE__ */ e(i, { type: "disk", size: 14 }),
|
|
50
50
|
" ",
|
|
51
|
-
/* @__PURE__ */ e("i", { children:
|
|
51
|
+
/* @__PURE__ */ e("i", { children: P(R) })
|
|
52
52
|
] }),
|
|
53
53
|
/* @__PURE__ */ e(
|
|
54
54
|
"button",
|
|
55
55
|
{
|
|
56
56
|
className: `${o.moreBtn} ${m ? o.moreBtnActive : ""}`,
|
|
57
|
-
onClick: () =>
|
|
57
|
+
onClick: () => l(!m),
|
|
58
58
|
disabled: c,
|
|
59
59
|
children: /* @__PURE__ */ e(i, { type: "dots-vertical", size: 14 })
|
|
60
60
|
}
|
|
61
61
|
)
|
|
62
62
|
] }),
|
|
63
|
-
m && /* @__PURE__ */ e("div", { className: o.settings, children: !c && /* @__PURE__ */ t(
|
|
63
|
+
m && /* @__PURE__ */ e("div", { className: o.settings, children: !c && /* @__PURE__ */ t(a, { children: [
|
|
64
64
|
/* @__PURE__ */ t(
|
|
65
65
|
"button",
|
|
66
66
|
{
|
|
67
67
|
onClick: () => {
|
|
68
|
-
g(!0),
|
|
68
|
+
g(!0), l(!1);
|
|
69
69
|
},
|
|
70
70
|
children: [
|
|
71
71
|
/* @__PURE__ */ e(i, { type: "edit-settings", size: 14 }),
|
|
@@ -77,7 +77,7 @@ const H = ({ storage: n, layout: N }) => {
|
|
|
77
77
|
"button",
|
|
78
78
|
{
|
|
79
79
|
onClick: () => {
|
|
80
|
-
|
|
80
|
+
y(!0), l(!1), s.mutate(n.id);
|
|
81
81
|
},
|
|
82
82
|
children: [
|
|
83
83
|
/* @__PURE__ */ e(i, { type: "verify", size: 14 }),
|
|
@@ -89,7 +89,7 @@ const H = ({ storage: n, layout: N }) => {
|
|
|
89
89
|
"button",
|
|
90
90
|
{
|
|
91
91
|
onClick: () => {
|
|
92
|
-
|
|
92
|
+
f(!0), l(!1);
|
|
93
93
|
},
|
|
94
94
|
children: [
|
|
95
95
|
/* @__PURE__ */ e(i, { type: "trash", size: 14 }),
|
|
@@ -98,52 +98,52 @@ const H = ({ storage: n, layout: N }) => {
|
|
|
98
98
|
}
|
|
99
99
|
)
|
|
100
100
|
] }) }),
|
|
101
|
-
|
|
101
|
+
p && /* @__PURE__ */ e(x, { close: () => g(!1), storage: n }),
|
|
102
102
|
u && /* @__PURE__ */ e(
|
|
103
|
-
|
|
103
|
+
A,
|
|
104
104
|
{
|
|
105
105
|
title: `Verifying Storage "${n.name}"`,
|
|
106
|
-
closeModal: () => !s.isPending &&
|
|
106
|
+
closeModal: () => !s.isPending && y(!1),
|
|
107
107
|
width: "600px",
|
|
108
108
|
children: /* @__PURE__ */ t("div", { className: o.verifyModalContent, children: [
|
|
109
|
-
s.isPending && /* @__PURE__ */ t(
|
|
109
|
+
s.isPending && /* @__PURE__ */ t(a, { children: [
|
|
110
110
|
/* @__PURE__ */ e(i, { type: "loading", size: 16 }),
|
|
111
111
|
" Verifying Remote Storage Connection..."
|
|
112
112
|
] }),
|
|
113
|
-
s.isSuccess && /* @__PURE__ */ t(
|
|
113
|
+
s.isSuccess && /* @__PURE__ */ t(a, { children: [
|
|
114
114
|
/* @__PURE__ */ e(i, { type: "check", color: "teal", size: 14 }),
|
|
115
115
|
" Verification Successful! This Remote Storage Connection is Working Perfectly!"
|
|
116
116
|
] }),
|
|
117
|
-
s.isError && /* @__PURE__ */ t(
|
|
117
|
+
s.isError && /* @__PURE__ */ t(a, { children: [
|
|
118
118
|
/* @__PURE__ */ e(i, { type: "error", color: "indianred", size: 16 }),
|
|
119
119
|
" Error Verifying Remote Storage Connection!",
|
|
120
120
|
" ",
|
|
121
|
-
((
|
|
121
|
+
((N = s.error) == null ? void 0 : N.toString()) || ""
|
|
122
122
|
] })
|
|
123
123
|
] })
|
|
124
124
|
}
|
|
125
125
|
),
|
|
126
|
-
|
|
126
|
+
h && /* @__PURE__ */ e(
|
|
127
127
|
B,
|
|
128
128
|
{
|
|
129
129
|
title: "Remove Storage",
|
|
130
|
-
message: /* @__PURE__ */ e(
|
|
131
|
-
closeModal: () =>
|
|
130
|
+
message: /* @__PURE__ */ e(a, { children: "Are you sure you want to delete this Storage?" }),
|
|
131
|
+
closeModal: () => f(!1),
|
|
132
132
|
primaryAction: {
|
|
133
133
|
title: "Yes, Remove Storage",
|
|
134
134
|
type: "danger",
|
|
135
135
|
icon: "trash",
|
|
136
136
|
isPending: v.isPending,
|
|
137
|
-
action: () =>
|
|
137
|
+
action: () => b()
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
)
|
|
141
141
|
]
|
|
142
142
|
},
|
|
143
|
-
|
|
143
|
+
S
|
|
144
144
|
);
|
|
145
145
|
};
|
|
146
146
|
export {
|
|
147
|
-
|
|
147
|
+
K as default
|
|
148
148
|
};
|
|
149
149
|
//# sourceMappingURL=StorageItem.js.map
|