@abstraxn/signer-react 2.2.2 → 2.2.4
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/CHANGELOG.md +38 -0
- package/dist/src/ExternalWalletButtons.d.ts +1 -0
- package/dist/src/ExternalWalletButtons.js +22 -0
- package/dist/src/ExternalWalletButtons.js.map +1 -1
- package/dist/src/WalletModal.js +2 -1
- package/dist/src/WalletModal.js.map +1 -1
- package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js +38 -89
- package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js.map +1 -1
- package/dist/src/components/AbstraxnProvider/useWalletInitialization.js +7 -3
- package/dist/src/components/AbstraxnProvider/useWalletInitialization.js.map +1 -1
- package/dist/src/components/AbstraxnProvider/utils.js +1 -12
- package/dist/src/components/AbstraxnProvider/utils.js.map +1 -1
- package/dist/src/components/OnboardingUI/OnboardingUI.css +37 -0
- package/dist/src/components/OnboardingUI/OnboardingUIReact.js +8 -30
- package/dist/src/components/OnboardingUI/OnboardingUIReact.js.map +1 -1
- package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +18 -26
- package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -1
- package/dist/src/components/OnboardingUI/components/Modal.d.ts +2 -0
- package/dist/src/components/OnboardingUI/components/Modal.js +6 -3
- package/dist/src/components/OnboardingUI/components/Modal.js.map +1 -1
- package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js +6 -3
- package/dist/src/components/OnboardingUI/hooks/useAuthMethods.js.map +1 -1
- package/dist/src/components/OnboardingUI/hooks/useOnboarding.js +2 -2
- package/dist/src/components/OnboardingUI/hooks/useOnboarding.js.map +1 -1
- package/dist/src/components/WalletModal/components/ManageWalletModal.js +94 -118
- package/dist/src/components/WalletModal/components/ManageWalletModal.js.map +1 -1
- package/dist/src/hooks.d.ts +52 -1
- package/dist/src/hooks.js +200 -0
- package/dist/src/hooks.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types.d.ts +5 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuthMethods.js","sourceRoot":"","sources":["../../../../../src/components/OnboardingUI/hooks/useAuthMethods.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAanD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAoC,EAAwB,EAAE;IAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAsD,IAAI,CAAC,CAAC;IAE5G,MAAM,iBAAiB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,YAAY,EAAE,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE1B,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;YACrC,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,6BAA6B;YAC/B,CAAC;YAED,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;gBACzD,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,6BAA6B;YAC/B,CAAC;YAED,uDAAuD;YACvD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,kEAAkE;gBAClE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACnC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"useAuthMethods.js","sourceRoot":"","sources":["../../../../../src/components/OnboardingUI/hooks/useAuthMethods.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,9 @@ export const useOnboarding = (config) => {
|
|
|
24
24
|
const params = new URLSearchParams(window.location.search);
|
|
25
25
|
const success = params.get('success') === 'true';
|
|
26
26
|
const mfaRequired = params.get('mfaRequired') === 'true';
|
|
27
|
-
const
|
|
27
|
+
const loginCode = params.get('loginCode');
|
|
28
28
|
const oauthUi = typeof localStorage !== 'undefined' ? localStorage.getItem('abstraxn_oauth_ui') : null;
|
|
29
|
-
if (success && mfaRequired &&
|
|
29
|
+
if (success && mfaRequired && loginCode && oauthUi !== 'modal') {
|
|
30
30
|
setStep('mfa');
|
|
31
31
|
}
|
|
32
32
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnboarding.js","sourceRoot":"","sources":["../../../../../src/components/OnboardingUI/hooks/useOnboarding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA6BnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAoC,EAAuB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAiB,OAAO,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExD,gGAAgG;IAChG,oGAAoG;IACpG,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC;QACjD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC;QACzD,MAAM,
|
|
1
|
+
{"version":3,"file":"useOnboarding.js","sourceRoot":"","sources":["../../../../../src/components/OnboardingUI/hooks/useOnboarding.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ import { FiUsers, FiLink } from "react-icons/fi";
|
|
|
11
11
|
import { TfiEmail } from "react-icons/tfi";
|
|
12
12
|
import { BiShieldQuarter } from "react-icons/bi";
|
|
13
13
|
import { useAbstraxnWallet } from "../../../AbstraxnProvider";
|
|
14
|
+
import { useEnableMfa } from "../../../hooks";
|
|
14
15
|
import "./ManageWalletModal.css";
|
|
15
16
|
import { QRCodeSVG } from "qrcode.react";
|
|
16
17
|
function normalizeLinkedProvider(authProvider) {
|
|
@@ -35,7 +36,7 @@ function AuthMethodIcon({ provider }) {
|
|
|
35
36
|
}
|
|
36
37
|
export function ManageWalletModal({ ...props }) {
|
|
37
38
|
const { isOpen, onClose, isExternalWalletConnected, onExportPrivateKey, theme = "dark", userEmail, organizationName, } = props;
|
|
38
|
-
const { getSupportedAuthMethods, getLinkedAuthMethods, linkAuthMethod, linkEmail, loginWithOTP, requestOtpForEmailLink, unlinkAuthMethod, whoami, getMfaStatus,
|
|
39
|
+
const { getSupportedAuthMethods, getLinkedAuthMethods, linkAuthMethod, linkEmail, loginWithOTP, requestOtpForEmailLink, unlinkAuthMethod, whoami, getMfaStatus, verifyMfa, disableMfaWithSignedPayload, } = useAbstraxnWallet();
|
|
39
40
|
const [showLinkedProfilesList, setShowLinkedProfilesList] = useState(false);
|
|
40
41
|
const [supportedMethods, setSupportedMethods] = useState([]);
|
|
41
42
|
const [linkedMethods, setLinkedMethods] = useState([]);
|
|
@@ -53,21 +54,13 @@ export function ManageWalletModal({ ...props }) {
|
|
|
53
54
|
const [emailLinkResending, setEmailLinkResending] = useState(false);
|
|
54
55
|
const [emailLinkResendCooldown, setEmailLinkResendCooldown] = useState(0);
|
|
55
56
|
const emailLinkOtpInputsRef = useRef([]);
|
|
56
|
-
// MFA state
|
|
57
57
|
const [mfaStatus, setMfaStatus] = useState(null);
|
|
58
58
|
const [mfaLoading, setMfaLoading] = useState(false);
|
|
59
|
-
const [mfaError, setMfaError] = useState(null);
|
|
60
|
-
// MFA setup flow state (QR + secret + TOTP + backup codes)
|
|
61
59
|
const [showMfaSetupModal, setShowMfaSetupModal] = useState(false);
|
|
62
|
-
const [
|
|
63
|
-
const [mfaQrCode, setMfaQrCode] = useState(null);
|
|
64
|
-
const [mfaSecret, setMfaSecret] = useState(null);
|
|
60
|
+
const [showMfaBackupModal, setShowMfaBackupModal] = useState(false);
|
|
65
61
|
const [mfaSetupCode, setMfaSetupCode] = useState("");
|
|
66
62
|
const [mfaRecoveryCode, setMfaRecoveryCode] = useState("");
|
|
67
|
-
const
|
|
68
|
-
const [mfaSetupError, setMfaSetupError] = useState(null);
|
|
69
|
-
const [mfaBackupCodes, setMfaBackupCodes] = useState([]);
|
|
70
|
-
const [showMfaBackupModal, setShowMfaBackupModal] = useState(false);
|
|
63
|
+
const { canEnableMfaFlow, setupState, isLoading: mfaSetupLoading, error: mfaSetupError, start, goToSetup, goToVerify, goToRecovery, verifyCode, verifyRecoveryCode, reset, } = useEnableMfa();
|
|
71
64
|
const [mfaSecretCopied, setMfaSecretCopied] = useState(false);
|
|
72
65
|
const [mfaBackupCodesCopied, setMfaBackupCodesCopied] = useState(false);
|
|
73
66
|
const mfaSetupVerifyButtonRef = useRef(null);
|
|
@@ -81,6 +74,10 @@ export function ManageWalletModal({ ...props }) {
|
|
|
81
74
|
const [mfaDisableLoading, setMfaDisableLoading] = useState(false);
|
|
82
75
|
const [mfaDisableError, setMfaDisableError] = useState(null);
|
|
83
76
|
const mfaDisableVerifyButtonRef = useRef(null);
|
|
77
|
+
const hasFetchedMfaForOpenRef = useRef(false);
|
|
78
|
+
const hasFetchedLinkedProfilesForOpenRef = useRef(false);
|
|
79
|
+
const linkedProfilesFetchPromiseRef = useRef(null);
|
|
80
|
+
const mfaStatusRequestInFlightRef = useRef(false);
|
|
84
81
|
const showFeedback = useCallback((message, type = "success") => {
|
|
85
82
|
if (type === "error") {
|
|
86
83
|
setLinkUnlinkError(message);
|
|
@@ -91,35 +88,48 @@ export function ManageWalletModal({ ...props }) {
|
|
|
91
88
|
const fetchLinkedProfilesData = useCallback(async () => {
|
|
92
89
|
if (!getSupportedAuthMethods || !getLinkedAuthMethods || isExternalWalletConnected)
|
|
93
90
|
return;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const [supportedRes, linkedRes] = await Promise.all([
|
|
98
|
-
getSupportedAuthMethods(),
|
|
99
|
-
getLinkedAuthMethods(),
|
|
100
|
-
]);
|
|
101
|
-
const loginProvider = whoami?.loginProvider?.toLowerCase();
|
|
102
|
-
const supported = supportedRes.supportedMethods ?? [];
|
|
103
|
-
const filteredSupported = loginProvider != null && loginProvider !== ""
|
|
104
|
-
? supported.filter((method) => method.provider.toLowerCase() !== loginProvider)
|
|
105
|
-
: supported;
|
|
106
|
-
setSupportedMethods(filteredSupported);
|
|
107
|
-
setLinkedMethods(linkedRes.linkedMethods ?? []);
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
const msg = err instanceof Error ? normalizeErrorMessage(err.message) : "Failed to load auth methods";
|
|
111
|
-
setLinkedError(msg);
|
|
112
|
-
setSupportedMethods([]);
|
|
113
|
-
setLinkedMethods([]);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
setLinkedLoading(false);
|
|
91
|
+
if (linkedProfilesFetchPromiseRef.current) {
|
|
92
|
+
await linkedProfilesFetchPromiseRef.current;
|
|
93
|
+
return;
|
|
117
94
|
}
|
|
95
|
+
const fetchPromise = (async () => {
|
|
96
|
+
setLinkedLoading(true);
|
|
97
|
+
setLinkedError(null);
|
|
98
|
+
try {
|
|
99
|
+
const [supportedRes, linkedRes] = await Promise.all([
|
|
100
|
+
getSupportedAuthMethods(),
|
|
101
|
+
getLinkedAuthMethods(),
|
|
102
|
+
]);
|
|
103
|
+
const loginProvider = whoami?.loginProvider?.toLowerCase();
|
|
104
|
+
const supported = supportedRes.supportedMethods ?? [];
|
|
105
|
+
const filteredSupported = loginProvider != null && loginProvider !== ""
|
|
106
|
+
? supported.filter((method) => method.provider.toLowerCase() !== loginProvider)
|
|
107
|
+
: supported;
|
|
108
|
+
setSupportedMethods(filteredSupported);
|
|
109
|
+
setLinkedMethods(linkedRes.linkedMethods ?? []);
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
const msg = err instanceof Error ? normalizeErrorMessage(err.message) : "Failed to load auth methods";
|
|
113
|
+
setLinkedError(msg);
|
|
114
|
+
setSupportedMethods([]);
|
|
115
|
+
setLinkedMethods([]);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
setLinkedLoading(false);
|
|
119
|
+
}
|
|
120
|
+
})();
|
|
121
|
+
linkedProfilesFetchPromiseRef.current = fetchPromise;
|
|
122
|
+
await fetchPromise.finally(() => {
|
|
123
|
+
linkedProfilesFetchPromiseRef.current = null;
|
|
124
|
+
});
|
|
118
125
|
}, [getSupportedAuthMethods, getLinkedAuthMethods, isExternalWalletConnected, whoami]);
|
|
119
126
|
const handleOpenLinkedProfiles = useCallback(() => {
|
|
120
127
|
setShowLinkedProfilesList(true);
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
const hasLinkedProfilesData = supportedMethods.length > 0 || linkedMethods.length > 0;
|
|
129
|
+
if (!hasLinkedProfilesData && !linkedLoading) {
|
|
130
|
+
fetchLinkedProfilesData();
|
|
131
|
+
}
|
|
132
|
+
}, [fetchLinkedProfilesData, linkedLoading, linkedMethods.length, supportedMethods.length]);
|
|
123
133
|
const isProviderLinked = useCallback((provider) => {
|
|
124
134
|
return linkedMethods.some((m) => normalizeLinkedProvider(m.authProvider) === provider.toLowerCase());
|
|
125
135
|
}, [linkedMethods]);
|
|
@@ -280,33 +290,34 @@ export function ManageWalletModal({ ...props }) {
|
|
|
280
290
|
handleLinkEmailSubmit();
|
|
281
291
|
}
|
|
282
292
|
}, [emailLinkOtpCode, actionProvider, emailLinkResending, emailLinkError, handleLinkEmailSubmit]);
|
|
293
|
+
const mfaSetupStep = setupState?.step === "complete" || !setupState ? "setup" : setupState.step;
|
|
294
|
+
const mfaQrCode = setupState?.step === "setup" ? setupState.qrCode : null;
|
|
295
|
+
const mfaSecret = setupState?.step === "setup" ? setupState.secret : null;
|
|
296
|
+
const mfaBackupCodes = setupState?.step === "complete" ? setupState.backupCodes : [];
|
|
283
297
|
const refreshMfaStatus = useCallback(async () => {
|
|
284
|
-
if (!getMfaStatus)
|
|
298
|
+
if (!getMfaStatus || mfaStatusRequestInFlightRef.current)
|
|
285
299
|
return;
|
|
300
|
+
mfaStatusRequestInFlightRef.current = true;
|
|
286
301
|
setMfaLoading(true);
|
|
287
|
-
setMfaError(null);
|
|
288
302
|
try {
|
|
289
303
|
const status = await getMfaStatus();
|
|
290
304
|
setMfaStatus(status);
|
|
291
305
|
}
|
|
292
|
-
catch
|
|
293
|
-
|
|
294
|
-
setMfaError(msg);
|
|
306
|
+
catch {
|
|
307
|
+
setMfaStatus(null);
|
|
295
308
|
}
|
|
296
309
|
finally {
|
|
297
310
|
setMfaLoading(false);
|
|
311
|
+
mfaStatusRequestInFlightRef.current = false;
|
|
298
312
|
}
|
|
299
313
|
}, [getMfaStatus]);
|
|
300
314
|
const resetMfaSetupState = useCallback(() => {
|
|
301
|
-
setMfaSetupStep("setup");
|
|
302
|
-
setMfaQrCode(null);
|
|
303
|
-
setMfaSecret(null);
|
|
304
315
|
setMfaSetupCode("");
|
|
305
316
|
setMfaRecoveryCode("");
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}, []);
|
|
317
|
+
setShowMfaSetupModal(false);
|
|
318
|
+
setShowMfaBackupModal(false);
|
|
319
|
+
reset();
|
|
320
|
+
}, [reset]);
|
|
310
321
|
const resetMfaDisableState = useCallback(() => {
|
|
311
322
|
setShowMfaDisableAuthModal(false);
|
|
312
323
|
setShowMfaDisableConfirmModal(false);
|
|
@@ -388,74 +399,27 @@ export function ManageWalletModal({ ...props }) {
|
|
|
388
399
|
}
|
|
389
400
|
}, [disableMfaWithSignedPayload, refreshMfaStatus, resetMfaDisableState, showFeedback]);
|
|
390
401
|
const startMfaSetup = useCallback(async () => {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
setShowMfaSetupModal(true);
|
|
395
|
-
setMfaSetupLoading(true);
|
|
396
|
-
try {
|
|
397
|
-
const result = await enableMfa();
|
|
398
|
-
setMfaQrCode(result.qrCode);
|
|
399
|
-
setMfaSecret(result.secret);
|
|
402
|
+
const result = await start();
|
|
403
|
+
if (result) {
|
|
404
|
+
setShowMfaSetupModal(true);
|
|
400
405
|
}
|
|
401
|
-
|
|
402
|
-
const msg = err instanceof Error ? normalizeErrorMessage(err.message) : "Failed to enable MFA";
|
|
403
|
-
setMfaSetupError(msg);
|
|
404
|
-
setShowMfaSetupModal(false);
|
|
405
|
-
}
|
|
406
|
-
finally {
|
|
407
|
-
setMfaSetupLoading(false);
|
|
408
|
-
}
|
|
409
|
-
}, [enableMfa, resetMfaSetupState]);
|
|
406
|
+
}, [start]);
|
|
410
407
|
const handleVerifyMfaSetup = useCallback(async () => {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
const trimmed = mfaSetupCode.trim();
|
|
414
|
-
if (trimmed.length !== 6) {
|
|
415
|
-
setMfaSetupError("Please enter a 6-digit code");
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
setMfaSetupLoading(true);
|
|
419
|
-
setMfaSetupError(null);
|
|
420
|
-
try {
|
|
421
|
-
const result = await verifySetupMfa(trimmed);
|
|
422
|
-
setMfaBackupCodes(result.backupCodes || []);
|
|
408
|
+
const result = await verifyCode(mfaSetupCode);
|
|
409
|
+
if (result) {
|
|
423
410
|
setShowMfaSetupModal(false);
|
|
424
411
|
setShowMfaBackupModal(true);
|
|
425
|
-
|
|
412
|
+
setMfaSetupCode("");
|
|
426
413
|
showFeedback("MFA enabled successfully.", "success");
|
|
414
|
+
await refreshMfaStatus();
|
|
427
415
|
}
|
|
428
|
-
|
|
429
|
-
const msg = err instanceof Error ? normalizeErrorMessage(err.message) : "Invalid TOTP code";
|
|
430
|
-
setMfaSetupError(msg);
|
|
431
|
-
}
|
|
432
|
-
finally {
|
|
433
|
-
setMfaSetupLoading(false);
|
|
434
|
-
}
|
|
435
|
-
}, [verifySetupMfa, mfaSetupCode, refreshMfaStatus, showFeedback]);
|
|
416
|
+
}, [verifyCode, mfaSetupCode, showFeedback, refreshMfaStatus]);
|
|
436
417
|
const handleVerifyRecoveryCode = useCallback(async () => {
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
const trimmed = mfaRecoveryCode.trim().toUpperCase();
|
|
440
|
-
if (!/^[A-Z0-9]{8}$/.test(trimmed)) {
|
|
441
|
-
setMfaSetupError("Please enter a valid 8-character recovery code");
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
setMfaSetupLoading(true);
|
|
445
|
-
setMfaSetupError(null);
|
|
446
|
-
try {
|
|
447
|
-
await verifyMfa(trimmed);
|
|
448
|
-
setMfaSetupStep("verify");
|
|
418
|
+
const ok = await verifyRecoveryCode(mfaRecoveryCode);
|
|
419
|
+
if (ok) {
|
|
449
420
|
setMfaRecoveryCode("");
|
|
450
421
|
}
|
|
451
|
-
|
|
452
|
-
const msg = err instanceof Error ? normalizeErrorMessage(err.message) : "Invalid recovery code";
|
|
453
|
-
setMfaSetupError(msg);
|
|
454
|
-
}
|
|
455
|
-
finally {
|
|
456
|
-
setMfaSetupLoading(false);
|
|
457
|
-
}
|
|
458
|
-
}, [verifyMfa, mfaRecoveryCode]);
|
|
422
|
+
}, [verifyRecoveryCode, mfaRecoveryCode]);
|
|
459
423
|
const handleCopyMfaSecret = useCallback(() => {
|
|
460
424
|
if (!mfaSecret)
|
|
461
425
|
return;
|
|
@@ -542,8 +506,23 @@ export function ManageWalletModal({ ...props }) {
|
|
|
542
506
|
return () => clearInterval(id);
|
|
543
507
|
}, [emailLinkStep, emailLinkResendCooldown]);
|
|
544
508
|
useEffect(() => {
|
|
545
|
-
if (!isOpen || isExternalWalletConnected)
|
|
509
|
+
if (!isOpen || isExternalWalletConnected) {
|
|
510
|
+
hasFetchedLinkedProfilesForOpenRef.current = false;
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
if (hasFetchedLinkedProfilesForOpenRef.current)
|
|
514
|
+
return;
|
|
515
|
+
hasFetchedLinkedProfilesForOpenRef.current = true;
|
|
516
|
+
fetchLinkedProfilesData();
|
|
517
|
+
}, [isOpen, isExternalWalletConnected, fetchLinkedProfilesData]);
|
|
518
|
+
useEffect(() => {
|
|
519
|
+
if (!isOpen || isExternalWalletConnected) {
|
|
520
|
+
hasFetchedMfaForOpenRef.current = false;
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
if (hasFetchedMfaForOpenRef.current)
|
|
546
524
|
return;
|
|
525
|
+
hasFetchedMfaForOpenRef.current = true;
|
|
547
526
|
refreshMfaStatus();
|
|
548
527
|
}, [isOpen, isExternalWalletConnected, refreshMfaStatus]);
|
|
549
528
|
useEffect(() => {
|
|
@@ -559,10 +538,9 @@ export function ManageWalletModal({ ...props }) {
|
|
|
559
538
|
resetMfaSetupState();
|
|
560
539
|
}, children: _jsxs("div", { className: `wallet-modal-content wallet-modal-theme-${theme} wallet-modal-manage mfa-redesign-container`, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "wallet-modal-receive-header", children: [_jsx("button", { className: "wallet-modal-back", onClick: () => {
|
|
561
540
|
if (mfaSetupStep === "verify" || mfaSetupStep === "recovery") {
|
|
562
|
-
|
|
541
|
+
goToSetup();
|
|
563
542
|
setMfaSetupCode("");
|
|
564
543
|
setMfaRecoveryCode("");
|
|
565
|
-
setMfaSetupError(null);
|
|
566
544
|
return;
|
|
567
545
|
}
|
|
568
546
|
setShowMfaSetupModal(false);
|
|
@@ -572,10 +550,9 @@ export function ManageWalletModal({ ...props }) {
|
|
|
572
550
|
const label = userEmail ? `${issuer}:${userEmail}` : issuer;
|
|
573
551
|
return `otpauth://totp/${encodeURIComponent(label)}?secret=${mfaSecret}&issuer=${encodeURIComponent(issuer)}`;
|
|
574
552
|
})(), size: 160, level: "L", includeMargin: false }) })) : (_jsx("div", { className: "mfa-qr-placeholder", children: mfaSetupLoading ? "Generating QR..." : "QR Code" })), mfaSecret && (_jsxs("div", { className: "mfa-secret-display", children: [_jsx(IoKeyOutline, { size: 16, className: "mfa-secret-key-icon" }), _jsx("code", { className: "mfa-secret-code", children: mfaSecret }), _jsx("button", { type: "button", className: `mfa-secret-copy ${mfaSecretCopied ? "copied" : ""}`, onClick: handleCopyMfaSecret, children: mfaSecretCopied ? _jsx(IoCheckmarkOutline, { size: 18 }) : _jsx(IoCopyOutline, { size: 18 }) })] }))] }), _jsx("button", { type: "button", className: "mfa-verify-button", onClick: () => {
|
|
575
|
-
|
|
553
|
+
goToVerify();
|
|
576
554
|
setMfaSetupCode("");
|
|
577
555
|
setMfaRecoveryCode("");
|
|
578
|
-
setMfaSetupError(null);
|
|
579
556
|
}, disabled: mfaSetupLoading || !mfaSecret, children: "Continue" })] })) : mfaSetupStep === "verify" ? (_jsxs("div", { className: "mfa-verification-section", children: [_jsx("div", { className: "mfa-divider", children: _jsx("span", { children: "Enter 6-digit verification code" }) }), mfaSetupError && (_jsx("p", { className: "mfa-setup-error", style: { marginBottom: 12 }, children: mfaSetupError })), _jsx("div", { className: "mfa-otp-grid", children: [0, 1, 2, 3, 4, 5].map((index) => (_jsx("div", { className: "mfa-otp-slot", children: _jsx("input", { type: "text", inputMode: "numeric", maxLength: 1, value: mfaSetupCode[index] || "", onChange: (e) => {
|
|
580
557
|
const val = e.target.value.replace(/\D/g, "");
|
|
581
558
|
if (val) {
|
|
@@ -611,8 +588,7 @@ export function ManageWalletModal({ ...props }) {
|
|
|
611
588
|
}
|
|
612
589
|
}
|
|
613
590
|
}, className: "mfa-otp-input" }) }, index))) }), _jsx("p", { className: "mfa-refresh-text", children: "Code refreshes every 30 seconds" }), _jsx("button", { ref: mfaSetupVerifyButtonRef, type: "button", className: "mfa-verify-button", onClick: handleVerifyMfaSetup, disabled: mfaSetupLoading || mfaSetupCode.length !== 6, children: mfaSetupLoading ? "Verifying..." : "Verify & continue" }), _jsxs("p", { className: "mfa-trouble-text", children: ["Having trouble?", " ", _jsx("button", { type: "button", className: "mfa-link-button", onClick: () => {
|
|
614
|
-
|
|
615
|
-
setMfaSetupError(null);
|
|
591
|
+
goToRecovery();
|
|
616
592
|
setMfaRecoveryCode("");
|
|
617
593
|
}, children: "Use a recovery code" })] })] })) : (_jsxs("div", { className: "mfa-recovery-section", children: [_jsx("div", { className: "mfa-divider", children: _jsx("span", { children: "Enter 8 charater backup code" }) }), mfaSetupError && (_jsx("p", { className: "mfa-setup-error", style: { marginBottom: 12 }, children: mfaSetupError })), _jsx("input", { type: "text", inputMode: "text", maxLength: 8, value: mfaRecoveryCode, onChange: (e) => {
|
|
618
594
|
const val = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, "").slice(0, 8);
|
|
@@ -622,13 +598,13 @@ export function ManageWalletModal({ ...props }) {
|
|
|
622
598
|
if (showMfaBackupModal) {
|
|
623
599
|
return (_jsx("div", { className: `wallet-modal-overlay wallet-modal-theme-${theme}`, onClick: () => {
|
|
624
600
|
setShowMfaBackupModal(false);
|
|
625
|
-
|
|
601
|
+
reset();
|
|
626
602
|
}, children: _jsxs("div", { className: `wallet-modal-content wallet-modal-theme-${theme} wallet-modal-manage mfa-redesign-container`, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "wallet-modal-receive-header", children: [_jsx("button", { className: "wallet-modal-back", onClick: () => {
|
|
627
603
|
setShowMfaBackupModal(false);
|
|
628
|
-
|
|
604
|
+
reset();
|
|
629
605
|
}, "aria-label": "Back", children: _jsx(IoChevronBack, { size: 20 }) }), _jsx("h2", { className: "wallet-modal-receive-title", children: "Backup Codes" }), _jsx("button", { className: "wallet-modal-close", onClick: onClose, "aria-label": "Close", children: _jsx(IoClose, { size: 24 }) })] }), _jsxs("div", { className: "mfa-redesign-content", children: [_jsxs("div", { className: "mfa-info-box", children: [_jsx("div", { className: "mfa-info-icon", children: _jsx(IoKeyOutline, { size: 20 }) }), _jsx("p", { className: "mfa-info-text", children: "Backup codes can be used to access your account if you lose access to your primary authentication method. Store them securely as these codes will not be shown again." })] }), _jsx("div", { className: "wallet-modal-mfa-backup-heading", children: _jsx("span", { className: "wallet-modal-mfa-backup-heading-label", children: "Recovery Codes" }) }), _jsx("div", { className: "wallet-modal-mfa-backup-list", children: mfaBackupCodes.map((code, index) => (_jsx("div", { className: "wallet-modal-mfa-backup-code-wrapper", children: _jsx("code", { className: "wallet-modal-mfa-backup-code", children: code }) }, index))) }), _jsxs("div", { className: "wallet-modal-mfa-backup-actions", children: [_jsxs("button", { type: "button", className: `wallet-modal-mfa-backup-action-btn ${mfaBackupCodesCopied ? 'copied' : ''}`, onClick: handleCopyBackupCodes, disabled: !mfaBackupCodes.length, children: [mfaBackupCodesCopied ? _jsx(IoCheckmarkOutline, { size: 18 }) : _jsx(IoCopyOutline, { size: 18 }), mfaBackupCodesCopied ? "Copied" : "Copy All"] }), _jsxs("button", { type: "button", className: "wallet-modal-mfa-backup-action-btn", onClick: handleDownloadBackupCodes, disabled: !mfaBackupCodes.length, children: [_jsx(IoCloudDownloadOutline, { size: 18 }), "Download"] })] }), _jsx("button", { type: "button", className: "mfa-verify-button", onClick: () => {
|
|
630
606
|
setShowMfaBackupModal(false);
|
|
631
|
-
|
|
607
|
+
reset();
|
|
632
608
|
}, children: "I've saved these codes" })] })] }) }));
|
|
633
609
|
}
|
|
634
610
|
if (showMfaDisableAuthModal) {
|
|
@@ -723,7 +699,7 @@ export function ManageWalletModal({ ...props }) {
|
|
|
723
699
|
return (_jsx("div", { className: `wallet-modal-overlay wallet-modal-theme-${theme}`, onClick: onClose, children: _jsxs("div", { className: `wallet-modal-content wallet-modal-theme-${theme} wallet-modal-manage`, onClick: (e) => e.stopPropagation(), children: [_jsxs("div", { className: "wallet-modal-receive-header", children: [_jsx("button", { className: "wallet-modal-back", onClick: onClose, "aria-label": "Back", children: _jsx(IoChevronBack, { size: 20 }) }), _jsx("h2", { className: "wallet-modal-receive-title", children: "Manage Wallet" }), _jsx("button", { className: "wallet-modal-close", onClick: onClose, "aria-label": "Close", children: _jsx(IoClose, { size: 24 }) })] }), _jsx("div", { className: "wallet-modal-manage-content", children: _jsxs("div", { className: "wallet-modal-manage-list", children: [!isExternalWalletConnected && (_jsxs("button", { className: "wallet-modal-manage-list-item", onClick: handleOpenLinkedProfiles, type: "button", children: [_jsx("div", { className: "wallet-modal-manage-list-icon", "aria-hidden": "true", children: _jsx(FiUsers, { size: 20 }) }), _jsx("span", { className: "wallet-modal-manage-list-label", children: "Auth Methods" }), _jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", className: "wallet-modal-manage-list-arrow", "aria-hidden": "true", children: _jsx("path", { d: "M6 12L10 8L6 4", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })] })), !isExternalWalletConnected && (_jsxs("button", { className: "wallet-modal-manage-list-item", onClick: () => {
|
|
724
700
|
if (mfaLoading)
|
|
725
701
|
return;
|
|
726
|
-
if (!
|
|
702
|
+
if (!canEnableMfaFlow) {
|
|
727
703
|
return;
|
|
728
704
|
}
|
|
729
705
|
if (mfaStatus?.enabled) {
|