@plutonhq/core-frontend 0.1.14 → 0.1.17

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.
Files changed (77) hide show
  1. package/dist-lib/components/App/Footer/Footer.d.ts +2 -1
  2. package/dist-lib/components/App/Footer/Footer.d.ts.map +1 -1
  3. package/dist-lib/components/App/Footer/Footer.js +29 -18
  4. package/dist-lib/components/App/Footer/Footer.js.map +1 -1
  5. package/dist-lib/components/Plan/PlanForm/PlanForm.js +74 -74
  6. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  7. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts +16 -0
  8. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts.map +1 -0
  9. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js +115 -0
  10. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js.map +1 -0
  11. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js +26 -0
  12. package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js.map +1 -0
  13. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts +2 -2
  14. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts.map +1 -1
  15. package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.js.map +1 -1
  16. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts +1 -1
  17. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts.map +1 -1
  18. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +55 -27
  19. package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
  20. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts +7 -0
  21. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts.map +1 -0
  22. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js +79 -0
  23. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js.map +1 -0
  24. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js +24 -0
  25. package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js.map +1 -0
  26. package/dist-lib/components/index.d.ts +2 -0
  27. package/dist-lib/components/index.d.ts.map +1 -1
  28. package/dist-lib/components.js +73 -69
  29. package/dist-lib/components.js.map +1 -1
  30. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js +68 -0
  31. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js.map +1 -0
  32. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js +7 -0
  33. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js.map +1 -0
  34. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js +55 -0
  35. package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -0
  36. package/dist-lib/node_modules/.pnpm/@tanstack_query-persist-client-core@5.96.0/node_modules/@tanstack/query-persist-client-core/build/modern/createPersister.js +190 -0
  37. package/dist-lib/node_modules/.pnpm/@tanstack_query-persist-client-core@5.96.0/node_modules/@tanstack/query-persist-client-core/build/modern/createPersister.js.map +1 -0
  38. package/dist-lib/router.d.ts.map +1 -1
  39. package/dist-lib/router.js +42 -39
  40. package/dist-lib/router.js.map +1 -1
  41. package/dist-lib/routes/PlanSingle/PlanSingle.d.ts.map +1 -1
  42. package/dist-lib/routes/PlanSingle/PlanSingle.js +123 -98
  43. package/dist-lib/routes/PlanSingle/PlanSingle.js.map +1 -1
  44. package/dist-lib/services/plans.d.ts +6 -0
  45. package/dist-lib/services/plans.d.ts.map +1 -1
  46. package/dist-lib/services/plans.js +151 -127
  47. package/dist-lib/services/plans.js.map +1 -1
  48. package/dist-lib/services/settings.d.ts +18 -0
  49. package/dist-lib/services/settings.d.ts.map +1 -1
  50. package/dist-lib/services/settings.js +182 -72
  51. package/dist-lib/services/settings.js.map +1 -1
  52. package/dist-lib/services/users.d.ts +1 -1
  53. package/dist-lib/services/users.d.ts.map +1 -1
  54. package/dist-lib/services/users.js.map +1 -1
  55. package/dist-lib/services.js +98 -88
  56. package/dist-lib/styles/core-frontend.css +1 -1
  57. package/dist-lib/utils/helpers.d.ts +1 -0
  58. package/dist-lib/utils/helpers.d.ts.map +1 -1
  59. package/dist-lib/utils/helpers.js +74 -70
  60. package/dist-lib/utils/helpers.js.map +1 -1
  61. package/dist-lib/utils.js +28 -27
  62. package/package.json +5 -4
  63. package/src/components/App/Footer/Footer.tsx +17 -2
  64. package/src/components/Plan/PlanForm/PlanForm.tsx +14 -14
  65. package/src/components/Plan/PlanIntegrity/PlanIntegrity.module.scss +110 -0
  66. package/src/components/Plan/PlanIntegrity/PlanIntegrity.tsx +187 -0
  67. package/src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx +2 -2
  68. package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +37 -1
  69. package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss +62 -0
  70. package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.tsx +102 -0
  71. package/src/components/index.ts +2 -0
  72. package/src/router.tsx +6 -1
  73. package/src/routes/PlanSingle/PlanSingle.tsx +21 -0
  74. package/src/services/plans.ts +30 -0
  75. package/src/services/settings.ts +126 -0
  76. package/src/services/users.ts +1 -1
  77. package/src/utils/helpers.ts +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanIntegrity.js","sources":["../../../../src/components/Plan/PlanIntegrity/PlanIntegrity.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport classes from './PlanIntegrity.module.scss';\r\nimport { useCheckPlanIntegrity } from '../../../services';\r\nimport { Plan, PlanReplicationStorage, PlanVerifiedResult } from '../../../@types';\r\nimport { formatDateTime, timeAgo } from '../../../utils';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\n\r\ninterface PlanIntegrityProps {\r\n planId: string;\r\n taskPending: boolean;\r\n verificationData: Plan['verified'];\r\n storage: { name: string; type: string; id: string };\r\n replicationStorages: PlanReplicationStorage[];\r\n onClose: () => void;\r\n}\r\n\r\nconst PlanIntegrity = ({ planId, taskPending, verificationData, storage, replicationStorages = [], onClose }: PlanIntegrityProps) => {\r\n const [showContent, setShowContent] = useState('primary');\r\n const integrityCheckMutation = useCheckPlanIntegrity();\r\n\r\n const integrityResultLoaded = verificationData && verificationData?.result;\r\n const hasReplications = replicationStorages && replicationStorages.length > 0;\r\n\r\n const getBackupResultByStorage = (storageType: string): PlanVerifiedResult | null => {\r\n if (!verificationData?.result) return null;\r\n\r\n const replicationResult = verificationData.result as Record<string, PlanVerifiedResult>;\r\n return replicationResult[storageType] ?? null;\r\n };\r\n\r\n const renderLogs = (storageType: string) => {\r\n if (integrityCheckMutation.isPending) return null;\r\n const backupResData = getBackupResultByStorage(storageType);\r\n const messages = backupResData?.logs;\r\n if (!messages?.length) return null;\r\n\r\n return (\r\n <div className={classes.integrityLogs}>\r\n <div className={classes.integrityLogsHeader}>\r\n <div>Integrity Check Output Logs</div>\r\n <div title={formatDateTime(verificationData.endedAt || verificationData.startedAt)}>\r\n <Icon type=\"clock\" size={14} /> {timeAgo(new Date(verificationData.endedAt || verificationData.startedAt))}\r\n </div>\r\n </div>\r\n <div className={classes.integrityLogMessages}>\r\n {messages.map((message, index) => (\r\n <span key={index}>{message}</span>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const renderBackupFixSuggestion = (storageType: string) => {\r\n if (!integrityResultLoaded) return null;\r\n if (integrityCheckMutation.isPending) return null;\r\n const backupResData = getBackupResultByStorage(storageType);\r\n if (!backupResData?.hasError) return null;\r\n\r\n return (\r\n <div className={classes.fixSuggestion}>\r\n <h4>Fix Suggestion</h4>\r\n <div className={classes.fixSuggestionContent}>\r\n {backupResData.fix &&\r\n backupResData.fix\r\n .split('\\n')\r\n .map((line, index) => <p key={index}>{line.includes('`') ? <code>{line.replace(/`/g, '')}</code> : line}</p>)}\r\n {!backupResData.fix && <p>No Suggestion for this issue.</p>}\r\n <p>\r\n Learn more about fixing restic repo issues{' '}\r\n <a\r\n href=\"https://restic.readthedocs.io/en/latest/077_troubleshooting.html#find-out-what-is-damaged\"\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n here.\r\n </a>\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const renderBackupStatus = (storageType: string) => {\r\n if (!integrityResultLoaded) return null;\r\n if (integrityCheckMutation.isPending) return null;\r\n const backupResData = getBackupResultByStorage(storageType);\r\n const backupHasError = backupResData?.hasError;\r\n const backupMessage = backupResData?.message;\r\n\r\n if (!backupHasError && backupMessage?.includes('No Issue Detected')) {\r\n return <div className=\"label success\">🥳 Yoohoo! No Corruption or Bit rot found. Your backup snapshots are completely restorable.</div>;\r\n }\r\n\r\n return <div className=\"label error\">⛔ Error Found. {backupMessage}</div>;\r\n };\r\n\r\n const renderResultWithReplications = () => {\r\n return (\r\n <div className={`${classes.integrityResult} ${classes.withReplications}`}>\r\n {verificationData &&\r\n Object.entries(verificationData.result as Record<string, PlanVerifiedResult>).map(([storageType]) => {\r\n let theStorage = storage;\r\n if (storageType !== 'primary') {\r\n const mirror = replicationStorages.find((s) => s.storageId === storageType.replace('mirror_', ''));\r\n if (mirror) {\r\n theStorage = { name: mirror.storageName as string, type: mirror?.storageType as string, id: mirror?.storageId as string };\r\n }\r\n }\r\n if (!theStorage) return null;\r\n const backupResData = getBackupResultByStorage(storageType);\r\n const backupHasError = backupResData?.hasError;\r\n return (\r\n <div key={storageType} className={classes.replicationResult}>\r\n <h4 onClick={() => setShowContent(storageType)} className={showContent === storageType ? classes.active : ''}>\r\n <span>\r\n <img src={`/providers/${theStorage.type}.png`} />\r\n {theStorage.name} <i>{storageType === 'primary' ? 'Primary' : `Mirror`}</i>\r\n </span>\r\n <span>\r\n {backupHasError ? (\r\n <Icon type=\"error-circle-filled\" size={14} color=\"#ff4d4f\" />\r\n ) : (\r\n <Icon type=\"check-circle-filled\" size={14} color=\"#06ba9f\" />\r\n )}\r\n </span>\r\n </h4>\r\n {showContent === storageType && (\r\n <div className={classes.replicationResultContent}>\r\n {renderBackupStatus(storageType)}\r\n {renderLogs(storageType)}\r\n {renderBackupFixSuggestion(storageType)}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <ActionModal\r\n title=\"Check Backup Integrity\"\r\n message={\r\n <div className={classes.integrityMessage}>\r\n {!integrityResultLoaded && <p>Check the integrity of the backup snapshots now to check if they are restorable?</p>}\r\n {integrityResultLoaded && (\r\n <div>\r\n {!hasReplications ? (\r\n <div className={classes.integrityResult}>\r\n {renderBackupStatus('primary')}\r\n {renderLogs('primary')}\r\n {renderBackupFixSuggestion('primary')}\r\n </div>\r\n ) : (\r\n renderResultWithReplications()\r\n )}\r\n </div>\r\n )}\r\n {integrityCheckMutation.isPending && (\r\n <div className=\"label in_progress\">\r\n <Icon type=\"loading\" size={14} />\r\n Checking integrity...\r\n </div>\r\n )}\r\n </div>\r\n }\r\n errorMessage={integrityCheckMutation.error?.message}\r\n closeModal={() => onClose()}\r\n width=\"600px\"\r\n primaryAction={{\r\n title: integrityResultLoaded ? 'Check Again' : 'Check Now',\r\n type: 'default',\r\n isPending: integrityCheckMutation.isPending,\r\n action: () => !taskPending && integrityCheckMutation.mutate({ planId }),\r\n }}\r\n secondaryAction={{\r\n title: 'Close',\r\n action: () => onClose(),\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default PlanIntegrity;\r\n"],"names":["PlanIntegrity","planId","taskPending","verificationData","storage","replicationStorages","onClose","showContent","setShowContent","useState","integrityCheckMutation","useCheckPlanIntegrity","integrityResultLoaded","hasReplications","getBackupResultByStorage","storageType","renderLogs","backupResData","messages","jsxs","classes","jsx","formatDateTime","Icon","timeAgo","message","index","renderBackupFixSuggestion","line","renderBackupStatus","backupHasError","backupMessage","renderResultWithReplications","theStorage","mirror","s","ActionModal","_a"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ const t = "_integrityMessage_caT6I", e = "_fixSuggestion_Px9zO", i = "_fixSuggestionContent_CuKfL", s = "_integrityLogs_HZjHu", n = "_integrityLogsHeader_vyTxM", g = "_integrityLogMessages_MfLTN", o = "_integrityResult_yCU6S", r = "_withReplications_fHXSy", c = "_replicationResult_ROcyJ", a = "_replicationResultContent_W1PZ5", l = {
2
+ integrityMessage: t,
3
+ fixSuggestion: e,
4
+ fixSuggestionContent: i,
5
+ integrityLogs: s,
6
+ integrityLogsHeader: n,
7
+ integrityLogMessages: g,
8
+ integrityResult: o,
9
+ withReplications: r,
10
+ replicationResult: c,
11
+ replicationResultContent: a
12
+ };
13
+ export {
14
+ l as default,
15
+ e as fixSuggestion,
16
+ i as fixSuggestionContent,
17
+ g as integrityLogMessages,
18
+ s as integrityLogs,
19
+ n as integrityLogsHeader,
20
+ t as integrityMessage,
21
+ o as integrityResult,
22
+ c as replicationResult,
23
+ a as replicationResultContent,
24
+ r as withReplications
25
+ };
26
+ //# sourceMappingURL=PlanIntegrity.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanIntegrity.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
- interface PlanPendingBackup {
1
+ interface PlanPendingBackupProps {
2
2
  planId: string;
3
3
  type?: 'backup' | 'restore';
4
4
  onPendingDetect: () => void;
5
5
  }
6
- declare const PlanPendingBackup: ({ planId, type, onPendingDetect }: PlanPendingBackup) => import("react/jsx-runtime").JSX.Element;
6
+ declare const PlanPendingBackup: ({ planId, type, onPendingDetect }: PlanPendingBackupProps) => import("react/jsx-runtime").JSX.Element;
7
7
  export default PlanPendingBackup;
8
8
  //# sourceMappingURL=PlanPendingBackup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPendingBackup.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,iBAAiB,GAAI,mCAA8C,iBAAiB,4CAkDzF,CAAC;AACF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PlanPendingBackup.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx"],"names":[],"mappings":"AAMA,UAAU,sBAAsB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,QAAA,MAAM,iBAAiB,GAAI,mCAA8C,sBAAsB,4CAkD9F,CAAC;AACF,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanPendingBackup.js","sources":["../../../../src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\nimport { useSearchParams } from 'react-router';\r\nimport { useCheckActiveBackupsOrRestore } from '../../../services/plans';\r\nimport classes from './PlanPendingBackup.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\n\r\ninterface PlanPendingBackup {\r\n planId: string;\r\n type?: 'backup' | 'restore';\r\n onPendingDetect: () => void;\r\n}\r\n\r\nconst PlanPendingBackup = ({ planId, type = 'backup', onPendingDetect }: PlanPendingBackup) => {\r\n const [, setSearchParams] = useSearchParams();\r\n const checkActivesMutation = useCheckActiveBackupsOrRestore();\r\n\r\n useEffect(() => {\r\n const interval = window.setInterval(() => {\r\n checkActivesMutation.mutate(\r\n { planId, type },\r\n {\r\n onSuccess: (data) => {\r\n console.log('[isBackupPending] data :', data);\r\n if (data.result) {\r\n window.clearInterval(interval);\r\n setSearchParams((params) => {\r\n if (type === 'restore') {\r\n params.delete('pendingrestore');\r\n } else {\r\n params.delete('pendingbackup');\r\n }\r\n\r\n return params;\r\n });\r\n onPendingDetect();\r\n }\r\n },\r\n },\r\n );\r\n }, 1000);\r\n\r\n return () => window.clearInterval(interval);\r\n }, [planId, type]);\r\n\r\n return (\r\n <div className={classes.backup}>\r\n <div className={classes.backupIcon}>\r\n <Icon type=\"loading\" size={24} />\r\n </div>\r\n <div className={classes.backupLeft}>\r\n <div className={classes.backupId}>Starting {type}...</div>\r\n <div className={classes.backupStart}>\r\n <div>\r\n <Icon type=\"clock\" size={12} /> Starting in a few seconds\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.backupRight}>\r\n <span className={`skeleton-box ${classes.progressSkeleton}`} />\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default PlanPendingBackup;\r\n"],"names":["PlanPendingBackup","planId","type","onPendingDetect","setSearchParams","useSearchParams","checkActivesMutation","useCheckActiveBackupsOrRestore","useEffect","interval","data","params","jsxs","classes","jsx","Icon"],"mappings":";;;;;;AAYA,MAAMA,IAAoB,CAAC,EAAE,QAAAC,GAAQ,MAAAC,IAAO,UAAU,iBAAAC,QAAyC;AAC5F,QAAM,CAAA,EAAGC,CAAe,IAAIC,EAAA,GACtBC,IAAuBC,EAAA;AAE7B,SAAAC,EAAU,MAAM;AACb,UAAMC,IAAW,OAAO,YAAY,MAAM;AACvC,MAAAH,EAAqB;AAAA,QAClB,EAAE,QAAAL,GAAQ,MAAAC,EAAA;AAAA,QACV;AAAA,UACG,WAAW,CAACQ,MAAS;AAClB,oBAAQ,IAAI,4BAA4BA,CAAI,GACxCA,EAAK,WACN,OAAO,cAAcD,CAAQ,GAC7BL,EAAgB,CAACO,OACVT,MAAS,YACVS,EAAO,OAAO,gBAAgB,IAE9BA,EAAO,OAAO,eAAe,GAGzBA,EACT,GACDR,EAAA;AAAA,UAEN;AAAA,QAAA;AAAA,MACH;AAAA,IAEN,GAAG,GAAI;AAEP,WAAO,MAAM,OAAO,cAAcM,CAAQ;AAAA,EAC7C,GAAG,CAACR,GAAQC,CAAI,CAAC,GAGd,gBAAAU,EAAC,OAAA,EAAI,WAAWC,EAAQ,QACrB,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAQ,YACrB,UAAA,gBAAAC,EAACC,KAAK,MAAK,WAAU,MAAM,GAAA,CAAI,EAAA,CAClC;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,YACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,UAAU,UAAA;AAAA,QAAA;AAAA,QAAUX;AAAA,QAAK;AAAA,MAAA,GAAG;AAAA,wBACnD,OAAA,EAAI,WAAWW,EAAQ,aACrB,4BAAC,OAAA,EACE,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,QAAE;AAAA,MAAA,EAAA,CAClC,EAAA,CACH;AAAA,IAAA,GACH;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAWD,EAAQ,aACrB,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAW,gBAAgBD,EAAQ,gBAAgB,GAAA,CAAI,EAAA,CAChE;AAAA,EAAA,GACH;AAEN;"}
1
+ {"version":3,"file":"PlanPendingBackup.js","sources":["../../../../src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\nimport { useSearchParams } from 'react-router';\r\nimport { useCheckActiveBackupsOrRestore } from '../../../services/plans';\r\nimport classes from './PlanPendingBackup.module.scss';\r\nimport Icon from '../../common/Icon/Icon';\r\n\r\ninterface PlanPendingBackupProps {\r\n planId: string;\r\n type?: 'backup' | 'restore';\r\n onPendingDetect: () => void;\r\n}\r\n\r\nconst PlanPendingBackup = ({ planId, type = 'backup', onPendingDetect }: PlanPendingBackupProps) => {\r\n const [, setSearchParams] = useSearchParams();\r\n const checkActivesMutation = useCheckActiveBackupsOrRestore();\r\n\r\n useEffect(() => {\r\n const interval = window.setInterval(() => {\r\n checkActivesMutation.mutate(\r\n { planId, type },\r\n {\r\n onSuccess: (data) => {\r\n console.log('[isBackupPending] data :', data);\r\n if (data.result) {\r\n window.clearInterval(interval);\r\n setSearchParams((params) => {\r\n if (type === 'restore') {\r\n params.delete('pendingrestore');\r\n } else {\r\n params.delete('pendingbackup');\r\n }\r\n\r\n return params;\r\n });\r\n onPendingDetect();\r\n }\r\n },\r\n },\r\n );\r\n }, 1000);\r\n\r\n return () => window.clearInterval(interval);\r\n }, [planId, type]);\r\n\r\n return (\r\n <div className={classes.backup}>\r\n <div className={classes.backupIcon}>\r\n <Icon type=\"loading\" size={24} />\r\n </div>\r\n <div className={classes.backupLeft}>\r\n <div className={classes.backupId}>Starting {type}...</div>\r\n <div className={classes.backupStart}>\r\n <div>\r\n <Icon type=\"clock\" size={12} /> Starting in a few seconds\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.backupRight}>\r\n <span className={`skeleton-box ${classes.progressSkeleton}`} />\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default PlanPendingBackup;\r\n"],"names":["PlanPendingBackup","planId","type","onPendingDetect","setSearchParams","useSearchParams","checkActivesMutation","useCheckActiveBackupsOrRestore","useEffect","interval","data","params","jsxs","classes","jsx","Icon"],"mappings":";;;;;;AAYA,MAAMA,IAAoB,CAAC,EAAE,QAAAC,GAAQ,MAAAC,IAAO,UAAU,iBAAAC,QAA8C;AACjG,QAAM,CAAA,EAAGC,CAAe,IAAIC,EAAA,GACtBC,IAAuBC,EAAA;AAE7B,SAAAC,EAAU,MAAM;AACb,UAAMC,IAAW,OAAO,YAAY,MAAM;AACvC,MAAAH,EAAqB;AAAA,QAClB,EAAE,QAAAL,GAAQ,MAAAC,EAAA;AAAA,QACV;AAAA,UACG,WAAW,CAACQ,MAAS;AAClB,oBAAQ,IAAI,4BAA4BA,CAAI,GACxCA,EAAK,WACN,OAAO,cAAcD,CAAQ,GAC7BL,EAAgB,CAACO,OACVT,MAAS,YACVS,EAAO,OAAO,gBAAgB,IAE9BA,EAAO,OAAO,eAAe,GAGzBA,EACT,GACDR,EAAA;AAAA,UAEN;AAAA,QAAA;AAAA,MACH;AAAA,IAEN,GAAG,GAAI;AAEP,WAAO,MAAM,OAAO,cAAcM,CAAQ;AAAA,EAC7C,GAAG,CAACR,GAAQC,CAAI,CAAC,GAGd,gBAAAU,EAAC,OAAA,EAAI,WAAWC,EAAQ,QACrB,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAQ,YACrB,UAAA,gBAAAC,EAACC,KAAK,MAAK,WAAU,MAAM,GAAA,CAAI,EAAA,CAClC;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,YACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,UAAU,UAAA;AAAA,QAAA;AAAA,QAAUX;AAAA,QAAK;AAAA,MAAA,GAAG;AAAA,wBACnD,OAAA,EAAI,WAAWW,EAAQ,aACrB,4BAAC,OAAA,EACE,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,QAAE;AAAA,MAAA,EAAA,CAClC,EAAA,CACH;AAAA,IAAA,GACH;AAAA,IACA,gBAAAD,EAAC,OAAA,EAAI,WAAWD,EAAQ,aACrB,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAW,gBAAgBD,EAAQ,gBAAgB,GAAA,CAAI,EAAA,CAChE;AAAA,EAAA,GACH;AAEN;"}
@@ -3,6 +3,6 @@ interface GeneralSettingsProps {
3
3
  settings: Record<string, any>;
4
4
  onUpdate: (settings: Record<string, any>) => void;
5
5
  }
6
- declare const GeneralSettings: ({ settings, onUpdate }: GeneralSettingsProps) => import("react/jsx-runtime").JSX.Element;
6
+ declare const GeneralSettings: ({ settings, settingsID, onUpdate }: GeneralSettingsProps) => import("react/jsx-runtime").JSX.Element;
7
7
  export default GeneralSettings;
8
8
  //# sourceMappingURL=GeneralSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"names":[],"mappings":"AAKA,UAAU,oBAAoB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,QAAA,MAAM,eAAe,GAAI,wBAAwB,oBAAoB,4CAmDpE,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"GeneralSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACpD;AAED,QAAA,MAAM,eAAe,GAAI,oCAAoC,oBAAoB,4CAmFhF,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,59 +1,87 @@
1
- import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
- import { useTheme as n } from "../../../context/ThemeContext.js";
3
- import m from "../../common/form/Input/Input.js";
4
- import f from "../../common/form/Tristate/Tristate.js";
5
- import d from "./GeneralSettings.module.scss.js";
6
- const t = ({ settings: l, onUpdate: i }) => {
7
- const { setTheme: o } = n(), r = (e) => {
8
- o(e), i({ ...l, theme: e });
1
+ import { jsxs as F, jsx as a } from "react/jsx-runtime";
2
+ import { useState as d } from "react";
3
+ import S from "../../common/ActionModal/ActionModal.js";
4
+ import t from "../../common/form/Input/Input.js";
5
+ import v from "../../common/form/Toggle/Toggle.js";
6
+ import w from "../../common/form/Tristate/Tristate.js";
7
+ import T from "../TwoFactorSetup/TwoFactorSetup.js";
8
+ import { useTheme as y } from "../../../context/ThemeContext.js";
9
+ import i from "./GeneralSettings.module.scss.js";
10
+ const L = ({ settings: e, settingsID: u, onUpdate: o }) => {
11
+ var c;
12
+ const { setTheme: f } = y(), [p, n] = d(!1), [h, m] = d(!1), { totp: r } = e || {}, s = r == null ? void 0 : r.secret, A = (l) => {
13
+ if (l === !0 && !s) {
14
+ n(!0);
15
+ return;
16
+ } else
17
+ o({ ...e, totp: { ...r, enabled: l } });
18
+ }, b = (l) => {
19
+ f(l), o({ ...e, theme: l });
9
20
  };
10
- return /* @__PURE__ */ c("div", { children: [
11
- /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
12
- m,
21
+ return /* @__PURE__ */ F("div", { children: [
22
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
23
+ t,
13
24
  {
14
25
  label: "App Instance Title",
15
- fieldValue: (l == null ? void 0 : l.title) || "",
16
- onUpdate: (e) => i({ ...l, title: e }),
26
+ fieldValue: (e == null ? void 0 : e.title) || "",
27
+ onUpdate: (l) => o({ ...e, title: l }),
17
28
  inline: !1
18
29
  }
19
30
  ) }),
20
- /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
21
- m,
31
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
32
+ t,
22
33
  {
23
34
  label: "App Instance Description",
24
- fieldValue: (l == null ? void 0 : l.description) || "",
25
- onUpdate: (e) => i({ ...l, description: e }),
35
+ fieldValue: (e == null ? void 0 : e.description) || "",
36
+ onUpdate: (l) => o({ ...e, description: l }),
26
37
  inline: !1
27
38
  }
28
39
  ) }),
29
- /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
30
- m,
40
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
41
+ t,
31
42
  {
32
43
  label: "Admin Email",
33
- fieldValue: l.admin_email || "",
34
- onUpdate: (e) => i({ ...l, admin_email: e }),
44
+ fieldValue: e.admin_email || "",
45
+ onUpdate: (l) => o({ ...e, admin_email: l }),
35
46
  type: "email",
36
47
  placeholder: "johndoe@mail.com",
37
48
  inline: !1
38
49
  }
39
50
  ) }),
40
- /* @__PURE__ */ a("div", { className: d.field, children: /* @__PURE__ */ a(
41
- f,
51
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
52
+ w,
42
53
  {
43
54
  label: "Color Scheme",
44
- fieldValue: l.theme,
55
+ fieldValue: e.theme,
45
56
  options: [
46
57
  { label: "Auto", value: "auto" },
47
58
  { label: "Dark", value: "dark" },
48
59
  { label: "Light", value: "light" }
49
60
  ],
50
- onUpdate: (e) => r(e),
61
+ onUpdate: (l) => b(l),
51
62
  inline: !1
52
63
  }
53
- ) })
64
+ ) }),
65
+ /* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(v, { label: "Enable 2FA", fieldValue: ((c = e == null ? void 0 : e.totp) == null ? void 0 : c.enabled) || !1, onUpdate: (l) => A(l), inline: !0 }) }),
66
+ p && /* @__PURE__ */ a(
67
+ S,
68
+ {
69
+ title: "Enable Two-Factor Authentication (2FA)",
70
+ message: "Are you sure you want to enable Two-Factor Authentication (2FA) to secure Pluton Login? You will be required to use an authenticator app to login if you enable this feature.",
71
+ closeModal: () => n(!1),
72
+ width: "420px",
73
+ primaryAction: {
74
+ title: "Yes, Enable 2FA",
75
+ type: "default",
76
+ isPending: !1,
77
+ action: () => m(!0)
78
+ }
79
+ }
80
+ ),
81
+ h && /* @__PURE__ */ a(T, { id: u, close: () => m(!1) })
54
82
  ] });
