@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.
- package/dist-lib/components/App/Footer/Footer.d.ts +2 -1
- package/dist-lib/components/App/Footer/Footer.d.ts.map +1 -1
- package/dist-lib/components/App/Footer/Footer.js +29 -18
- package/dist-lib/components/App/Footer/Footer.js.map +1 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.js +74 -74
- package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts +16 -0
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js +115 -0
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.js.map +1 -0
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js +26 -0
- package/dist-lib/components/Plan/PlanIntegrity/PlanIntegrity.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts +2 -2
- package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanPendingBackup/PlanPendingBackup.js.map +1 -1
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts +1 -1
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.d.ts.map +1 -1
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +55 -27
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts +7 -0
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.d.ts.map +1 -0
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js +79 -0
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.js.map +1 -0
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js +24 -0
- package/dist-lib/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss.js.map +1 -0
- package/dist-lib/components/index.d.ts +2 -0
- package/dist-lib/components/index.d.ts.map +1 -1
- package/dist-lib/components.js +73 -69
- package/dist-lib/components.js.map +1 -1
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js +68 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js.map +1 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js +7 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/timeoutManager.js.map +1 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js +55 -0
- package/dist-lib/node_modules/.pnpm/@tanstack_query-core@5.96.0/node_modules/@tanstack/query-core/build/modern/utils.js.map +1 -0
- 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
- 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
- package/dist-lib/router.d.ts.map +1 -1
- package/dist-lib/router.js +42 -39
- package/dist-lib/router.js.map +1 -1
- package/dist-lib/routes/PlanSingle/PlanSingle.d.ts.map +1 -1
- package/dist-lib/routes/PlanSingle/PlanSingle.js +123 -98
- package/dist-lib/routes/PlanSingle/PlanSingle.js.map +1 -1
- package/dist-lib/services/plans.d.ts +6 -0
- package/dist-lib/services/plans.d.ts.map +1 -1
- package/dist-lib/services/plans.js +151 -127
- package/dist-lib/services/plans.js.map +1 -1
- package/dist-lib/services/settings.d.ts +18 -0
- package/dist-lib/services/settings.d.ts.map +1 -1
- package/dist-lib/services/settings.js +182 -72
- package/dist-lib/services/settings.js.map +1 -1
- package/dist-lib/services/users.d.ts +1 -1
- package/dist-lib/services/users.d.ts.map +1 -1
- package/dist-lib/services/users.js.map +1 -1
- package/dist-lib/services.js +98 -88
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/helpers.d.ts +1 -0
- package/dist-lib/utils/helpers.d.ts.map +1 -1
- package/dist-lib/utils/helpers.js +74 -70
- package/dist-lib/utils/helpers.js.map +1 -1
- package/dist-lib/utils.js +28 -27
- package/package.json +5 -4
- package/src/components/App/Footer/Footer.tsx +17 -2
- package/src/components/Plan/PlanForm/PlanForm.tsx +14 -14
- package/src/components/Plan/PlanIntegrity/PlanIntegrity.module.scss +110 -0
- package/src/components/Plan/PlanIntegrity/PlanIntegrity.tsx +187 -0
- package/src/components/Plan/PlanPendingBackup/PlanPendingBackup.tsx +2 -2
- package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +37 -1
- package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.module.scss +62 -0
- package/src/components/Settings/TwoFactorSetup/TwoFactorSetup.tsx +102 -0
- package/src/components/index.ts +2 -0
- package/src/router.tsx +6 -1
- package/src/routes/PlanSingle/PlanSingle.tsx +21 -0
- package/src/services/plans.ts +30 -0
- package/src/services/settings.ts +126 -0
- package/src/services/users.ts +1 -1
- 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":";;;;;;;AAiBA,MAAMA,IAAgB,CAAC,EAAE,QAAAC,GAAQ,aAAAC,GAAa,kBAAAC,GAAkB,SAAAC,GAAS,qBAAAC,IAAsB,IAAI,SAAAC,QAAkC;;AAClI,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAS,SAAS,GAClDC,IAAyBC,EAAA,GAEzBC,IAAwBT,MAAoBA,KAAA,gBAAAA,EAAkB,SAC9DU,IAAkBR,KAAuBA,EAAoB,SAAS,GAEtES,IAA2B,CAACC,MAC1BZ,KAAA,QAAAA,EAAkB,SAEGA,EAAiB,OAClBY,CAAW,KAAK,OAHH,MAMnCC,IAAa,CAACD,MAAwB;AACzC,QAAIL,EAAuB,UAAW,QAAO;AAC7C,UAAMO,IAAgBH,EAAyBC,CAAW,GACpDG,IAAWD,KAAA,gBAAAA,EAAe;AAChC,WAAKC,KAAA,QAAAA,EAAU,SAGZ,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAQ,eACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,qBACrB,UAAA;AAAA,QAAA,gBAAAC,EAAC,SAAI,UAAA,8BAAA,CAA2B;AAAA,QAChC,gBAAAF,EAAC,SAAI,OAAOG,EAAenB,EAAiB,WAAWA,EAAiB,SAAS,GAC9E,UAAA;AAAA,UAAA,gBAAAkB,EAACE,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,UAAE;AAAA,UAAEC,EAAQ,IAAI,KAAKrB,EAAiB,WAAWA,EAAiB,SAAS,CAAC;AAAA,QAAA,EAAA,CAC5G;AAAA,MAAA,GACH;AAAA,MACA,gBAAAkB,EAAC,OAAA,EAAI,WAAWD,EAAQ,sBACpB,UAAAF,EAAS,IAAI,CAACO,GAASC,MACrB,gBAAAL,EAAC,QAAA,EAAkB,UAAAI,EAAA,GAARC,CAAgB,CAC7B,EAAA,CACJ;AAAA,IAAA,GACH,IAf2B;AAAA,EAiBjC,GAEMC,IAA4B,CAACZ,MAAwB;AAExD,QADI,CAACH,KACDF,EAAuB,UAAW,QAAO;AAC7C,UAAMO,IAAgBH,EAAyBC,CAAW;AAC1D,WAAKE,KAAA,QAAAA,EAAe,WAGjB,gBAAAE,EAAC,OAAA,EAAI,WAAWC,EAAQ,eACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAG,UAAA,iBAAA,CAAc;AAAA,MAClB,gBAAAF,EAAC,OAAA,EAAI,WAAWC,EAAQ,sBACpB,UAAA;AAAA,QAAAH,EAAc,OACZA,EAAc,IACV,MAAM;AAAA,CAAI,EACV,IAAI,CAACW,GAAMF,MAAU,gBAAAL,EAAC,KAAA,EAAe,UAAAO,EAAK,SAAS,GAAG,IAAI,gBAAAP,EAAC,QAAA,EAAM,UAAAO,EAAK,QAAQ,MAAM,EAAE,EAAA,CAAE,IAAUA,EAAA,GAArEF,CAA0E,CAAI;AAAA,QACjH,CAACT,EAAc,OAAO,gBAAAI,EAAC,OAAE,UAAA,iCAA6B;AAAA,0BACtD,KAAA,EAAE,UAAA;AAAA,UAAA;AAAA,UAC2C;AAAA,UAC3C,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,MAAK;AAAA,cACL,QAAO;AAAA,cACP,KAAI;AAAA,cACN,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACH;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,GACH,IAtBkC;AAAA,EAwBxC,GAEMQ,IAAqB,CAACd,MAAwB;AAEjD,QADI,CAACH,KACDF,EAAuB,UAAW,QAAO;AAC7C,UAAMO,IAAgBH,EAAyBC,CAAW,GACpDe,IAAiBb,KAAA,gBAAAA,EAAe,UAChCc,IAAgBd,KAAA,gBAAAA,EAAe;AAErC,WAAI,CAACa,MAAkBC,KAAA,QAAAA,EAAe,SAAS,wBACrC,gBAAAV,EAAC,OAAA,EAAI,WAAU,iBAAgB,UAAA,+FAA2F,IAG7H,gBAAAF,EAAC,OAAA,EAAI,WAAU,eAAc,UAAA;AAAA,MAAA;AAAA,MAAgBY;AAAA,IAAA,GAAc;AAAA,EACrE,GAEMC,IAA+B,MAE/B,gBAAAX,EAAC,SAAI,WAAW,GAAGD,EAAQ,eAAe,IAAIA,EAAQ,gBAAgB,IAClE,eACE,OAAO,QAAQjB,EAAiB,MAA4C,EAAE,IAAI,CAAC,CAACY,CAAW,MAAM;AAClG,QAAIkB,IAAa7B;AACjB,QAAIW,MAAgB,WAAW;AAC5B,YAAMmB,IAAS7B,EAAoB,KAAK,CAAC8B,MAAMA,EAAE,cAAcpB,EAAY,QAAQ,WAAW,EAAE,CAAC;AACjG,MAAImB,MACDD,IAAa,EAAE,MAAMC,EAAO,aAAuB,MAAMA,KAAA,gBAAAA,EAAQ,aAAuB,IAAIA,KAAA,gBAAAA,EAAQ,UAAA;AAAA,IAE1G;AACA,QAAI,CAACD,EAAY,QAAO;AACxB,UAAMhB,IAAgBH,EAAyBC,CAAW,GACpDe,IAAiBb,KAAA,gBAAAA,EAAe;AACtC,WACG,gBAAAE,EAAC,OAAA,EAAsB,WAAWC,EAAQ,mBACvC,UAAA;AAAA,MAAA,gBAAAD,EAAC,MAAA,EAAG,SAAS,MAAMX,EAAeO,CAAW,GAAG,WAAWR,MAAgBQ,IAAcK,EAAQ,SAAS,IACvG,UAAA;AAAA,QAAA,gBAAAD,EAAC,QAAA,EACE,UAAA;AAAA,UAAA,gBAAAE,EAAC,OAAA,EAAI,KAAK,cAAcY,EAAW,IAAI,QAAQ;AAAA,UAC9CA,EAAW;AAAA,UAAK;AAAA,UAAC,gBAAAZ,EAAC,KAAA,EAAG,UAAAN,MAAgB,YAAY,YAAY,SAAA,CAAS;AAAA,QAAA,GAC1E;AAAA,QACA,gBAAAM,EAAC,UACG,UAAAS,IACE,gBAAAT,EAACE,KAAK,MAAK,uBAAsB,MAAM,IAAI,OAAM,WAAU,IAE3D,gBAAAF,EAACE,KAAK,MAAK,uBAAsB,MAAM,IAAI,OAAM,WAAU,EAAA,CAEjE;AAAA,MAAA,GACH;AAAA,MACChB,MAAgBQ,KACd,gBAAAI,EAAC,OAAA,EAAI,WAAWC,EAAQ,0BACpB,UAAA;AAAA,QAAAS,EAAmBd,CAAW;AAAA,QAC9BC,EAAWD,CAAW;AAAA,QACtBY,EAA0BZ,CAAW;AAAA,MAAA,EAAA,CACzC;AAAA,IAAA,EAAA,GAnBIA,CAqBV;AAAA,EAEN,CAAC,EAAA,CACP;AAIN,SACG,gBAAAM;AAAA,IAACe;AAAA,IAAA;AAAA,MACE,OAAM;AAAA,MACN,SACG,gBAAAjB,EAAC,OAAA,EAAI,WAAWC,EAAQ,kBACpB,UAAA;AAAA,QAAA,CAACR,KAAyB,gBAAAS,EAAC,KAAA,EAAE,UAAA,mFAAA,CAAgF;AAAA,QAC7GT,uBACG,OAAA,EACG,UAACC,IAOCmB,MANA,gBAAAb,EAAC,OAAA,EAAI,WAAWC,EAAQ,iBACpB,UAAA;AAAA,UAAAS,EAAmB,SAAS;AAAA,UAC5Bb,EAAW,SAAS;AAAA,UACpBW,EAA0B,SAAS;AAAA,QAAA,GACvC,GAIN;AAAA,QAEFjB,EAAuB,aACrB,gBAAAS,EAAC,OAAA,EAAI,WAAU,qBACZ,UAAA;AAAA,UAAA,gBAAAE,EAACE,GAAA,EAAK,MAAK,WAAU,MAAM,IAAI;AAAA,UAAE;AAAA,QAAA,EAAA,CAEpC;AAAA,MAAA,GAEN;AAAA,MAEH,eAAcc,IAAA3B,EAAuB,UAAvB,gBAAA2B,EAA8B;AAAA,MAC5C,YAAY,MAAM/B,EAAA;AAAA,MAClB,OAAM;AAAA,MACN,eAAe;AAAA,QACZ,OAAOM,IAAwB,gBAAgB;AAAA,QAC/C,MAAM;AAAA,QACN,WAAWF,EAAuB;AAAA,QAClC,QAAQ,MAAM,CAACR,KAAeQ,EAAuB,OAAO,EAAE,QAAAT,GAAQ;AAAA,MAAA;AAAA,MAEzE,iBAAiB;AAAA,QACd,OAAO;AAAA,QACP,QAAQ,MAAMK,EAAA;AAAA,MAAQ;AAAA,IACzB;AAAA,EAAA;AAGT;"}
|
|
@@ -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
|
|
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 }:
|
|
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,
|
|
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
|
|
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":"
|
|
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
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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__ */
|
|
11
|
-
/* @__PURE__ */ a("div", { className:
|
|
12
|
-
|
|
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: (
|
|
16
|
-
onUpdate: (
|
|
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:
|
|
21
|
-
|
|
31
|
+
/* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
|
|
32
|
+
t,
|
|
22
33
|
{
|
|
23
34
|
label: "App Instance Description",
|
|
24
|
-
fieldValue: (
|
|
25
|
-
onUpdate: (
|
|
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:
|
|
30
|
-
|
|
40
|
+
/* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
|
|
41
|
+
t,
|
|
31
42
|
{
|
|
32
43
|
label: "Admin Email",
|
|
33
|
-
fieldValue:
|
|
34
|
-
onUpdate: (
|
|
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:
|
|
41
|
-
|
|
51
|
+
/* @__PURE__ */ a("div", { className: i.field, children: /* @__PURE__ */ a(
|
|
52
|
+
w,
|
|
42
53
|
{
|
|
43
54
|
label: "Color Scheme",
|
|
44
|
-
fieldValue:
|
|
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: (
|
|
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
|
-
|
|
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":"
|
|
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 @@
|
|
|
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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"}
|