@plutonhq/core-frontend 0.1.8 → 0.1.10
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/BackupEvents/BackupEvents.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +35 -34
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +28 -26
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +21 -21
- package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
- 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/StoragePicker/StoragePicker.js +22 -22
- package/dist-lib/components/common/form/StoragePicker/StoragePicker.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/hooks/usePlanSingleActions.d.ts.map +1 -1
- package/dist-lib/hooks/usePlanSingleActions.js +8 -7
- package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
- 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 +11 -10
- package/src/components/Plan/BackupEvents/BackupEvents.module.scss +8 -0
- package/src/components/Plan/BackupEvents/BackupEvents.tsx +6 -1
- package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +1 -1
- 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/StoragePicker/StoragePicker.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/hooks/usePlanSingleActions.tsx +1 -0
- package/src/utils/storageProviders.ts +35 -0
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageItem.js","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './StorageItem.module.scss';\r\nimport { Storage } from '../../../@types/storages';\r\nimport { formatBytes } from '../../../utils/helpers';\r\nimport EditStorage from '../EditStorage/EditStorage';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { useDeleteStorage, useVerifyStorage } from '../../../services/storage';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\n\r\ninterface StorageItemProps {\r\n storage: Storage;\r\n layout: 'list' | 'grid';\r\n}\r\n\r\nconst StorageItem = ({ storage, layout }: StorageItemProps) => {\r\n const [showSettings, setShowSettings] = useState(false);\r\n const [showEditModal, setShowEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n const [showVerifyModal, setShowVerifyModal] = useState(false);\r\n const { id, name, type, plans = [], usedSize = 200, storageTypeName } = storage;\r\n const deleteStorageMutation = useDeleteStorage();\r\n const verifyStorageMutation = useVerifyStorage();\r\n const isLocalStorage = id === 'local';\r\n\r\n const removeStorage = () => {\r\n deleteStorageMutation.mutate(storage.id, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Removed Storage Successfully!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n key={id}\r\n className={`${classes.storage} ${layout === 'grid' ? classes.storageGrid : classes.storageList} ${showEditModal || showDeleteModal || showVerifyModal ? classes.storageEditing : ''}`}\r\n >\r\n <div className={classes.leftContent}>\r\n <div className={classes.storageType}>\r\n <img src={`providers/${type}.png`} />\r\n </div>\r\n\r\n <div className={classes.content}>\r\n <div className={classes.title} onClick={() => !isLocalStorage && setShowEditModal(true)}>\r\n <h4>{name}</h4> {isLocalStorage && <Icon type=\"lock\" size={14} />}\r\n </div>\r\n <div>{storageTypeName}</div>\r\n </div>\r\n </div>\r\n <div className={classes.rightContent}>\r\n <div className={classes.info}>\r\n <Icon type=\"backup\" size={14} /> <i>{plans.length} Plans</i>\r\n </div>\r\n <div className={classes.info}>\r\n <Icon type=\"disk\" size={14} /> <i>{formatBytes(usedSize)}</i>\r\n </div>\r\n <button\r\n className={`${classes.moreBtn} ${showSettings ? classes.moreBtnActive : ''}`}\r\n onClick={() => setShowSettings(!showSettings)}\r\n disabled={isLocalStorage}\r\n >\r\n <Icon type=\"dots-vertical\" size={14} />\r\n </button>\r\n </div>\r\n {showSettings && (\r\n <div className={classes.settings}>\r\n {!isLocalStorage && (\r\n <>\r\n <button\r\n onClick={() => {\r\n setShowEditModal(true);\r\n setShowSettings(false);\r\n }}\r\n >\r\n <Icon type=\"edit-settings\" size={14} /> Edit\r\n </button>\r\n <button\r\n onClick={() => {\r\n setShowVerifyModal(true);\r\n setShowSettings(false);\r\n verifyStorageMutation.mutate(storage.id);\r\n }}\r\n >\r\n <Icon type=\"verify\" size={14} /> Verify\r\n </button>\r\n <button\r\n onClick={() => {\r\n setShowDeleteModal(true);\r\n setShowSettings(false);\r\n }}\r\n >\r\n <Icon type=\"trash\" size={14} /> Remove\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n {showEditModal && <EditStorage close={() => setShowEditModal(false)} storage={storage} />}\r\n {showVerifyModal && (\r\n <Modal\r\n title={`Verifying Storage \"${storage.name}\"`}\r\n closeModal={() => !verifyStorageMutation.isPending && setShowVerifyModal(false)}\r\n width=\"600px\"\r\n >\r\n <div className={classes.verifyModalContent}>\r\n {verifyStorageMutation.isPending && (\r\n <>\r\n <Icon type=\"loading\" size={16} /> Verifying Remote Storage Connection...\r\n </>\r\n )}\r\n {verifyStorageMutation.isSuccess && (\r\n <>\r\n <Icon type=\"check\" color=\"teal\" size={14} /> Verification Successful! This Remote Storage Connection is Working Perfectly!\r\n </>\r\n )}\r\n {verifyStorageMutation.isError && (\r\n <>\r\n <Icon type=\"error\" color=\"indianred\" size={16} /> Error Verifying Remote Storage Connection!{' '}\r\n {verifyStorageMutation.error?.toString() || ''}\r\n </>\r\n )}\r\n </div>\r\n </Modal>\r\n )}\r\n {showDeleteModal && (\r\n <ActionModal\r\n title={`Remove Storage`}\r\n message={<>{`Are you sure you want to delete this Storage?`}</>}\r\n closeModal={() => setShowDeleteModal(false)}\r\n primaryAction={{\r\n title: `Yes, Remove Storage`,\r\n type: 'danger',\r\n icon: 'trash',\r\n isPending: deleteStorageMutation.isPending,\r\n action: () => removeStorage(),\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageItem;\r\n"],"names":["StorageItem","storage","layout","showSettings","setShowSettings","useState","showEditModal","setShowEditModal","showDeleteModal","setShowDeleteModal","showVerifyModal","setShowVerifyModal","id","name","type","plans","usedSize","storageTypeName","deleteStorageMutation","useDeleteStorage","verifyStorageMutation","useVerifyStorage","isLocalStorage","removeStorage","error","toast","data","jsxs","classes","jsx","Icon","formatBytes","Fragment","EditStorage","Modal","_a","ActionModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StorageItem.js","sources":["../../../../src/components/Storage/StorageItem/StorageItem.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { toast } from 'react-toastify';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from './StorageItem.module.scss';\r\nimport { Storage } from '../../../@types/storages';\r\nimport { formatBytes } from '../../../utils/helpers';\r\nimport EditStorage from '../EditStorage/EditStorage';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { useDeleteStorage, useVerifyStorage } from '../../../services/storage';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\n\r\ninterface StorageItemProps {\r\n storage: Storage;\r\n layout: 'list' | 'grid';\r\n}\r\n\r\nconst StorageItem = ({ storage, layout }: StorageItemProps) => {\r\n const [showSettings, setShowSettings] = useState(false);\r\n const [showEditModal, setShowEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n const [showVerifyModal, setShowVerifyModal] = useState(false);\r\n const { id, name, type, plans = [], usedSize = 200, storageTypeName, settings = {} } = storage;\r\n const deleteStorageMutation = useDeleteStorage();\r\n const verifyStorageMutation = useVerifyStorage();\r\n const isLocalStorage = id === 'local';\r\n const description = settings.description as string;\r\n\r\n const removeStorage = () => {\r\n deleteStorageMutation.mutate(storage.id, {\r\n onError: (error: Error) => {\r\n console.log('error :', error?.message);\r\n toast.error(error.message || `Error Removing Storage!`);\r\n },\r\n onSuccess: (data: any) => {\r\n console.log('Success :', data);\r\n toast.success(`Removed Storage Successfully!`, { autoClose: 5000 });\r\n close();\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n key={id}\r\n className={`${classes.storage} ${layout === 'grid' ? classes.storageGrid : classes.storageList} ${showEditModal || showDeleteModal || showVerifyModal ? classes.storageEditing : ''}`}\r\n >\r\n <div className={classes.leftContent}>\r\n <div className={classes.storageType}>\r\n <img src={`providers/${type}.png`} />\r\n </div>\r\n\r\n <div className={classes.content}>\r\n <div className={classes.title} onClick={() => !isLocalStorage && setShowEditModal(true)}>\r\n <h4>{name}</h4>\r\n {description && (\r\n <i className={classes.planDescription} data-tooltip-id=\"appTooltip\" data-tooltip-content={description} data-tooltip-place=\"top\">\r\n <Icon type=\"note\" size={13} />\r\n </i>\r\n )}\r\n {isLocalStorage && <Icon type=\"lock\" size={14} />}\r\n </div>\r\n <div>{storageTypeName}</div>\r\n </div>\r\n </div>\r\n <div className={classes.rightContent}>\r\n <div className={classes.info}>\r\n <Icon type=\"backup\" size={14} /> <i>{plans.length} Plans</i>\r\n </div>\r\n <div className={classes.info}>\r\n <Icon type=\"disk\" size={14} /> <i>{formatBytes(usedSize)}</i>\r\n </div>\r\n <button\r\n className={`${classes.moreBtn} ${showSettings ? classes.moreBtnActive : ''}`}\r\n onClick={() => setShowSettings(!showSettings)}\r\n disabled={isLocalStorage}\r\n >\r\n <Icon type=\"dots-vertical\" size={14} />\r\n </button>\r\n </div>\r\n {showSettings && (\r\n <div className={classes.settings}>\r\n {!isLocalStorage && (\r\n <>\r\n <button\r\n onClick={() => {\r\n setShowEditModal(true);\r\n setShowSettings(false);\r\n }}\r\n >\r\n <Icon type=\"edit-settings\" size={14} /> Edit\r\n </button>\r\n <button\r\n onClick={() => {\r\n setShowVerifyModal(true);\r\n setShowSettings(false);\r\n verifyStorageMutation.mutate(storage.id);\r\n }}\r\n >\r\n <Icon type=\"verify\" size={14} /> Verify\r\n </button>\r\n <button\r\n onClick={() => {\r\n setShowDeleteModal(true);\r\n setShowSettings(false);\r\n }}\r\n >\r\n <Icon type=\"trash\" size={14} /> Remove\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n {showEditModal && <EditStorage close={() => setShowEditModal(false)} storage={storage} />}\r\n {showVerifyModal && (\r\n <Modal\r\n title={`Verifying Storage \"${storage.name}\"`}\r\n closeModal={() => !verifyStorageMutation.isPending && setShowVerifyModal(false)}\r\n width=\"600px\"\r\n >\r\n <div className={classes.verifyModalContent}>\r\n {verifyStorageMutation.isPending && (\r\n <>\r\n <Icon type=\"loading\" size={16} /> Verifying Remote Storage Connection...\r\n </>\r\n )}\r\n {verifyStorageMutation.isSuccess && (\r\n <>\r\n <Icon type=\"check\" color=\"teal\" size={14} /> Verification Successful! This Remote Storage Connection is Working Perfectly!\r\n </>\r\n )}\r\n {verifyStorageMutation.isError && (\r\n <>\r\n <Icon type=\"error\" color=\"indianred\" size={16} /> Error Verifying Remote Storage Connection!{' '}\r\n {verifyStorageMutation.error?.toString() || ''}\r\n </>\r\n )}\r\n </div>\r\n </Modal>\r\n )}\r\n {showDeleteModal && (\r\n <ActionModal\r\n title={`Remove Storage`}\r\n message={<>{`Are you sure you want to delete this Storage?`}</>}\r\n closeModal={() => setShowDeleteModal(false)}\r\n primaryAction={{\r\n title: `Yes, Remove Storage`,\r\n type: 'danger',\r\n icon: 'trash',\r\n isPending: deleteStorageMutation.isPending,\r\n action: () => removeStorage(),\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageItem;\r\n"],"names":["StorageItem","storage","layout","showSettings","setShowSettings","useState","showEditModal","setShowEditModal","showDeleteModal","setShowDeleteModal","showVerifyModal","setShowVerifyModal","id","name","type","plans","usedSize","storageTypeName","settings","deleteStorageMutation","useDeleteStorage","verifyStorageMutation","useVerifyStorage","isLocalStorage","description","removeStorage","error","toast","data","jsxs","classes","jsx","Icon","formatBytes","Fragment","EditStorage","Modal","_a","ActionModal"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,4CAu8C7F,CAAC;AAmBF,eAAe,IAAI,CAAC"}
|
|
@@ -203,6 +203,13 @@ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: d = "", cl
|
|
|
203
203
|
}
|
|
204
204
|
)
|
|
205
205
|
] }),
|
|
206
|
+
c === "link" && /* @__PURE__ */ a(e, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ a(
|
|
207
|
+
"path",
|
|
208
|
+
{
|
|
209
|
+
fill: l,
|
|
210
|
+
d: "M19 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h6v2H5v12h12v-6zM13 3v2h4.586l-7.793 7.793l1.414 1.414L19 6.414V11h2V3z"
|
|
211
|
+
}
|
|
212
|
+
) }),
|
|
206
213
|
c === "send" && /* @__PURE__ */ a(e, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ a(
|
|
207
214
|
"path",
|
|
208
215
|
{
|