55
83
  };
56
84
  export {
57
- t as default
85
+ L as default
58
86
  };
59
87
  //# sourceMappingURL=GeneralSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={false}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","onUpdate","setTheme","useTheme","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate"],"mappings":";;;;;AAWA,MAAMA,IAAkB,CAAC,EAAE,UAAAC,GAAU,UAAAC,QAAqC;AACvE,QAAM,EAAE,UAAAC,EAAA,IAAaC,EAAA,GAEfC,IAAoB,CAACC,MAA6C;AACrE,IAAAH,EAASG,CAAa,GACtBJ,EAAS,EAAE,GAAGD,GAAU,OAAOK,GAAe;AAAA,EACjD;AAEA,2BACI,OAAA,EACE,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,UAAS;AAAA,QAChC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,OAAOS,GAAK;AAAA,QACvD,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,aAAaR,KAAA,gBAAAA,EAAU,gBAAe;AAAA,QACtC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYR,EAAS,eAAe;AAAA,QACpC,UAAU,CAACS,MAAQR,EAAS,EAAE,GAAGD,GAAU,aAAaS,GAAK;AAAA,QAC7D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,QAAQ;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,OACrB,UAAA,gBAAAD;AAAA,MAACI;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAYV,EAAS;AAAA,QACrB,SAAS;AAAA,UACN,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,QAAQ,OAAO,OAAA;AAAA,UACxB,EAAE,OAAO,SAAS,OAAO,QAAA;AAAA,QAAQ;AAAA,QAEpC,UAAU,CAACS,MAAgBL,EAAkBK,CAAgC;AAAA,QAC7E,QAAQ;AAAA,MAAA;AAAA,IAAA,EACX,CACH;AAAA,EAAA,GACH;AAEN;"}
