@plutonhq/core-frontend 0.1.17 → 0.1.19

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.
@@ -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,4CAqQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
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,4CAsQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as t, jsxs as d, Fragment as B } from "react/jsx-runtime";
2
- import { useState as p, useMemo as O, useEffect as j } from "react";
3
- import { toast as R } from "react-toastify";
2
+ import { useState as p, useMemo as j, useEffect as R } from "react";
3
+ import { toast as P } from "react-toastify";
4
4
  import a from "./AddStorage.module.scss.js";
5
5
  import m from "../../common/Icon/Icon.js";
6
6
  import { useAddStorage as I, useGetAvailableStorages as L } from "../../../services/storage.js";
@@ -11,14 +11,14 @@ import { shouldDisplayStorageField as H } from "../../../utils/helpers.js";
11
11
  import J from "../StorageAuthSettings/StorageAuthSettings.js";
12
12
  import K from "../../common/form/StorageProviderSelect/StorageProviderSelect.js";
13
13
  const le = ({ close: A }) => {
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) || {};
14
+ const [g, f] = p({}), [y, w] = p(""), [r, $] = p(""), [S, E] = p(""), [T, k] = p(!1), [h, N] = p({}), [F, C] = p({}), [q, x] = p([]), O = I(), { data: b } = L(), i = (b == null ? void 0 : b.result) || {};
15
15
  console.log("storageProviders :", i);
16
- const z = O(() => Object.keys(i).map((e) => ({
16
+ const z = j(() => Object.keys(i).map((e) => ({
17
17
  label: i[e].name,
18
18
  value: e,
19
19
  doc: i[e].doc,
20
20
  image: /* @__PURE__ */ t("img", { src: `providers/${e}.png` })
21
- })).sort((e, s) => e.label.localeCompare(s.label)), [i]), c = O(() => {
21
+ })).sort((e, s) => e.label.localeCompare(s.label)), [i]), c = j(() => {
22
22
  var l, v;
23
23
  const e = ((l = i[r]) == null ? void 0 : l.settings) || [], s = { required: [], optional: [], authFields: { fields: [], types: [] } };
24
24
  e.forEach((n) => {
@@ -27,14 +27,14 @@ const le = ({ close: A }) => {
27
27
  const u = (v = i[r]) == null ? void 0 : v.authTypes, o = e.filter((n) => n.authFieldType);
28
28
  return s.authFields = { fields: o, types: u }, s;
29
29
  }, [i, r]);
30
- j(() => {
30
+ R(() => {
31
31
  if (r) {
32
32
  const e = {};
33
33
  c.required.forEach((s) => {
34
34
  e[s.value] = "";
35
35
  }), N(e);
36
36
  }
37
- }, [r, c]), j(() => {
37
+ }, [r, c]), R(() => {
38
38
  y && f((e) => {
39
39
  const s = { ...e };
40
40
  return delete s.title, s;
@@ -65,14 +65,14 @@ const le = ({ close: A }) => {
65
65
  settings: F,
66
66
  credentials: h,
67
67
  authType: S,
68
- tags: C
68
+ tags: q
69
69
  };
70
- console.log("payload :", o), q.mutate(o, {
70
+ console.log("payload :", o), O.mutate(o, {
71
71
  onError: (l) => {
72
- console.log("error :", l == null ? void 0 : l.message), R.error(l.message || "Error Adding Storage!");
72
+ console.log("error :", l == null ? void 0 : l.message), P.error(l.message || "Error Adding Storage!");
73
73
  },
74
74
  onSuccess: (l) => {
75
- console.log("Success :", l), R.success("Successfully Added Storage!", { autoClose: 5e3 }), A();
75
+ console.log("Success :", l), P.success("Successfully Added Storage!", { autoClose: 5e3 }), A();
76
76
  }
77
77
  });
78
78
  } else
@@ -92,7 +92,7 @@ const le = ({ close: A }) => {
92
92
  ] }) })
93
93
  ] }),
94
94
  children: /* @__PURE__ */ d("div", { className: a.addStorageContent, children: [
95
- q.isPending && /* @__PURE__ */ t("div", { className: a.loader, children: /* @__PURE__ */ t(m, { size: 36, type: "loading" }) }),
95
+ O.isPending && /* @__PURE__ */ t("div", { className: a.loader, children: /* @__PURE__ */ t(m, { size: 36, type: "loading" }) }),
96
96
  /* @__PURE__ */ d("div", { className: a.field, children: [
97
97
  /* @__PURE__ */ d("label", { className: a.label, children: [
98
98
  "Storage Name*",
@@ -107,7 +107,7 @@ const le = ({ close: A }) => {
107
107
  placeholder: "Give your Storage a Name",
108
108
  value: y || "",
109
109
  required: !0,
110
- onChange: (e) => P(e.target.value)
110
+ onChange: (e) => w(e.target.value)
111
111
  }
112
112
  )
113
113
  ] }),
@@ -122,7 +122,7 @@ const le = ({ close: A }) => {
122
122
  full: !0,
123
123
  onUpdate: (e) => {
124
124
  var o;
125
- N({}), E({}), w(e);
125
+ E(""), N({}), C({}), $(e);
126
126
  const u = (((o = i[e]) == null ? void 0 : o.fields) || []).reduce(
127
127
  (l, v) => ({
128
128
  ...l,
@@ -146,7 +146,7 @@ const le = ({ close: A }) => {
146
146
  onUpdate: (e) => N(e),
147
147
  errors: g,
148
148
  currentAuthType: S,
149
- onAuthTypeChange: $
149
+ onAuthTypeChange: E
150
150
  }
151
151
  ),
152
152
  Object.keys(c.optional).length > 0 && /* @__PURE__ */ d(
@@ -167,12 +167,12 @@ const le = ({ close: A }) => {
167
167
  {
168
168
  fields: c.optional,
169
169
  settings: F,
170
- onUpdate: (e) => E(e)
170
+ onUpdate: (e) => C(e)
171
171
  }
172
172
  ),
173
173
  /* @__PURE__ */ d("div", { className: a.field, children: [
174
174
  /* @__PURE__ */ t("label", { className: a.label, children: "Tags" }),
175
- /* @__PURE__ */ t(G, { fieldValue: C, onUpdate: (e) => x(e) })
175
+ /* @__PURE__ */ t(G, { fieldValue: q, onUpdate: (e) => x(e) })
176
176
  ] })
177
177
  ] })
178
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 { 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
+ {"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 setCurrentAuthType('');\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":"StorageAuthSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,mBAAmB,GAAI,oGAS1B,wBAAwB,4CA2F1B,CAAC;AACF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"StorageAuthSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAM9D,UAAU,wBAAwB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACpD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,QAAA,MAAM,mBAAmB,GAAI,oGAS1B,wBAAwB,4CA8F1B,CAAC;AACF,eAAe,mBAAmB,CAAC"}
@@ -2,68 +2,68 @@ import { jsxs as o, jsx as e, Fragment as b } from "react/jsx-runtime";
2
2
  import { useState as u, useEffect as v } from "react";
3
3
  import A from "../../common/form/Tristate/Tristate.js";
4
4
  import l from "../../common/Icon/Icon.js";
5
- import n from "../AddStorage/AddStorage.module.scss.js";
5
+ import t from "../AddStorage/AddStorage.module.scss.js";
6
6
  import k from "../StorageSettings/StorageSettings.js";
7
- const C = ({
8
- storageType: s,
7
+ const P = ({
8
+ storageType: r,
9
9
  fields: h,
10
10
  settings: p,
11
- authTypes: t,
12
- currentAuthType: i,
11
+ authTypes: n,
12
+ currentAuthType: c,
13
13
  errors: m,
14
- onUpdate: w,
15
- onAuthTypeChange: d
14
+ onUpdate: f,
15
+ onAuthTypeChange: s
16
16
  }) => {
17
- const [a, g] = u(!0), [r, f] = u(!1);
18
- return console.log("availableAuthTypes :", h, t, i), v(() => {
19
- !i && t.length > 0 && d(t[0]);
20
- }, [t, i, d]), /* @__PURE__ */ o("div", { className: n.authSettings, children: [
17
+ const [i, g] = u(!0), [d, w] = u(!1);
18
+ return console.log("availableAuthTypes :", h, n, c), v(() => {
19
+ !c && n.length > 0 && s(n[0]);
20
+ }, [n, c, s]), /* @__PURE__ */ o("div", { className: t.authSettings, children: [
21
21
  /* @__PURE__ */ o(
22
22
  "div",
23
23
  {
24
- className: `${n.advancedButton} ${a ? n.advancedButtonActive : ""}`,
25
- onClick: () => g(!a),
24
+ className: `${t.advancedButton} ${i ? t.advancedButtonActive : ""}`,
25
+ onClick: () => g(!i),
26
26
  children: [
27
27
  /* @__PURE__ */ e(l, { type: "authentication", size: 14 }),
28
- /* @__PURE__ */ e("span", { children: s === "local" ? "Local Storage Setup" : "Account Authentication" }),
29
- /* @__PURE__ */ e(l, { type: a ? "caret-up" : "caret-down" })
28
+ /* @__PURE__ */ e("span", { children: r === "local" ? "Local Storage Setup" : "Account Authentication" }),
29
+ /* @__PURE__ */ e(l, { type: i ? "caret-up" : "caret-down" })
30
30
  ]
31
31
  }
32
32
  ),
33
- a && /* @__PURE__ */ o("div", { className: n.advancedOptions, children: [
34
- a && t.length > 1 && /* @__PURE__ */ e("div", { className: n.field, children: /* @__PURE__ */ e(
33
+ i && /* @__PURE__ */ o("div", { className: t.advancedOptions, children: [
34
+ i && n.length > 1 && /* @__PURE__ */ e("div", { className: t.field, children: /* @__PURE__ */ e(
35
35
  A,
36
36
  {
37
37
  label: "Authentication Type",
38
38
  inline: !0,
39
- fieldValue: i,
39
+ fieldValue: c,
40
40
  options: [
41
- { label: "User (oAuth)", value: "oauth", disabled: t.includes("oauth") === !1 },
42
- { label: "User/Pass", value: "password", disabled: t.includes("password") === !1 },
43
- { label: "App/Client", value: "client", disabled: t.includes("client") === !1 }
41
+ { label: "User (oAuth)", value: "oauth", disabled: n.includes("oauth") === !1 },
42
+ { label: "User/Pass", value: "password", disabled: n.includes("password") === !1 },
43
+ { label: "App/Client", value: "client", disabled: n.includes("client") === !1 }
44
44
  ],
45
45
  hint: `User (oAuth): Use the generated Link to login to your account and authorize the App.
46
46
  Username/Password: Your own Username/Password will be used to backup.
47
47
  App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard`,
48
- onUpdate: (c) => d(c)
48
+ onUpdate: (a) => s(a)
49
49
  }
50
50
  ) }),
51
51
  /* @__PURE__ */ e(
52
52
  k,
53
53
  {
54
- fields: h.filter((c) => c.authFieldType === i),
54
+ fields: h.filter((a) => a.authFieldType === c),
55
55
  settings: p,
56
- onUpdate: (c) => w(c),
56
+ onUpdate: (a) => f(a),
57
57
  errors: m
58
58
  }
59
59
  ),
60
- i === "oauth" && /* @__PURE__ */ o("div", { className: n.oauthDoc, children: [
61
- /* @__PURE__ */ o("h4", { onClick: () => f(!r), children: [
60
+ c === "oauth" && /* @__PURE__ */ o("div", { className: t.oauthDoc, children: [
61
+ /* @__PURE__ */ o("h4", { onClick: () => w(!d), children: [
62
62
  /* @__PURE__ */ e(l, { type: "key", size: 14 }),
63
63
  " Acquiring the OAuth Access Token",
64
- /* @__PURE__ */ e("button", { children: /* @__PURE__ */ e(l, { type: r ? "caret-up" : "caret-down" }) })
64
+ /* @__PURE__ */ e("button", { children: /* @__PURE__ */ e(l, { type: d ? "caret-up" : "caret-down" }) })
65
65
  ] }),
66
- r && /* @__PURE__ */ o(b, { children: [
66
+ d && /* @__PURE__ */ o(b, { children: [
67
67
  /* @__PURE__ */ o("p", { children: [
68
68
  /* @__PURE__ */ e("strong", { children: "Step 1:" }),
69
69
  " On a machine with a browser,",
@@ -71,22 +71,22 @@ const C = ({
71
71
  /* @__PURE__ */ e("a", { href: "https://rclone.org/downloads/", target: "_blank", children: "install rclone" }),
72
72
  " ",
73
73
  "and execute this command in the CLI: ",
74
- /* @__PURE__ */ o("code", { className: n.codeBlock, children: [
74
+ /* @__PURE__ */ o("code", { className: t.codeBlock, children: [
75
75
  "rclone authorize ",
76
- s
76
+ r
77
77
  ] })
78
78
  ] }),
79
79
  /* @__PURE__ */ o("p", { children: [
80
80
  /* @__PURE__ */ e("strong", { children: "Step 2:" }),
81
81
  " A browser window will open where you will need to authorize Rclone to connect to your",
82
82
  " ",
83
- s,
83
+ r,
84
84
  " account. Authorize the connection."
85
85
  ] }),
86
86
  /* @__PURE__ */ o("p", { children: [
87
87
  /* @__PURE__ */ e("strong", { children: "Step 3:" }),
88
88
  " Once authorized, the cli where you ran the command, should display a message similar to this:",
89
- /* @__PURE__ */ o("code", { className: n.codeBlock, children: [
89
+ /* @__PURE__ */ o("code", { className: t.codeBlock, children: [
90
90
  "Paste the following into your remote machine --->",
91
91
  /* @__PURE__ */ e("strong", { children: '{"access_token":"....","token_type":"bearer...}' }),
92
92
  "<---End paste"
@@ -104,6 +104,10 @@ const C = ({
104
104
  " Paste the copied content in the ",
105
105
  /* @__PURE__ */ e("strong", { children: "OAuth Access Token" }),
106
106
  " field above."
107
+ ] }),
108
+ /* @__PURE__ */ o("p", { children: [
109
+ /* @__PURE__ */ e("strong", { children: "Step 5:" }),
110
+ " If you no longer need Rclone, you can safely remove it from your system."
107
111
  ] })
108
112
  ] })
109
113
  ] })
@@ -111,6 +115,6 @@ const C = ({
111
115
  ] });
112
116
  };
113
117
  export {
114
- C as default
118
+ P as default
115
119
  };
116
120
  //# sourceMappingURL=StorageAuthSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorageAuthSettings.js","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from '../AddStorage/AddStorage.module.scss';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n\r\ninterface StorageAuthSettingsProps {\r\n storageType: string;\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n authTypes: string[];\r\n errors: Record<string, string>;\r\n currentAuthType: string;\r\n onUpdate: (newSettings: StorageAuthSettingsProps['settings']) => void;\r\n onAuthTypeChange: (authType: string) => void;\r\n}\r\n\r\nconst StorageAuthSettings = ({\r\n storageType,\r\n fields,\r\n settings,\r\n authTypes,\r\n currentAuthType,\r\n errors,\r\n onUpdate,\r\n onAuthTypeChange,\r\n}: StorageAuthSettingsProps) => {\r\n const [showAdvanced, setShowAdvanced] = useState(true);\r\n const [showOAuthDoc, setShowOAuthDoc] = useState(false);\r\n\r\n console.log('availableAuthTypes :', fields, authTypes, currentAuthType);\r\n\r\n useEffect(() => {\r\n if (!currentAuthType && authTypes.length > 0) {\r\n onAuthTypeChange(authTypes[0]);\r\n }\r\n }, [authTypes, currentAuthType, onAuthTypeChange]);\r\n\r\n return (\r\n <div className={classes.authSettings}>\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'authentication'} size={14} />\r\n <span>{storageType === 'local' ? 'Local Storage Setup' : 'Account Authentication'}</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n {showAdvanced && (\r\n <div className={classes.advancedOptions}>\r\n {showAdvanced && authTypes.length > 1 && (\r\n <div className={classes.field}>\r\n <Tristate\r\n label={'Authentication Type'}\r\n inline={true}\r\n fieldValue={currentAuthType}\r\n options={[\r\n { label: 'User (oAuth)', value: 'oauth', disabled: authTypes.includes('oauth') === false },\r\n { label: 'User/Pass', value: 'password', disabled: authTypes.includes('password') === false },\r\n { label: 'App/Client', value: 'client', disabled: authTypes.includes('client') === false },\r\n ]}\r\n hint={\r\n 'User (oAuth): Use the generated Link to login to your account and authorize the App.\\n Username/Password: Your own Username/Password will be used to backup. \\n App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard'\r\n }\r\n onUpdate={(newVal: string) => onAuthTypeChange(newVal)}\r\n />\r\n </div>\r\n )}\r\n\r\n <StorageSettings\r\n fields={fields.filter((f) => f.authFieldType === currentAuthType)}\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate(newSettings)}\r\n errors={errors}\r\n />\r\n {currentAuthType === 'oauth' && (\r\n <div className={classes.oauthDoc}>\r\n <h4 onClick={() => setShowOAuthDoc(!showOAuthDoc)}>\r\n <Icon type={'key'} size={14} /> Acquiring the OAuth Access Token\r\n <button>\r\n <Icon type={showOAuthDoc ? 'caret-up' : 'caret-down'} />\r\n </button>\r\n </h4>\r\n {showOAuthDoc && (\r\n <>\r\n <p>\r\n <strong>Step 1:</strong> On a machine with a browser,{' '}\r\n <a href=\"https://rclone.org/downloads/\" target=\"_blank\">\r\n install rclone\r\n </a>{' '}\r\n and execute this command in the CLI: <code className={classes.codeBlock}>rclone authorize {storageType}</code>\r\n </p>\r\n <p>\r\n <strong>Step 2:</strong> A browser window will open where you will need to authorize Rclone to connect to your{' '}\r\n {storageType} account. Authorize the connection.\r\n </p>\r\n <p>\r\n <strong>Step 3:</strong> Once authorized, the cli where you ran the command, should display a message similar to this:\r\n <code className={classes.codeBlock}>\r\n {`Paste the following into your remote machine --->`}\r\n <strong>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</strong>\r\n {`<---End paste`}\r\n </code>\r\n Copy everything between <code>{`--->`}</code> and <code>{`<---`}</code>. Eg:{' '}\r\n <code>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</code>\r\n </p>\r\n <p>\r\n <strong>Step 4:</strong> Paste the copied content in the <strong>OAuth Access Token</strong> field above.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageAuthSettings;\r\n"],"names":["StorageAuthSettings","storageType","fields","settings","authTypes","currentAuthType","errors","onUpdate","onAuthTypeChange","showAdvanced","setShowAdvanced","useState","showOAuthDoc","setShowOAuthDoc","useEffect","jsxs","classes","jsx","Icon","Tristate","newVal","StorageSettings","f","newSettings","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"StorageAuthSettings.js","sources":["../../../../src/components/Storage/StorageAuthSettings/StorageAuthSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport classes from '../AddStorage/AddStorage.module.scss';\r\nimport StorageSettings from '../StorageSettings/StorageSettings';\r\n\r\ninterface StorageAuthSettingsProps {\r\n storageType: string;\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n authTypes: string[];\r\n errors: Record<string, string>;\r\n currentAuthType: string;\r\n onUpdate: (newSettings: StorageAuthSettingsProps['settings']) => void;\r\n onAuthTypeChange: (authType: string) => void;\r\n}\r\n\r\nconst StorageAuthSettings = ({\r\n storageType,\r\n fields,\r\n settings,\r\n authTypes,\r\n currentAuthType,\r\n errors,\r\n onUpdate,\r\n onAuthTypeChange,\r\n}: StorageAuthSettingsProps) => {\r\n const [showAdvanced, setShowAdvanced] = useState(true);\r\n const [showOAuthDoc, setShowOAuthDoc] = useState(false);\r\n\r\n console.log('availableAuthTypes :', fields, authTypes, currentAuthType);\r\n\r\n useEffect(() => {\r\n if (!currentAuthType && authTypes.length > 0) {\r\n onAuthTypeChange(authTypes[0]);\r\n }\r\n }, [authTypes, currentAuthType, onAuthTypeChange]);\r\n\r\n return (\r\n <div className={classes.authSettings}>\r\n <div\r\n className={`${classes.advancedButton} ${showAdvanced ? classes.advancedButtonActive : ''}`}\r\n onClick={() => setShowAdvanced(!showAdvanced)}\r\n >\r\n <Icon type={'authentication'} size={14} />\r\n <span>{storageType === 'local' ? 'Local Storage Setup' : 'Account Authentication'}</span>\r\n <Icon type={showAdvanced ? 'caret-up' : 'caret-down'} />\r\n </div>\r\n {showAdvanced && (\r\n <div className={classes.advancedOptions}>\r\n {showAdvanced && authTypes.length > 1 && (\r\n <div className={classes.field}>\r\n <Tristate\r\n label={'Authentication Type'}\r\n inline={true}\r\n fieldValue={currentAuthType}\r\n options={[\r\n { label: 'User (oAuth)', value: 'oauth', disabled: authTypes.includes('oauth') === false },\r\n { label: 'User/Pass', value: 'password', disabled: authTypes.includes('password') === false },\r\n { label: 'App/Client', value: 'client', disabled: authTypes.includes('client') === false },\r\n ]}\r\n hint={\r\n 'User (oAuth): Use the generated Link to login to your account and authorize the App.\\n Username/Password: Your own Username/Password will be used to backup. \\n App/Client: Provide App/Client keys that can be found in your cloud storage account dashboard'\r\n }\r\n onUpdate={(newVal: string) => onAuthTypeChange(newVal)}\r\n />\r\n </div>\r\n )}\r\n\r\n <StorageSettings\r\n fields={fields.filter((f) => f.authFieldType === currentAuthType)}\r\n settings={settings}\r\n onUpdate={(newSettings) => onUpdate(newSettings)}\r\n errors={errors}\r\n />\r\n {currentAuthType === 'oauth' && (\r\n <div className={classes.oauthDoc}>\r\n <h4 onClick={() => setShowOAuthDoc(!showOAuthDoc)}>\r\n <Icon type={'key'} size={14} /> Acquiring the OAuth Access Token\r\n <button>\r\n <Icon type={showOAuthDoc ? 'caret-up' : 'caret-down'} />\r\n </button>\r\n </h4>\r\n {showOAuthDoc && (\r\n <>\r\n <p>\r\n <strong>Step 1:</strong> On a machine with a browser,{' '}\r\n <a href=\"https://rclone.org/downloads/\" target=\"_blank\">\r\n install rclone\r\n </a>{' '}\r\n and execute this command in the CLI: <code className={classes.codeBlock}>rclone authorize {storageType}</code>\r\n </p>\r\n <p>\r\n <strong>Step 2:</strong> A browser window will open where you will need to authorize Rclone to connect to your{' '}\r\n {storageType} account. Authorize the connection.\r\n </p>\r\n <p>\r\n <strong>Step 3:</strong> Once authorized, the cli where you ran the command, should display a message similar to this:\r\n <code className={classes.codeBlock}>\r\n {`Paste the following into your remote machine --->`}\r\n <strong>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</strong>\r\n {`<---End paste`}\r\n </code>\r\n Copy everything between <code>{`--->`}</code> and <code>{`<---`}</code>. Eg:{' '}\r\n <code>{`{\"access_token\":\"....\",\"token_type\":\"bearer...}`}</code>\r\n </p>\r\n <p>\r\n <strong>Step 4:</strong> Paste the copied content in the <strong>OAuth Access Token</strong> field above.\r\n </p>\r\n <p>\r\n <strong>Step 5:</strong> If you no longer need Rclone, you can safely remove it from your system.\r\n </p>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default StorageAuthSettings;\r\n"],"names":["StorageAuthSettings","storageType","fields","settings","authTypes","currentAuthType","errors","onUpdate","onAuthTypeChange","showAdvanced","setShowAdvanced","useState","showOAuthDoc","setShowOAuthDoc","useEffect","jsxs","classes","jsx","Icon","Tristate","newVal","StorageSettings","f","newSettings","Fragment"],"mappings":"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"}
@@ -9,16 +9,16 @@ import x from "../../common/form/NumberInput/NumberInput.js";
9
9
  import f from "../../common/form/Select/Select.js";
10
10
  import { shouldDisplayStorageField as w } from "../../../utils/helpers.js";
11
11
  import I from "../../common/form/PasswordField/PasswordField.js";
12
- const L = ({ fields: m, onUpdate: o, settings: l, errors: v = {} }) => {
12
+ const L = ({ fields: i, onUpdate: o, settings: l, errors: v = {} }) => {
13
13
  const [c, p] = T({});
14
14
  return N(() => {
15
15
  const e = {};
16
- m.forEach((r) => {
16
+ i.forEach((r) => {
17
17
  r.allowCustom && r.fieldType === "select" && (e[r.value] = l[r.value] === "custom" || c[r.value] || !1);
18
18
  }), p(e);
19
- }, [m]), /* @__PURE__ */ s(b, { children: [
20
- m.map((e) => {
21
- if (!w(e, l, m))
19
+ }, [i]), /* @__PURE__ */ s(b, { children: [
20
+ i.map((e) => {
21
+ if (!w(e, l, i))
22
22
  return null;
23
23
  const r = e.description + `
24
24
  ` + (e.default ? `Default: ${e.default}` : ""), n = e.label + (e.required ? "*" : "");
@@ -34,7 +34,7 @@ const L = ({ fields: m, onUpdate: o, settings: l, errors: v = {} }) => {
34
34
  error: v[e.value] || ""
35
35
  }
36
36
  ) }, e.value);
37
- if (e.authFieldType && ["input", "string"].includes(e.fieldType))
37
+ if (e.fieldType === "password")
38
38
  return /* @__PURE__ */ u("div", { className: t.field, children: /* @__PURE__ */ u(
39
39
  I,
40
40
  {
@@ -98,7 +98,7 @@ const L = ({ fields: m, onUpdate: o, settings: l, errors: v = {} }) => {
98
98
  }
99
99
  ) }, e.value);
100
100
  if (e.fieldType === "select" && e.options) {
101
- const a = e.options.find((i) => i.value === "custom");
101
+ const a = e.options.find((m) => m.value === "custom");
102
102
  return /* @__PURE__ */ u(b, { children: /* @__PURE__ */ s("div", { className: t.field, children: [
103
103
  /* @__PURE__ */ u(
104
104
  f,
@@ -107,11 +107,11 @@ const L = ({ fields: m, onUpdate: o, settings: l, errors: v = {} }) => {
107
107
  options: e.options,
108
108
  fieldValue: c[e.value] && (a != null && a.value) ? a == null ? void 0 : a.value : l[e.value] || "",
109
109
  hint: r,
110
- onUpdate: (i) => {
110
+ onUpdate: (m) => {
111
111
  e.allowCustom && p((y) => ({
112
112
  ...y,
113
- [e.value]: i === "custom"
114
- })), o({ ...l, [e.value]: i });
113
+ [e.value]: m === "custom"
114
+ })), o({ ...l, [e.value]: m });
115
115
  },
116
116
  error: v[e.value] || "",
117
117
  inline: !0
@@ -123,7 +123,7 @@ const L = ({ fields: m, onUpdate: o, settings: l, errors: v = {} }) => {
123
123
  label: (a == null ? void 0 : a.label) || "Insert Custom",
124
124
  inline: !0,
125
125
  fieldValue: l[e.value] || "",
126
- onUpdate: (i) => o({ ...l, [e.value]: i }),
126
+ onUpdate: (m) => o({ ...l, [e.value]: m }),
127
127
  error: v[e.value] || ""
128
128
  }
129
129
  ) }, e.value)
@@ -1 +1 @@
1
- {"version":3,"file":"StorageSettings.js","sources":["../../../../src/components/Storage/StorageSettings/StorageSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport SizePicker from '../../common/form/SizePicker/SizePicker';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport classes from './StorageSettings.module.scss';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport PasswordField from '../../common/form/PasswordField/PasswordField';\r\n\r\ntype StorageSettingsProps = {\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n errors?: Record<string, string>;\r\n onUpdate: (newSettings: StorageSettingsProps['settings']) => void;\r\n};\r\n\r\nconst StorageSettings = ({ fields, onUpdate, settings, errors = {} }: StorageSettingsProps) => {\r\n const [customFieldsActive, setCustomFieldsActive] = useState<Record<string, boolean>>({});\r\n\r\n // Initialize the custom fields state when settings change\r\n useEffect(() => {\r\n const initialCustomFields: Record<string, boolean> = {};\r\n\r\n fields.forEach((field) => {\r\n if (field.allowCustom && field.fieldType === 'select') {\r\n // Check if this field previously had custom selected\r\n initialCustomFields[field.value] = settings[field.value] === 'custom' || customFieldsActive[field.value] || false;\r\n }\r\n });\r\n\r\n setCustomFieldsActive(initialCustomFields);\r\n }, [fields]);\r\n return (\r\n <>\r\n {fields.map((field) => {\r\n // Skip rendering if conditions aren't met\r\n if (!shouldDisplayStorageField(field, settings, fields)) {\r\n return null;\r\n }\r\n const hint = field.description + '\\n' + (field.default ? `Default: ${field.default}` : '');\r\n const fieldLabel = field.label + (field.required ? '*' : '');\r\n if (field.fieldType === 'bool') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Toggle\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as boolean) || false}\r\n onUpdate={(newVal: boolean) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.authFieldType && ['input', 'string'].includes(field.fieldType)) {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <PasswordField\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (['input', 'string', 'time', 'duration', 'encoding', 'bits', 'spaceseplist', 'commaseplist'].includes(field.fieldType)) {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Input\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n if (field.fieldType === 'int') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <NumberInput\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as number) || ''}\r\n hint={hint}\r\n onUpdate={(newVal) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'tristate') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Tristate\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n options={[\r\n { label: 'On', value: 'true' },\r\n { label: 'Off', value: 'false' },\r\n { label: 'Unset', value: 'unset' },\r\n ]}\r\n hint={hint}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'sizesuffix') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <SizePicker\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n hint={hint}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'select' && field.options) {\r\n const customField = field.options.find((o) => o.value === 'custom');\r\n return (\r\n <>\r\n <div key={field.value} className={classes.field}>\r\n <Select\r\n label={fieldLabel}\r\n options={field.options}\r\n fieldValue={\r\n customFieldsActive[field.value] && customField?.value ? customField?.value : (settings[field.value] as string) || ''\r\n }\r\n hint={hint}\r\n onUpdate={(newVal: string) => {\r\n if (field.allowCustom) {\r\n setCustomFieldsActive((prev) => ({\r\n ...prev,\r\n [field.value]: newVal === 'custom',\r\n }));\r\n }\r\n onUpdate({ ...settings, [field.value]: newVal });\r\n }}\r\n error={errors[field.value] || ''}\r\n inline={true}\r\n />\r\n {field.allowCustom && customFieldsActive[field.value] && (\r\n <div key={field.value} className={classes.field} style={{ margin: '20px 0' }}>\r\n <Input\r\n label={customField?.label || 'Insert Custom'}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n }\r\n return null;\r\n })}{' '}\r\n </>\r\n );\r\n};\r\nexport default StorageSettings;\r\n"],"names":["StorageSettings","fields","onUpdate","settings","errors","customFieldsActive","setCustomFieldsActive","useState","useEffect","initialCustomFields","field","jsxs","Fragment","shouldDisplayStorageField","hint","fieldLabel","jsx","classes","Toggle","newVal","PasswordField","Input","NumberInput","Tristate","SizePicker","customField","o","Select","prev"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,IAAkB,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,UAAAC,GAAU,QAAAC,IAAS,CAAA,QAA+B;AAC5F,QAAM,CAACC,GAAoBC,CAAqB,IAAIC,EAAkC,CAAA,CAAE;AAGxF,SAAAC,EAAU,MAAM;AACb,UAAMC,IAA+C,CAAA;AAErD,IAAAR,EAAO,QAAQ,CAACS,MAAU;AACvB,MAAIA,EAAM,eAAeA,EAAM,cAAc,aAE1CD,EAAoBC,EAAM,KAAK,IAAIP,EAASO,EAAM,KAAK,MAAM,YAAYL,EAAmBK,EAAM,KAAK,KAAK;AAAA,IAElH,CAAC,GAEDJ,EAAsBG,CAAmB;AAAA,EAC5C,GAAG,CAACR,CAAM,CAAC,GAER,gBAAAU,EAAAC,GAAA,EACI,UAAA;AAAA,IAAAX,EAAO,IAAI,CAACS,MAAU;AAEpB,UAAI,CAACG,EAA0BH,GAAOP,GAAUF,CAAM;AACnD,eAAO;AAEV,YAAMa,IAAOJ,EAAM,cAAc;AAAA,KAAQA,EAAM,UAAU,YAAYA,EAAM,OAAO,KAAK,KACjFK,IAAaL,EAAM,SAASA,EAAM,WAAW,MAAM;AACzD,UAAIA,EAAM,cAAc;AACrB,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACE;AAAA,UAAA;AAAA,YACE,OAAOH;AAAA,YACP,QAAQ;AAAA,YACR,MAAAD;AAAA,YACA,YAAaX,EAASO,EAAM,KAAK,KAAiB;AAAA,YAClD,UAAU,CAACS,MAAoBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,YAC9E,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,UAAA;AAAA,QAAA,EACjC,GAROA,EAAM,KAShB;AAGN,UAAIA,EAAM,iBAAiB,CAAC,SAAS,QAAQ,EAAE,SAASA,EAAM,SAAS;AACpE,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACI;AAAA,UAAA;AAAA,YACE,OAAOL;AAAA,YACP,QAAQ;AAAA,YACR,MAAAD;AAAA,YACA,YAAaX,EAASO,EAAM,KAAK,KAAgB;AAAA,YACjD,UAAU,CAACS,MAAmBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,YAC7E,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,UAAA;AAAA,QAAA,EACjC,GAROA,EAAM,KAShB;AAGN,UAAI,CAAC,SAAS,UAAU,QAAQ,YAAY,YAAY,QAAQ,gBAAgB,cAAc,EAAE,SAASA,EAAM,SAAS;AACrH,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACK;AAAA,UAAA;AAAA,YACE,OAAON;AAAA,YACP,QAAQ;AAAA,YACR,MAAAD;AAAA,YACA,YAAaX,EAASO,EAAM,KAAK,KAAgB;AAAA,YACjD,UAAU,CAACS,MAAmBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,YAC7E,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,UAAA;AAAA,QAAA,EACjC,GAROA,EAAM,KAShB;AAIN,UAAIA,EAAM,cAAc;AACrB,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACM;AAAA,UAAA;AAAA,YACE,OAAOP;AAAA,YACP,QAAQ;AAAA,YACR,YAAaZ,EAASO,EAAM,KAAK,KAAgB;AAAA,YACjD,MAAAI;AAAA,YACA,UAAU,CAACK,MAAWjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,YACrE,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,UAAA;AAAA,QAAA,EACjC,GAROA,EAAM,KAShB;AAGN,UAAIA,EAAM,cAAc;AACrB,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACO;AAAA,UAAA;AAAA,YACE,OAAOR;AAAA,YACP,QAAQ;AAAA,YACR,YAAaZ,EAASO,EAAM,KAAK,KAAgB;AAAA,YACjD,SAAS;AAAA,cACN,EAAE,OAAO,MAAM,OAAO,OAAA;AAAA,cACtB,EAAE,OAAO,OAAO,OAAO,QAAA;AAAA,cACvB,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,YAAQ;AAAA,YAEpC,MAAAI;AAAA,YACA,UAAU,CAACK,MAAmBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,EAAA,CAAQ;AAAA,UAAA;AAAA,QAAA,EAChF,GAZOT,EAAM,KAahB;AAGN,UAAIA,EAAM,cAAc;AACrB,eACG,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OACvC,UAAA,gBAAAD;AAAA,UAACQ;AAAA,UAAA;AAAA,YACE,OAAOT;AAAA,YACP,QAAQ;AAAA,YACR,YAAaZ,EAASO,EAAM,KAAK,KAAgB;AAAA,YACjD,MAAAI;AAAA,YACA,UAAU,CAACK,MAAmBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,EAAA,CAAQ;AAAA,UAAA;AAAA,QAAA,EAChF,GAPOT,EAAM,KAQhB;AAGN,UAAIA,EAAM,cAAc,YAAYA,EAAM,SAAS;AAChD,cAAMe,IAAcf,EAAM,QAAQ,KAAK,CAACgB,MAAMA,EAAE,UAAU,QAAQ;AAClE,eACG,gBAAAV,EAAAJ,GAAA,EACG,UAAA,gBAAAD,EAAC,OAAA,EAAsB,WAAWM,EAAQ,OACvC,UAAA;AAAA,UAAA,gBAAAD;AAAA,YAACW;AAAA,YAAA;AAAA,cACE,OAAOZ;AAAA,cACP,SAASL,EAAM;AAAA,cACf,YACGL,EAAmBK,EAAM,KAAK,MAAKe,KAAA,QAAAA,EAAa,SAAQA,KAAA,gBAAAA,EAAa,QAAStB,EAASO,EAAM,KAAK,KAAgB;AAAA,cAErH,MAAAI;AAAA,cACA,UAAU,CAACK,MAAmB;AAC3B,gBAAIT,EAAM,eACPJ,EAAsB,CAACsB,OAAU;AAAA,kBAC9B,GAAGA;AAAA,kBACH,CAAClB,EAAM,KAAK,GAAGS,MAAW;AAAA,gBAAA,EAC3B,GAELjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,cAClD;AAAA,cACA,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,cAC9B,QAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,UAEVA,EAAM,eAAeL,EAAmBK,EAAM,KAAK,KACjD,gBAAAM,EAAC,OAAA,EAAsB,WAAWC,EAAQ,OAAO,OAAO,EAAE,QAAQ,YAC/D,UAAA,gBAAAD;AAAA,YAACK;AAAA,YAAA;AAAA,cACE,QAAOI,KAAA,gBAAAA,EAAa,UAAS;AAAA,cAC7B,QAAQ;AAAA,cACR,YAAatB,EAASO,EAAM,KAAK,KAAgB;AAAA,cACjD,UAAU,CAACS,MAAmBjB,EAAS,EAAE,GAAGC,GAAU,CAACO,EAAM,KAAK,GAAGS,GAAQ;AAAA,cAC7E,OAAOf,EAAOM,EAAM,KAAK,KAAK;AAAA,YAAA;AAAA,UAAA,EACjC,GAPOA,EAAM,KAQhB;AAAA,QAAA,KA7BIA,EAAM,KA+BhB,GACH;AAAA,MAEN;AACA,aAAO;AAAA,IACV,CAAC;AAAA,IAAG;AAAA,EAAA,GACP;AAEN;"}
1
+ {"version":3,"file":"StorageSettings.js","sources":["../../../../src/components/Storage/StorageSettings/StorageSettings.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport SizePicker from '../../common/form/SizePicker/SizePicker';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport { storageOptionField } from '../../../@types/storages';\r\nimport classes from './StorageSettings.module.scss';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { shouldDisplayStorageField } from '../../../utils/helpers';\r\nimport PasswordField from '../../common/form/PasswordField/PasswordField';\r\n\r\ntype StorageSettingsProps = {\r\n fields: storageOptionField[];\r\n settings: Record<string, string | number | boolean>;\r\n errors?: Record<string, string>;\r\n onUpdate: (newSettings: StorageSettingsProps['settings']) => void;\r\n};\r\n\r\nconst StorageSettings = ({ fields, onUpdate, settings, errors = {} }: StorageSettingsProps) => {\r\n const [customFieldsActive, setCustomFieldsActive] = useState<Record<string, boolean>>({});\r\n\r\n // Initialize the custom fields state when settings change\r\n useEffect(() => {\r\n const initialCustomFields: Record<string, boolean> = {};\r\n\r\n fields.forEach((field) => {\r\n if (field.allowCustom && field.fieldType === 'select') {\r\n // Check if this field previously had custom selected\r\n initialCustomFields[field.value] = settings[field.value] === 'custom' || customFieldsActive[field.value] || false;\r\n }\r\n });\r\n\r\n setCustomFieldsActive(initialCustomFields);\r\n }, [fields]);\r\n return (\r\n <>\r\n {fields.map((field) => {\r\n // Skip rendering if conditions aren't met\r\n if (!shouldDisplayStorageField(field, settings, fields)) {\r\n return null;\r\n }\r\n const hint = field.description + '\\n' + (field.default ? `Default: ${field.default}` : '');\r\n const fieldLabel = field.label + (field.required ? '*' : '');\r\n if (field.fieldType === 'bool') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Toggle\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as boolean) || false}\r\n onUpdate={(newVal: boolean) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'password') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <PasswordField\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (['input', 'string', 'time', 'duration', 'encoding', 'bits', 'spaceseplist', 'commaseplist'].includes(field.fieldType)) {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Input\r\n label={fieldLabel}\r\n inline={true}\r\n hint={hint}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n if (field.fieldType === 'int') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <NumberInput\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as number) || ''}\r\n hint={hint}\r\n onUpdate={(newVal) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'tristate') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <Tristate\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n options={[\r\n { label: 'On', value: 'true' },\r\n { label: 'Off', value: 'false' },\r\n { label: 'Unset', value: 'unset' },\r\n ]}\r\n hint={hint}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'sizesuffix') {\r\n return (\r\n <div key={field.value} className={classes.field}>\r\n <SizePicker\r\n label={fieldLabel}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n hint={hint}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n />\r\n </div>\r\n );\r\n }\r\n if (field.fieldType === 'select' && field.options) {\r\n const customField = field.options.find((o) => o.value === 'custom');\r\n return (\r\n <>\r\n <div key={field.value} className={classes.field}>\r\n <Select\r\n label={fieldLabel}\r\n options={field.options}\r\n fieldValue={\r\n customFieldsActive[field.value] && customField?.value ? customField?.value : (settings[field.value] as string) || ''\r\n }\r\n hint={hint}\r\n onUpdate={(newVal: string) => {\r\n if (field.allowCustom) {\r\n setCustomFieldsActive((prev) => ({\r\n ...prev,\r\n [field.value]: newVal === 'custom',\r\n }));\r\n }\r\n onUpdate({ ...settings, [field.value]: newVal });\r\n }}\r\n error={errors[field.value] || ''}\r\n inline={true}\r\n />\r\n {field.allowCustom && customFieldsActive[field.value] && (\r\n <div key={field.value} className={classes.field} style={{ margin: '20px 0' }}>\r\n <Input\r\n label={customField?.label || 'Insert Custom'}\r\n inline={true}\r\n fieldValue={(settings[field.value] as string) || ''}\r\n onUpdate={(newVal: string) => onUpdate({ ...settings, [field.value]: newVal })}\r\n error={errors[field.value] || ''}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n );\r\n }\r\n return null;\r\n })}{' '}\r\n </>\r\n );\r\n};\r\nexport default StorageSettings;\r\n"],"names":["StorageSettings","fields","onUpdate","settings","errors","customFieldsActive","setCustomFieldsActive","useState","useEffect","initialCustomFields","field","jsxs","Fragment","shouldDisplayStorageField","hint","fieldLabel","jsx","classes","Toggle","newVal","PasswordField","Input","NumberInput","Tristate","SizePicker","customField","o","Select","prev"],"mappings":"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"}
@@ -6,6 +6,5 @@ export * from './helpers';
6
6
  export * from './plans';
7
7
  export * from './progressHelpers';
8
8
  export * from './restore';
9
- export * from './storageProviders';
10
9
  export * from './getIconNameforFile';
11
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC"}