1
+ {"version":3,"file":"GeneralSettings.js","sources":["../../../../src/components/Settings/GeneralSettings/GeneralSettings.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { ActionModal } from '../..';\r\nimport { useTheme } from '../../../context/ThemeContext';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Toggle from '../../common/form/Toggle/Toggle';\r\nimport Tristate from '../../common/form/Tristate/Tristate';\r\nimport TwoFactorSetup from '../TwoFactorSetup/TwoFactorSetup';\r\nimport classes from './GeneralSettings.module.scss';\r\n\r\ninterface GeneralSettingsProps {\r\n settingsID: number;\r\n settings: Record<string, any>;\r\n onUpdate: (settings: Record<string, any>) => void;\r\n}\r\n\r\nconst GeneralSettings = ({ settings, settingsID, onUpdate }: GeneralSettingsProps) => {\r\n const { setTheme } = useTheme();\r\n const [show2FASetupConfirm, setShow2FASetupConfirm] = useState(false);\r\n const [show2FASetup, setShow2FASetup] = useState(false);\r\n\r\n const { totp } = settings || {};\r\n const is2FASetupComplete = totp?.secret;\r\n\r\n const update2FASetting = (enabled: boolean) => {\r\n if (enabled === true && !is2FASetupComplete) {\r\n setShow2FASetupConfirm(true);\r\n return;\r\n } else {\r\n onUpdate({ ...settings, totp: { ...totp, enabled } });\r\n }\r\n };\r\n\r\n const handleThemeChange = (newThemeValue: 'auto' | 'light' | 'dark') => {\r\n setTheme(newThemeValue);\r\n onUpdate({ ...settings, theme: newThemeValue });\r\n };\r\n\r\n return (\r\n <div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Title\"\r\n fieldValue={(settings?.title || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, title: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"App Instance Description\"\r\n fieldValue={(settings?.description || '') as string}\r\n onUpdate={(val) => onUpdate({ ...settings, description: val })}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Input\r\n label=\"Admin Email\"\r\n fieldValue={settings.admin_email || ''}\r\n onUpdate={(val) => onUpdate({ ...settings, admin_email: val })}\r\n type=\"email\"\r\n placeholder=\"johndoe@mail.com\"\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Tristate\r\n label=\"Color Scheme\"\r\n fieldValue={settings.theme as string}\r\n options={[\r\n { label: 'Auto', value: 'auto' },\r\n { label: 'Dark', value: 'dark' },\r\n { label: 'Light', value: 'light' },\r\n ]}\r\n onUpdate={(val: string) => handleThemeChange(val as 'auto' | 'light' | 'dark')}\r\n inline={false}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <Toggle label=\"Enable 2FA\" fieldValue={settings?.totp?.enabled || false} onUpdate={(val) => update2FASetting(val)} inline={true} />\r\n </div>\r\n {show2FASetupConfirm && (\r\n <ActionModal\r\n title={`Enable Two-Factor Authentication (2FA)`}\r\n message={`Are you sure you want to enable Two-Factor Authentication (2FA) to secure Pluton Login? You will be required to use an authenticator app to login if you enable this feature.`}\r\n closeModal={() => setShow2FASetupConfirm(false)}\r\n width=\"420px\"\r\n primaryAction={{\r\n title: `Yes, Enable 2FA`,\r\n type: 'default',\r\n isPending: false,\r\n action: () => setShow2FASetup(true),\r\n }}\r\n />\r\n )}\r\n {show2FASetup && <TwoFactorSetup id={settingsID} close={() => setShow2FASetup(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GeneralSettings;\r\n"],"names":["GeneralSettings","settings","settingsID","onUpdate","setTheme","useTheme","show2FASetupConfirm","setShow2FASetupConfirm","useState","show2FASetup","setShow2FASetup","totp","is2FASetupComplete","update2FASetting","enabled","handleThemeChange","newThemeValue","jsx","classes","Input","val","Tristate","Toggle","_a","ActionModal","TwoFactorSetup"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface TwoFactorSetupProps {
2
+ id: number;
3
+ close: () => void;
4
+ }
5
+ declare const TwoFactorSetup: ({ close, id }: TwoFactorSetupProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default TwoFactorSetup;
7
+ //# sourceMappingURL=TwoFactorSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoFactorSetup.d.ts","sourceRoot":"","sources":["../../../../src/components/Settings/TwoFactorSetup/TwoFactorSetup.tsx"],"names":[],"mappings":"AAQA,UAAU,mBAAmB;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,cAAc,GAAI,eAAmB,mBAAmB,4CAsF7D,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { jsxs as o, Fragment as C, jsx as e } from "react/jsx-runtime";
2
+ import { useState as N, useEffect as b } from "react";
3
+ import { useSetupTwoFactorAuth as M, useVerifyTwoFactorAuth as T } from "../../../services/settings.js";
4
+ import k from "../../common/Icon/Icon.js";
5
+ import y from "../../common/Modal/Modal.js";
6
+ import x from "../../common/form/Input/Input.js";
7
+ import E from "../../common/Button/Button.js";
8
+ import t from "./TwoFactorSetup.module.scss.js";
9
+ const D = ({ close: g, id: c = 1 }) => {
10
+ var l, d, u, h, p, m, f;
11
+ const [a, v] = N(""), r = M(), i = T(), s = r.isPending || i.isPending, n = ((d = (l = r.data) == null ? void 0 : l.result) == null ? void 0 : d.qrCodeDataUrl) || "", w = ((h = (u = r.data) == null ? void 0 : u.result) == null ? void 0 : h.setupKey) || "", A = ((m = (p = i.data) == null ? void 0 : p.result) == null ? void 0 : m.recoveryCodes) || [];
12
+ b(() => {
13
+ r.mutate(c);
14
+ }, []);
15
+ const F = () => {
16
+ i.mutate({ code: a, id: c });
17
+ };
18
+ return /* @__PURE__ */ o(C, { children: [
19
+ !i.isSuccess && /* @__PURE__ */ e(y, { title: "Two-Factor Authentication (2FA) Setup", closeModal: () => !s && g(), width: "500px", disableBackdropClick: !0, children: /* @__PURE__ */ o("div", { className: t.twoFactorSetup, children: [
20
+ r.isPending && /* @__PURE__ */ o("p", { children: [
21
+ /* @__PURE__ */ e(k, { type: "loading" }),
22
+ " Setting up 2FA..."
23
+ ] }),
24
+ r.isError && /* @__PURE__ */ e("p", { className: t.error, children: "Error setting up 2FA. Please try again." }),
25
+ r.isSuccess && /* @__PURE__ */ o("div", { className: t.setupContainer, children: [
26
+ /* @__PURE__ */ o("div", { className: t.instructions, children: [
27
+ /* @__PURE__ */ e("h4", { children: "Setup Instructions" }),
28
+ /* @__PURE__ */ o("ol", { children: [
29
+ /* @__PURE__ */ e("li", { children: "Download and install an authenticator app on your mobile device (e.g., Google Authenticator, Authy, Microsoft Authenticator)." }),
30
+ /* @__PURE__ */ e("li", { children: "Open the authenticator app and choose to add a new account." }),
31
+ /* @__PURE__ */ e("li", { children: "Scan the QR code below using the authenticator app or manually enter the setup key provided." }),
32
+ /* @__PURE__ */ e("li", { children: "Once added, the app will generate a 6-digit verification code that refreshes every 30 seconds." }),
33
+ /* @__PURE__ */ e("li", { children: "Enter the current 6-digit code from the authenticator app into the field below to complete the setup." })
34
+ ] })
35
+ ] }),
36
+ /* @__PURE__ */ o("div", { className: t.qrSection, children: [
37
+ /* @__PURE__ */ e("div", { className: t.qrCode, children: n && /* @__PURE__ */ e("img", { src: n, alt: "2FA QR Code" }) }),
38
+ /* @__PURE__ */ o("div", { className: t.setupKey, children: [
39
+ "Setup Key: ",
40
+ w
41
+ ] }),
42
+ i.isError && /* @__PURE__ */ e("p", { className: t.errorMsg, children: (f = i.error) == null ? void 0 : f.message }),
43
+ /* @__PURE__ */ o("div", { className: t.verifySection, children: [
44
+ /* @__PURE__ */ e(
45
+ x,
46
+ {
47
+ type: "text",
48
+ placeholder: "Enter 6-digit code",
49
+ fieldValue: a,
50
+ onUpdate: (S) => v(S),
51
+ full: !0
52
+ }
53
+ ),
54
+ /* @__PURE__ */ e(E, { text: "Verify & Enable 2FA", onClick: () => F(), variant: "primary", size: "sm" })
55
+ ] })
56
+ ] })
57
+ ] })
58
+ ] }) }),
59
+ i.isSuccess && /* @__PURE__ */ e(
60
+ y,
61
+ {
62
+ title: "Two-Factor Authentication (2FA) Setup",
63
+ closeModal: () => !s && location.reload(),
64
+ width: "500px",
65
+ disableBackdropClick: !0,
66
+ children: /* @__PURE__ */ o("div", { className: t.successMessage, children: [
67
+ /* @__PURE__ */ e("p", { className: t.successMsg, children: "Two-Factor Authentication (2FA) has been successfully enabled." }),
68
+ /* @__PURE__ */ e("p", { children: /* @__PURE__ */ e("strong", { children: "Save these backup codes in a secure place. They will be required to access your account if you lose your device. They won't be shown again." }) }),
69
+ /* @__PURE__ */ e("code", { className: t.recoveryCodes, children: A.join(`
70
+ `) })
71
+ ] })
72
+ }
73
+ )
74
+ ] });
75
+ };
76
+ export {
77
+ D as default
78
+ };
79
+ //# sourceMappingURL=TwoFactorSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoFactorSetup.js","sources":["../../../../src/components/Settings/TwoFactorSetup/TwoFactorSetup.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { useSetupTwoFactorAuth, useVerifyTwoFactorAuth } from '../../../services';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport Input from '../../common/form/Input/Input';\r\nimport Button from '../../common/Button/Button';\r\nimport classes from './TwoFactorSetup.module.scss';\r\n\r\ninterface TwoFactorSetupProps {\r\n id: number;\r\n close: () => void;\r\n}\r\n\r\nconst TwoFactorSetup = ({ close, id = 1 }: TwoFactorSetupProps) => {\r\n const [verificationCode, setVerificationCode] = useState('');\r\n const setupMutation = useSetupTwoFactorAuth();\r\n const verifyMutation = useVerifyTwoFactorAuth();\r\n const isLoading = setupMutation.isPending || verifyMutation.isPending;\r\n\r\n const qrCodeUrl: string = setupMutation.data?.result?.qrCodeDataUrl || '';\r\n const setupKey: string = setupMutation.data?.result?.setupKey || '';\r\n const recoveryCodes: string[] = verifyMutation.data?.result?.recoveryCodes || [];\r\n\r\n useEffect(() => {\r\n setupMutation.mutate(id);\r\n }, []);\r\n\r\n const verify2FA = () => {\r\n verifyMutation.mutate({ code: verificationCode, id });\r\n };\r\n\r\n return (\r\n <>\r\n {!verifyMutation.isSuccess && (\r\n <Modal title=\"Two-Factor Authentication (2FA) Setup\" closeModal={() => !isLoading && close()} width=\"500px\" disableBackdropClick={true}>\r\n <div className={classes.twoFactorSetup}>\r\n {setupMutation.isPending && (\r\n <p>\r\n <Icon type=\"loading\" /> Setting up 2FA...\r\n </p>\r\n )}\r\n {setupMutation.isError && <p className={classes.error}>Error setting up 2FA. Please try again.</p>}\r\n {setupMutation.isSuccess && (\r\n <div className={classes.setupContainer}>\r\n <div className={classes.instructions}>\r\n <h4>Setup Instructions</h4>\r\n <ol>\r\n <li>\r\n Download and install an authenticator app on your mobile device (e.g., Google Authenticator, Authy, Microsoft\r\n Authenticator).\r\n </li>\r\n <li>Open the authenticator app and choose to add a new account.</li>\r\n <li>Scan the QR code below using the authenticator app or manually enter the setup key provided.</li>\r\n <li>Once added, the app will generate a 6-digit verification code that refreshes every 30 seconds.</li>\r\n <li>Enter the current 6-digit code from the authenticator app into the field below to complete the setup.</li>\r\n </ol>\r\n </div>\r\n <div className={classes.qrSection}>\r\n <div className={classes.qrCode}>{qrCodeUrl && <img src={qrCodeUrl} alt=\"2FA QR Code\" />}</div>\r\n <div className={classes.setupKey}>Setup Key: {setupKey}</div>\r\n {verifyMutation.isError && <p className={classes.errorMsg}>{verifyMutation.error?.message}</p>}\r\n <div className={classes.verifySection}>\r\n <Input\r\n type=\"text\"\r\n placeholder=\"Enter 6-digit code\"\r\n fieldValue={verificationCode}\r\n onUpdate={(val) => setVerificationCode(val)}\r\n full={true}\r\n />\r\n <Button text=\"Verify & Enable 2FA\" onClick={() => verify2FA()} variant=\"primary\" size=\"sm\" />\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </Modal>\r\n )}\r\n\r\n {verifyMutation.isSuccess && (\r\n <Modal\r\n title=\"Two-Factor Authentication (2FA) Setup\"\r\n closeModal={() => !isLoading && location.reload()}\r\n width=\"500px\"\r\n disableBackdropClick={true}\r\n >\r\n <div className={classes.successMessage}>\r\n <p className={classes.successMsg}>Two-Factor Authentication (2FA) has been successfully enabled.</p>\r\n <p>\r\n <strong>\r\n Save these backup codes in a secure place. They will be required to access your account if you lose your device. They won't be\r\n shown again.\r\n </strong>\r\n </p>\r\n <code className={classes.recoveryCodes}>{recoveryCodes.join('\\n')}</code>\r\n </div>\r\n </Modal>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default TwoFactorSetup;\r\n"],"names":["TwoFactorSetup","close","id","verificationCode","setVerificationCode","useState","setupMutation","useSetupTwoFactorAuth","verifyMutation","useVerifyTwoFactorAuth","isLoading","qrCodeUrl","_b","_a","setupKey","_d","_c","recoveryCodes","_f","_e","useEffect","verify2FA","jsxs","Fragment","jsx","Modal","classes","Icon","_g","Input","val","Button"],"mappings":";;;;;;;;AAaA,MAAMA,IAAiB,CAAC,EAAE,OAAAC,GAAO,IAAAC,IAAK,QAA6B;;AAChE,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAS,EAAE,GACrDC,IAAgBC,EAAA,GAChBC,IAAiBC,EAAA,GACjBC,IAAYJ,EAAc,aAAaE,EAAe,WAEtDG,MAAoBC,KAAAC,IAAAP,EAAc,SAAd,gBAAAO,EAAoB,WAApB,gBAAAD,EAA4B,kBAAiB,IACjEE,MAAmBC,KAAAC,IAAAV,EAAc,SAAd,gBAAAU,EAAoB,WAApB,gBAAAD,EAA4B,aAAY,IAC3DE,MAA0BC,KAAAC,IAAAX,EAAe,SAAf,gBAAAW,EAAqB,WAArB,gBAAAD,EAA6B,kBAAiB,CAAA;AAE9E,EAAAE,EAAU,MAAM;AACb,IAAAd,EAAc,OAAOJ,CAAE;AAAA,EAC1B,GAAG,CAAA,CAAE;AAEL,QAAMmB,IAAY,MAAM;AACrB,IAAAb,EAAe,OAAO,EAAE,MAAML,GAAkB,IAAAD,GAAI;AAAA,EACvD;AAEA,SACG,gBAAAoB,EAAAC,GAAA,EACI,UAAA;AAAA,IAAA,CAACf,EAAe,aACd,gBAAAgB,EAACC,GAAA,EAAM,OAAM,yCAAwC,YAAY,MAAM,CAACf,KAAaT,KAAS,OAAM,SAAQ,sBAAsB,IAC/H,4BAAC,OAAA,EAAI,WAAWyB,EAAQ,gBACpB,UAAA;AAAA,MAAApB,EAAc,+BACX,KAAA,EACE,UAAA;AAAA,QAAA,gBAAAkB,EAACG,GAAA,EAAK,MAAK,UAAA,CAAU;AAAA,QAAE;AAAA,MAAA,GAC1B;AAAA,MAEFrB,EAAc,WAAW,gBAAAkB,EAAC,OAAE,WAAWE,EAAQ,OAAO,UAAA,2CAAuC;AAAA,MAC7FpB,EAAc,aACZ,gBAAAgB,EAAC,OAAA,EAAI,WAAWI,EAAQ,gBACrB,UAAA;AAAA,QAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAWI,EAAQ,cACrB,UAAA;AAAA,UAAA,gBAAAF,EAAC,QAAG,UAAA,qBAAA,CAAkB;AAAA,4BACrB,MAAA,EACE,UAAA;AAAA,YAAA,gBAAAA,EAAC,QAAG,UAAA,gIAAA,CAGJ;AAAA,YACA,gBAAAA,EAAC,QAAG,UAAA,8DAAA,CAA2D;AAAA,YAC/D,gBAAAA,EAAC,QAAG,UAAA,+FAAA,CAA4F;AAAA,YAChG,gBAAAA,EAAC,QAAG,UAAA,iGAAA,CAA8F;AAAA,YAClG,gBAAAA,EAAC,QAAG,UAAA,wGAAA,CAAqG;AAAA,UAAA,EAAA,CAC5G;AAAA,QAAA,GACH;AAAA,QACA,gBAAAF,EAAC,OAAA,EAAI,WAAWI,EAAQ,WACrB,UAAA;AAAA,UAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWE,EAAQ,QAAS,UAAAf,KAAa,gBAAAa,EAAC,OAAA,EAAI,KAAKb,GAAW,KAAI,cAAA,CAAc,GAAG;AAAA,UACxF,gBAAAW,EAAC,OAAA,EAAI,WAAWI,EAAQ,UAAU,UAAA;AAAA,YAAA;AAAA,YAAYZ;AAAA,UAAA,GAAS;AAAA,UACtDN,EAAe,WAAW,gBAAAgB,EAAC,KAAA,EAAE,WAAWE,EAAQ,UAAW,WAAAE,IAAApB,EAAe,UAAf,gBAAAoB,EAAsB,QAAA,CAAQ;AAAA,UAC1F,gBAAAN,EAAC,OAAA,EAAI,WAAWI,EAAQ,eACrB,UAAA;AAAA,YAAA,gBAAAF;AAAA,cAACK;AAAA,cAAA;AAAA,gBACE,MAAK;AAAA,gBACL,aAAY;AAAA,gBACZ,YAAY1B;AAAA,gBACZ,UAAU,CAAC2B,MAAQ1B,EAAoB0B,CAAG;AAAA,gBAC1C,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,YAET,gBAAAN,EAACO,GAAA,EAAO,MAAK,uBAAsB,SAAS,MAAMV,EAAA,GAAa,SAAQ,WAAU,MAAK,KAAA,CAAK;AAAA,UAAA,EAAA,CAC9F;AAAA,QAAA,EAAA,CACH;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,EAAA,CAEN,EAAA,CACH;AAAA,IAGFb,EAAe,aACb,gBAAAgB;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,OAAM;AAAA,QACN,YAAY,MAAM,CAACf,KAAa,SAAS,OAAA;AAAA,QACzC,OAAM;AAAA,QACN,sBAAsB;AAAA,QAEtB,UAAA,gBAAAY,EAAC,OAAA,EAAI,WAAWI,EAAQ,gBACrB,UAAA;AAAA,UAAA,gBAAAF,EAAC,KAAA,EAAE,WAAWE,EAAQ,YAAY,UAAA,kEAA8D;AAAA,UAChG,gBAAAF,EAAC,KAAA,EACE,UAAA,gBAAAA,EAAC,UAAA,EAAO,yJAGR,GACH;AAAA,UACA,gBAAAA,EAAC,UAAK,WAAWE,EAAQ,eAAgB,UAAAT,EAAc,KAAK;AAAA,CAAI,EAAA,CAAE;AAAA,QAAA,EAAA,CACrE;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEN;AAEN;"}
@@ -0,0 +1,24 @@
1
+ const s = "_setupContainer_CTnaj", e = "_errorMsg_pzVbT", c = "_instructions_8Faa2", t = "_qrSection_7GMuD", n = "_qrCode_hEdiA", o = "_setupKey_cp2zi", r = "_verifySection_CIpNa", i = "_successMessage_lsWNg", _ = "_successMsg_xQFvz", u = {
2
+ setupContainer: s,
3
+ errorMsg: e,
4
+ instructions: c,
5
+ qrSection: t,
6
+ qrCode: n,
7
+ setupKey: o,
8
+ verifySection: r,
9
+ successMessage: i,
10
+ successMsg: _
11
+ };
12
+ export {
13
+ u as default,
14
+ e as errorMsg,
15
+ c as instructions,
16
+ n as qrCode,
17
+ t as qrSection,
18
+ s as setupContainer,
19
+ o as setupKey,
20
+ i as successMessage,
21
+ _ as successMsg,
22
+ r as verifySection
23
+ };
24
+ //# sourceMappingURL=TwoFactorSetup.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoFactorSetup.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -78,6 +78,7 @@ export { default as PlanStrategySettings } from './Plan/PlanSettings/PlanStrateg
78
78
  export { default as PlanTypeSettings } from './Plan/PlanSettings/PlanTypeSettings';
79
79
  export { default as PlanStats } from './Plan/PlanStats/PlanStats';
80
80
  export { default as PlanUnlockModal } from './Plan/PlanUnlockModal/PlanUnlockModal';
81
+ export { default as PlanIntegrity } from './Plan/PlanIntegrity/PlanIntegrity';
81
82
  export { default as MirrorStatusBadge } from './Plan/Mirrors/MirrorStatusBadge';
82
83
  export { default as MirrorStorageSelector } from './Plan/Mirrors/MirrorStorageSelector';
83
84
  export { default as MirrorStorageSelectorModal } from './Plan/Mirrors/MirrorStorageSelectorModal';
@@ -95,6 +96,7 @@ export { default as AppLogs } from './Settings/AppLogs/AppLogs';
95
96
  export { default as GeneralSettings } from './Settings/GeneralSettings/GeneralSettings';
96
97
  export { default as IntegrationSettings } from './Settings/IntegrationSettings/IntegrationSettings';
97
98
  export { default as SMTPSettings } from './Settings/IntegrationSettings/SMTPSettings';
99
+ export { default as TwoFactorSetup } from './Settings/TwoFactorSetup/TwoFactorSetup';
98
100
  export { default as SkeletonItems } from './Skeleton/SkeletonItems';
99
101
  export { default as AddStorage } from './Storage/AddStorage/AddStorage';
100
102
  export { default as EditStorage } from './Storage/EditStorage/EditStorage';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}