@oxyhq/services 14.1.0 → 15.0.0
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/lib/commonjs/index.js +0 -17
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/components/SignInAccountChooser.js +189 -0
- package/lib/commonjs/ui/components/SignInAccountChooser.js.map +1 -0
- package/lib/commonjs/ui/components/SignInModal.js +350 -131
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +340 -1547
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js +61 -64
- package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/commonjs/ui/hooks/useAuth.js +14 -33
- package/lib/commonjs/ui/hooks/useAuth.js.map +1 -1
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js +170 -0
- package/lib/commonjs/ui/hooks/usePasswordSignIn.js.map +1 -0
- package/lib/commonjs/ui/hooks/useProfileEditing.js +2 -5
- package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSessionManagement.js +2 -2
- package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +1 -0
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +93 -68
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/EditProfileScreen.js +187 -0
- package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +3 -7
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +231 -95
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +15 -2
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/linkFormat.js +38 -0
- package/lib/commonjs/ui/screens/linkFormat.js.map +1 -0
- package/lib/commonjs/ui/session/authStore.js +146 -0
- package/lib/commonjs/ui/session/authStore.js.map +1 -0
- package/lib/commonjs/ui/session/createSessionClient.js +23 -17
- package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
- package/lib/commonjs/ui/session/index.js +13 -7
- package/lib/commonjs/ui/session/index.js.map +1 -1
- package/lib/commonjs/ui/session/tokenTransport.js +19 -31
- package/lib/commonjs/ui/session/tokenTransport.js.map +1 -1
- package/lib/commonjs/ui/utils/isWebBrowser.js +13 -0
- package/lib/commonjs/ui/utils/isWebBrowser.js.map +1 -0
- package/lib/commonjs/utils/deviceFlowSignIn.js +13 -16
- package/lib/commonjs/utils/deviceFlowSignIn.js.map +1 -1
- package/lib/module/index.js +0 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/components/SignInAccountChooser.js +183 -0
- package/lib/module/ui/components/SignInAccountChooser.js.map +1 -0
- package/lib/module/ui/components/SignInModal.js +352 -134
- package/lib/module/ui/components/SignInModal.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +342 -1551
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/context/hooks/useAuthOperations.js +60 -63
- package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
- package/lib/module/ui/hooks/useAuth.js +14 -33
- package/lib/module/ui/hooks/useAuth.js.map +1 -1
- package/lib/module/ui/hooks/usePasswordSignIn.js +165 -0
- package/lib/module/ui/hooks/usePasswordSignIn.js.map +1 -0
- package/lib/module/ui/hooks/useProfileEditing.js +2 -5
- package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js +1 -1
- package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +1 -0
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +91 -66
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileScreen.js +182 -0
- package/lib/module/ui/screens/EditProfileScreen.js.map +1 -0
- package/lib/module/ui/screens/ManageAccountScreen.js +3 -7
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +233 -97
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +15 -2
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/linkFormat.js +31 -0
- package/lib/module/ui/screens/linkFormat.js.map +1 -0
- package/lib/module/ui/session/authStore.js +143 -0
- package/lib/module/ui/session/authStore.js.map +1 -0
- package/lib/module/ui/session/createSessionClient.js +22 -16
- package/lib/module/ui/session/createSessionClient.js.map +1 -1
- package/lib/module/ui/session/index.js +9 -9
- package/lib/module/ui/session/index.js.map +1 -1
- package/lib/module/ui/session/tokenTransport.js +20 -33
- package/lib/module/ui/session/tokenTransport.js.map +1 -1
- package/lib/module/ui/utils/isWebBrowser.js +11 -0
- package/lib/module/ui/utils/isWebBrowser.js.map +1 -0
- package/lib/module/utils/deviceFlowSignIn.js +14 -17
- package/lib/module/utils/deviceFlowSignIn.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +0 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts +29 -0
- package/lib/typescript/commonjs/ui/components/SignInAccountChooser.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +15 -10
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +36 -42
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +18 -23
- package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +0 -2
- package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts +31 -0
- package/lib/typescript/commonjs/ui/hooks/usePasswordSignIn.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts +0 -1
- package/lib/typescript/commonjs/ui/hooks/useProfileEditing.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts +14 -0
- package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts +13 -12
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/linkFormat.d.ts +23 -0
- package/lib/typescript/commonjs/ui/screens/linkFormat.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/session/authStore.d.ts +33 -0
- package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +19 -15
- package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/index.d.ts +9 -9
- package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts +13 -19
- package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/isWebBrowser.d.ts +9 -0
- package/lib/typescript/commonjs/ui/utils/isWebBrowser.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts +15 -13
- package/lib/typescript/commonjs/utils/deviceFlowSignIn.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +0 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts +29 -0
- package/lib/typescript/module/ui/components/SignInAccountChooser.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/SignInModal.d.ts +15 -10
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/OxyContext.d.ts +36 -42
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +18 -23
- package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +0 -2
- package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/useAuth.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts +31 -0
- package/lib/typescript/module/ui/hooks/usePasswordSignIn.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts +0 -1
- package/lib/typescript/module/ui/hooks/useProfileEditing.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts +14 -0
- package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts +1 -1
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts +13 -12
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/linkFormat.d.ts +23 -0
- package/lib/typescript/module/ui/screens/linkFormat.d.ts.map +1 -0
- package/lib/typescript/module/ui/session/authStore.d.ts +33 -0
- package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -0
- package/lib/typescript/module/ui/session/createSessionClient.d.ts +19 -15
- package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/index.d.ts +9 -9
- package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/session/tokenTransport.d.ts +13 -19
- package/lib/typescript/module/ui/session/tokenTransport.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/isWebBrowser.d.ts +9 -0
- package/lib/typescript/module/ui/utils/isWebBrowser.d.ts.map +1 -0
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts +15 -13
- package/lib/typescript/module/utils/deviceFlowSignIn.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +0 -4
- package/src/ui/components/SignInAccountChooser.tsx +162 -0
- package/src/ui/components/SignInModal.tsx +309 -139
- package/src/ui/context/OxyContext.tsx +532 -1785
- package/src/ui/context/hooks/useAuthOperations.ts +65 -76
- package/src/ui/hooks/useAuth.ts +14 -35
- package/src/ui/hooks/usePasswordSignIn.ts +207 -0
- package/src/ui/hooks/useProfileEditing.ts +2 -8
- package/src/ui/hooks/useSessionManagement.ts +1 -1
- package/src/ui/navigation/routes.ts +2 -0
- package/src/ui/screens/EditProfileFieldScreen.tsx +102 -66
- package/src/ui/screens/EditProfileScreen.tsx +155 -0
- package/src/ui/screens/ManageAccountScreen.tsx +3 -7
- package/src/ui/screens/OxyAuthScreen.tsx +259 -112
- package/src/ui/screens/ProfileScreen.tsx +15 -2
- package/src/ui/screens/__tests__/linkFormat.test.ts +73 -0
- package/src/ui/screens/linkFormat.ts +37 -0
- package/src/ui/session/__tests__/createSessionClient.test.ts +22 -7
- package/src/ui/session/__tests__/tokenTransport.test.ts +37 -49
- package/src/ui/session/authStore.ts +164 -0
- package/src/ui/session/createSessionClient.ts +30 -17
- package/src/ui/session/index.ts +10 -9
- package/src/ui/session/tokenTransport.ts +26 -36
- package/src/ui/utils/isWebBrowser.ts +8 -0
- package/src/utils/__tests__/deviceFlowSignIn.test.ts +50 -131
- package/src/utils/deviceFlowSignIn.ts +19 -26
- package/lib/commonjs/ui/context/inSessionTokenRefresh.js +0 -243
- package/lib/commonjs/ui/context/inSessionTokenRefresh.js.map +0 -1
- package/lib/commonjs/ui/context/silentSessionRestore.js +0 -56
- package/lib/commonjs/ui/context/silentSessionRestore.js.map +0 -1
- package/lib/commonjs/ui/hooks/useWebSSO.js +0 -28
- package/lib/commonjs/ui/hooks/useWebSSO.js.map +0 -1
- package/lib/commonjs/ui/session/projectSessionState.js +0 -86
- package/lib/commonjs/ui/session/projectSessionState.js.map +0 -1
- package/lib/commonjs/ui/session/sessionClientHost.js +0 -30
- package/lib/commonjs/ui/session/sessionClientHost.js.map +0 -1
- package/lib/commonjs/ui/utils/activeAuthuser.js +0 -142
- package/lib/commonjs/ui/utils/activeAuthuser.js.map +0 -1
- package/lib/commonjs/utils/crossApex.js +0 -74
- package/lib/commonjs/utils/crossApex.js.map +0 -1
- package/lib/module/ui/context/inSessionTokenRefresh.js +0 -238
- package/lib/module/ui/context/inSessionTokenRefresh.js.map +0 -1
- package/lib/module/ui/context/silentSessionRestore.js +0 -53
- package/lib/module/ui/context/silentSessionRestore.js.map +0 -1
- package/lib/module/ui/hooks/useWebSSO.js +0 -24
- package/lib/module/ui/hooks/useWebSSO.js.map +0 -1
- package/lib/module/ui/session/projectSessionState.js +0 -79
- package/lib/module/ui/session/projectSessionState.js.map +0 -1
- package/lib/module/ui/session/sessionClientHost.js +0 -26
- package/lib/module/ui/session/sessionClientHost.js.map +0 -1
- package/lib/module/ui/utils/activeAuthuser.js +0 -134
- package/lib/module/ui/utils/activeAuthuser.js.map +0 -1
- package/lib/module/utils/crossApex.js +0 -69
- package/lib/module/utils/crossApex.js.map +0 -1
- package/lib/typescript/commonjs/ui/context/inSessionTokenRefresh.d.ts +0 -106
- package/lib/typescript/commonjs/ui/context/inSessionTokenRefresh.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/context/silentSessionRestore.d.ts +0 -36
- package/lib/typescript/commonjs/ui/context/silentSessionRestore.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts +0 -19
- package/lib/typescript/commonjs/ui/hooks/useWebSSO.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/session/projectSessionState.d.ts +0 -45
- package/lib/typescript/commonjs/ui/session/projectSessionState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/session/sessionClientHost.d.ts +0 -14
- package/lib/typescript/commonjs/ui/session/sessionClientHost.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts +0 -67
- package/lib/typescript/commonjs/ui/utils/activeAuthuser.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/crossApex.d.ts +0 -55
- package/lib/typescript/commonjs/utils/crossApex.d.ts.map +0 -1
- package/lib/typescript/module/ui/context/inSessionTokenRefresh.d.ts +0 -106
- package/lib/typescript/module/ui/context/inSessionTokenRefresh.d.ts.map +0 -1
- package/lib/typescript/module/ui/context/silentSessionRestore.d.ts +0 -36
- package/lib/typescript/module/ui/context/silentSessionRestore.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts +0 -19
- package/lib/typescript/module/ui/hooks/useWebSSO.d.ts.map +0 -1
- package/lib/typescript/module/ui/session/projectSessionState.d.ts +0 -45
- package/lib/typescript/module/ui/session/projectSessionState.d.ts.map +0 -1
- package/lib/typescript/module/ui/session/sessionClientHost.d.ts +0 -14
- package/lib/typescript/module/ui/session/sessionClientHost.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/activeAuthuser.d.ts +0 -67
- package/lib/typescript/module/ui/utils/activeAuthuser.d.ts.map +0 -1
- package/lib/typescript/module/utils/crossApex.d.ts +0 -55
- package/lib/typescript/module/utils/crossApex.d.ts.map +0 -1
- package/src/ui/context/inSessionTokenRefresh.ts +0 -264
- package/src/ui/context/silentSessionRestore.ts +0 -53
- package/src/ui/hooks/useWebSSO.ts +0 -23
- package/src/ui/session/__tests__/projectSessionState.test.ts +0 -114
- package/src/ui/session/__tests__/sessionClientHost.test.ts +0 -43
- package/src/ui/session/projectSessionState.ts +0 -85
- package/src/ui/session/sessionClientHost.ts +0 -27
- package/src/ui/utils/activeAuthuser.ts +0 -142
- package/src/utils/crossApex.ts +0 -75
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.usePasswordSignIn = usePasswordSignIn;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _OxyContext = require("../context/OxyContext.js");
|
|
9
|
+
var _errorHandlers = require("../utils/errorHandlers.js");
|
|
10
|
+
/**
|
|
11
|
+
* `usePasswordSignIn` — the first-party password sign-in state machine.
|
|
12
|
+
*
|
|
13
|
+
* Drives the in-app "Sign in with Oxy" password flow shared by the web
|
|
14
|
+
* `SignInModal` and the native `OxyAuthScreen`: identifier → password → optional
|
|
15
|
+
* two-factor. It is a thin UI state machine over the context methods
|
|
16
|
+
* `signInWithPassword` + `completeTwoFactorSignIn` (which own the network call,
|
|
17
|
+
* the persisted-refresh commit, and the device-set registration) — so both
|
|
18
|
+
* surfaces present an identical flow without re-implementing any transport.
|
|
19
|
+
*
|
|
20
|
+
* On a committed session `onSignedIn` fires (the modal/screen closes); the
|
|
21
|
+
* device-first cold boot / SessionClient projection then drive the app into the
|
|
22
|
+
* authenticated state.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
function usePasswordSignIn(options = {}) {
|
|
26
|
+
const {
|
|
27
|
+
signInWithPassword,
|
|
28
|
+
completeTwoFactorSignIn
|
|
29
|
+
} = (0, _OxyContext.useOxy)();
|
|
30
|
+
const {
|
|
31
|
+
onSignedIn
|
|
32
|
+
} = options;
|
|
33
|
+
const [step, setStep] = (0, _react.useState)('identifier');
|
|
34
|
+
const [identifier, setIdentifier] = (0, _react.useState)('');
|
|
35
|
+
const [password, setPassword] = (0, _react.useState)('');
|
|
36
|
+
const [code, setCode] = (0, _react.useState)('');
|
|
37
|
+
const [useBackupCode, setUseBackupCode] = (0, _react.useState)(false);
|
|
38
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
39
|
+
const [isSubmitting, setIsSubmitting] = (0, _react.useState)(false);
|
|
40
|
+
const [loginToken, setLoginToken] = (0, _react.useState)(null);
|
|
41
|
+
|
|
42
|
+
// Synchronous in-flight guard. `isSubmitting` state drives the UI, but a rapid
|
|
43
|
+
// double-tap fires both handlers in the SAME tick — before React re-renders —
|
|
44
|
+
// so a state read would still see `false` on the second call and double-fire
|
|
45
|
+
// the network request (rate-limit + race). This ref is set/checked
|
|
46
|
+
// synchronously, so the second call is a true no-op.
|
|
47
|
+
const submittingRef = (0, _react.useRef)(false);
|
|
48
|
+
const surfaceError = (0, _react.useCallback)((err, defaultMessage) => {
|
|
49
|
+
setError((0, _errorHandlers.handleAuthError)(err, {
|
|
50
|
+
defaultMessage,
|
|
51
|
+
code: 'PASSWORD_SIGN_IN_ERROR'
|
|
52
|
+
}));
|
|
53
|
+
}, []);
|
|
54
|
+
const submitIdentifier = (0, _react.useCallback)(() => {
|
|
55
|
+
if (!identifier.trim()) {
|
|
56
|
+
setError('Enter your username or email');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
setError(null);
|
|
60
|
+
setStep('password');
|
|
61
|
+
}, [identifier]);
|
|
62
|
+
const submitPassword = (0, _react.useCallback)(async () => {
|
|
63
|
+
// A second call while one is already in flight is a no-op (double-tap guard).
|
|
64
|
+
if (submittingRef.current) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!password) {
|
|
68
|
+
setError('Enter your password');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
setError(null);
|
|
72
|
+
submittingRef.current = true;
|
|
73
|
+
setIsSubmitting(true);
|
|
74
|
+
try {
|
|
75
|
+
const result = await signInWithPassword(identifier.trim(), password);
|
|
76
|
+
if (result.status === '2fa_required') {
|
|
77
|
+
setLoginToken(result.loginToken);
|
|
78
|
+
setCode('');
|
|
79
|
+
setUseBackupCode(false);
|
|
80
|
+
setStep('twoFactor');
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
onSignedIn?.();
|
|
84
|
+
} catch (err) {
|
|
85
|
+
surfaceError(err, 'Sign in failed');
|
|
86
|
+
} finally {
|
|
87
|
+
submittingRef.current = false;
|
|
88
|
+
setIsSubmitting(false);
|
|
89
|
+
}
|
|
90
|
+
}, [identifier, password, signInWithPassword, onSignedIn, surfaceError]);
|
|
91
|
+
const submitTwoFactor = (0, _react.useCallback)(async () => {
|
|
92
|
+
// A second call while one is already in flight is a no-op (double-tap guard).
|
|
93
|
+
if (submittingRef.current) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!loginToken) {
|
|
97
|
+
setError('Your sign-in session expired. Start again.');
|
|
98
|
+
setStep('password');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (!code.trim()) {
|
|
102
|
+
setError(useBackupCode ? 'Enter a backup code' : 'Enter your 6-digit code');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
setError(null);
|
|
106
|
+
submittingRef.current = true;
|
|
107
|
+
setIsSubmitting(true);
|
|
108
|
+
try {
|
|
109
|
+
await completeTwoFactorSignIn({
|
|
110
|
+
loginToken,
|
|
111
|
+
...(useBackupCode ? {
|
|
112
|
+
backupCode: code.trim()
|
|
113
|
+
} : {
|
|
114
|
+
token: code.trim()
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
onSignedIn?.();
|
|
118
|
+
} catch (err) {
|
|
119
|
+
surfaceError(err, 'Verification failed');
|
|
120
|
+
} finally {
|
|
121
|
+
submittingRef.current = false;
|
|
122
|
+
setIsSubmitting(false);
|
|
123
|
+
}
|
|
124
|
+
}, [loginToken, code, useBackupCode, completeTwoFactorSignIn, onSignedIn, surfaceError]);
|
|
125
|
+
const back = (0, _react.useCallback)(() => {
|
|
126
|
+
setError(null);
|
|
127
|
+
setStep(current => {
|
|
128
|
+
if (current === 'twoFactor') {
|
|
129
|
+
setLoginToken(null);
|
|
130
|
+
setCode('');
|
|
131
|
+
return 'password';
|
|
132
|
+
}
|
|
133
|
+
if (current === 'password') {
|
|
134
|
+
setPassword('');
|
|
135
|
+
return 'identifier';
|
|
136
|
+
}
|
|
137
|
+
return current;
|
|
138
|
+
});
|
|
139
|
+
}, []);
|
|
140
|
+
const reset = (0, _react.useCallback)(() => {
|
|
141
|
+
setStep('identifier');
|
|
142
|
+
setIdentifier('');
|
|
143
|
+
setPassword('');
|
|
144
|
+
setCode('');
|
|
145
|
+
setUseBackupCode(false);
|
|
146
|
+
setLoginToken(null);
|
|
147
|
+
setError(null);
|
|
148
|
+
submittingRef.current = false;
|
|
149
|
+
setIsSubmitting(false);
|
|
150
|
+
}, []);
|
|
151
|
+
return (0, _react.useMemo)(() => ({
|
|
152
|
+
step,
|
|
153
|
+
identifier,
|
|
154
|
+
setIdentifier,
|
|
155
|
+
password,
|
|
156
|
+
setPassword,
|
|
157
|
+
code,
|
|
158
|
+
setCode,
|
|
159
|
+
useBackupCode,
|
|
160
|
+
setUseBackupCode,
|
|
161
|
+
error,
|
|
162
|
+
isSubmitting,
|
|
163
|
+
submitIdentifier,
|
|
164
|
+
submitPassword,
|
|
165
|
+
submitTwoFactor,
|
|
166
|
+
back,
|
|
167
|
+
reset
|
|
168
|
+
}), [step, identifier, password, code, useBackupCode, error, isSubmitting, submitIdentifier, submitPassword, submitTwoFactor, back, reset]);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=usePasswordSignIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_OxyContext","_errorHandlers","usePasswordSignIn","options","signInWithPassword","completeTwoFactorSignIn","useOxy","onSignedIn","step","setStep","useState","identifier","setIdentifier","password","setPassword","code","setCode","useBackupCode","setUseBackupCode","error","setError","isSubmitting","setIsSubmitting","loginToken","setLoginToken","submittingRef","useRef","surfaceError","useCallback","err","defaultMessage","handleAuthError","submitIdentifier","trim","submitPassword","current","result","status","submitTwoFactor","backupCode","token","back","reset","useMemo"],"sourceRoot":"../../../../src","sources":["ui/hooks/usePasswordSignIn.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -36,11 +36,8 @@ const useProfileEditing = () => {
|
|
|
36
36
|
if (updates.bio !== undefined) {
|
|
37
37
|
updateData.bio = updates.bio;
|
|
38
38
|
}
|
|
39
|
-
if (updates.
|
|
40
|
-
updateData.
|
|
41
|
-
if (updates.locations) {
|
|
42
|
-
updateData.locations = updates.locations;
|
|
43
|
-
}
|
|
39
|
+
if (updates.locations !== undefined) {
|
|
40
|
+
updateData.locations = updates.locations;
|
|
44
41
|
}
|
|
45
42
|
if (updates.links !== undefined) {
|
|
46
43
|
updateData.links = updates.links;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_useAccountMutations","_authStore","isProfileLocationArray","value","Array","isArray","every","item","isProfileLinkMetadataArray","useProfileEditing","updateProfileMutation","useUpdateProfile","saveProfile","useCallback","updates","updateData","username","undefined","email","bio","
|
|
1
|
+
{"version":3,"names":["_react","require","_useAccountMutations","_authStore","isProfileLocationArray","value","Array","isArray","every","item","isProfileLinkMetadataArray","useProfileEditing","updateProfileMutation","useUpdateProfile","saveProfile","useCallback","updates","updateData","username","undefined","email","bio","locations","links","linksMetadata","avatar","phone","address","birthday","firstName","lastName","currentUser","useAuthStore","getState","user","currentName","name","first","last","mutateAsync","error","updateField","field","map","link","url","isSaving","isPending","exports"],"sourceRoot":"../../../../src","sources":["ui/hooks/useProfileEditing.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,7 +10,7 @@ var _sessionHelpers = require("../utils/sessionHelpers.js");
|
|
|
10
10
|
var _storageHelpers = require("../utils/storageHelpers.js");
|
|
11
11
|
var _errorHandlers = require("../utils/errorHandlers.js");
|
|
12
12
|
var _queryClient = require("./queryClient.js");
|
|
13
|
-
var
|
|
13
|
+
var _isWebBrowser = require("../utils/isWebBrowser.js");
|
|
14
14
|
const DEFAULT_SAVE_ERROR_MESSAGE = 'Failed to save session data';
|
|
15
15
|
const CLEAR_STORAGE_ERROR = 'Failed to clear storage';
|
|
16
16
|
|
|
@@ -176,7 +176,7 @@ const useSessionManagement = ({
|
|
|
176
176
|
// is server-authoritative via `SessionClient` now. The native path
|
|
177
177
|
// arrives here only after a bearer has been planted by
|
|
178
178
|
// `claimSessionByToken` or secure shared-session restore.
|
|
179
|
-
if ((0,
|
|
179
|
+
if ((0, _isWebBrowser.isWebBrowser)() && !oxyServices.getAccessToken()) {
|
|
180
180
|
throw new Error('Session is invalid or expired');
|
|
181
181
|
}
|
|
182
182
|
const validation = await oxyServices.validateSession(sessionId, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_core","_sessionHelpers","_storageHelpers","_errorHandlers","_queryClient","
|
|
1
|
+
{"version":3,"names":["_react","require","_core","_sessionHelpers","_storageHelpers","_errorHandlers","_queryClient","_isWebBrowser","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","useState","activeSessionId","setActiveSessionId","sessionsRef","useRef","current","activeSessionIdRef","refreshInFlightRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","useMemo","getStorageKeys","saveSessionIds","useCallback","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","isDev","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","mergeSessions","normalizeAndSortSessions","map","session","sessionId","preserveSessionIds","sessionsArraysEqual","saveActiveSessionId","handleAuthError","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clearTokens","clear","clearQueryCache","activateSession","user","removalTimerIdsRef","trackRemovedSession","add","timerId","setTimeout","delete","useEffect","forEach","clearTimeout","switchSession","isWebBrowser","getAccessToken","Error","validation","validateSession","useHeaderValidation","valid","deviceSessions","fetchSessionsWithFallback","fallbackUserId","id","invalidSession","isInvalidSessionError","filter","refreshSessions","activeUserId","now","Date","refreshPromise","isRefreshInFlight","Boolean","exports"],"sourceRoot":"../../../../src","sources":["ui/hooks/useSessionManagement.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAGA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAGA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AA+BA,MAAMO,0BAA0B,GAAG,6BAA6B;AAChE,MAAMC,mBAAmB,GAAG,yBAAyB;;AAErD;AACA;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,WAAW;EACXC,OAAO;EACPC,gBAAgB;EAChBC,YAAY;EACZC,WAAW;EACXC,uBAAuB;EACvBC,iBAAiB;EACjBC,OAAO;EACPC,YAAY;EACZC,MAAM;EACNC,aAAa;EACbC;AAC2B,CAAC,KAAiC;EAC7D,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAkB,EAAE,CAAC;EAC7D,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAF,eAAQ,EAAgB,IAAI,CAAC;;EAE3E;EACA,MAAMG,WAAW,GAAG,IAAAC,aAAM,EAACN,QAAQ,CAAC;EACpCK,WAAW,CAACE,OAAO,GAAGP,QAAQ;EAC9B,MAAMQ,kBAAkB,GAAG,IAAAF,aAAM,EAACH,eAAe,CAAC;EAClDK,kBAAkB,CAACD,OAAO,GAAGJ,eAAe;EAE5C,MAAMM,kBAAkB,GAAG,IAAAH,aAAM,EAAuB,IAAI,CAAC;EAC7D,MAAMI,kBAAkB,GAAG,IAAAJ,aAAM,EAAc,IAAIK,GAAG,CAAC,CAAC,CAAC;EACzD,MAAMC,cAAc,GAAG,IAAAN,aAAM,EAAS,CAAC,CAAC;EAExC,MAAMO,WAAW,GAAG,IAAAC,cAAO,EAAC,MAAM,IAAAC,8BAAc,EAACzB,gBAAgB,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEvF,MAAM0B,cAAc,GAAG,IAAAC,kBAAW,EAChC,MAAOC,UAAoB,IAAoB;IAC7C,IAAI,CAAC7B,OAAO,EAAE;IACd,IAAI;MACF,MAAM8B,SAAS,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAIV,GAAG,CAACO,UAAU,CAAC,CAAC;MACjD,MAAM7B,OAAO,CAACiC,OAAO,CAACT,WAAW,CAACK,UAAU,EAAEK,IAAI,CAACC,SAAS,CAACL,SAAS,CAAC,CAAC;IAC1E,CAAC,CAAC,OAAOM,KAAK,EAAE;MACd,IAAI5B,MAAM,EAAE;QACVA,MAAM,CAACZ,0BAA0B,EAAEwC,KAAK,CAAC;MAC3C,CAAC,MAAM,IAAI,IAAAC,WAAK,EAAC,CAAC,EAAE;QAClBC,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAEH,KAAK,CAAC;MACpD;IACF;EACF,CAAC,EACD,CAAC5B,MAAM,EAAER,OAAO,EAAEwB,WAAW,CAACK,UAAU,CAC1C,CAAC;EAED,MAAMW,cAAc,GAAG,IAAAZ,kBAAW,EAChC,CAACa,QAAyB,EAAEC,OAA2D,GAAG,CAAC,CAAC,KAAW;IACrG9B,WAAW,CAAE+B,YAAY,IAAK;MAC5B,MAAMC,SAAS,GAAGF,OAAO,CAACG,KAAK,GAC3B,IAAAC,mBAAa,EAACH,YAAY,EAAEF,QAAQ,EAAEtB,kBAAkB,CAACD,OAAO,EAAE,KAAK,CAAC,GACxE,IAAA6B,8BAAwB,EAACN,QAAQ,EAAEtB,kBAAkB,CAACD,OAAO,EAAE,KAAK,CAAC;MAEzE,IAAIlB,OAAO,EAAE;QACX,KAAK2B,cAAc,CAAC,CAClB,GAAGiB,SAAS,CAACI,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAAC,EAChD,IAAIR,OAAO,CAACS,kBAAkB,IAAI,EAAE,CAAC,CACtC,CAAC;MACJ;MAEA,IAAI,IAAAC,yBAAmB,EAACT,YAAY,EAAEC,SAAS,CAAC,EAAE;QAChD,OAAOD,YAAY;MACrB;MACA,OAAOC,SAAS;IAClB,CAAC,CAAC;EACJ,CAAC,EACD,CAACjB,cAAc,EAAE3B,OAAO,CAC1B,CAAC;EAED,MAAMqD,mBAAmB,GAAG,IAAAzB,kBAAW,EACrC,MAAOsB,SAAiB,IAAoB;IAC1C,IAAI,CAAClD,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAACiC,OAAO,CAACT,WAAW,CAACV,eAAe,EAAEoC,SAAS,CAAC;IAC/D,CAAC,CAAC,OAAOd,KAAK,EAAE;MACd,IAAAkB,8BAAe,EAAClB,KAAK,EAAE;QACrBmB,cAAc,EAAE3D,0BAA0B;QAC1C4D,IAAI,EAAE,2BAA2B;QACjClD,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEwB,WAAW,CAACV,eAAe,CACtE,CAAC;EAED,MAAM2C,qBAAqB,GAAG,IAAA7B,kBAAW,EAAC,YAA2B;IACnE,IAAI,CAAC5B,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAAC0D,UAAU,CAAClC,WAAW,CAACV,eAAe,CAAC;IACvD,CAAC,CAAC,OAAOsB,KAAK,EAAE;MACd,IAAAkB,8BAAe,EAAClB,KAAK,EAAE;QACrBmB,cAAc,EAAE3D,0BAA0B;QAC1C4D,IAAI,EAAE,2BAA2B;QACjClD,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEwB,WAAW,CAACV,eAAe,CAAC,CAAC;EAEzE,MAAM6C,mBAAmB,GAAG,IAAA/B,kBAAW,EAAC,YAA2B;IACjE,IAAI,CAAC5B,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAAC0D,UAAU,CAAClC,WAAW,CAACV,eAAe,CAAC;MACrD,MAAMd,OAAO,CAAC0D,UAAU,CAAClC,WAAW,CAACK,UAAU,CAAC;MAChD;IACF,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd,IAAAkB,8BAAe,EAAClB,KAAK,EAAE;QACrBmB,cAAc,EAAE1D,mBAAmB;QACnC2D,IAAI,EAAE,eAAe;QACrBlD,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEwB,WAAW,CAACV,eAAe,EAAEU,WAAW,CAACK,UAAU,CAAC,CAAC;EAEjG,MAAM+B,iBAAiB,GAAG,IAAAhC,kBAAW,EAAC,YAA2B;IAC/DhB,WAAW,CAAC,EAAE,CAAC;IACfG,kBAAkB,CAAC,IAAI,CAAC;IACxBZ,WAAW,CAAC,CAAC;;IAEb;IACA;IACA;IACA;IACA;IACA;IACAJ,WAAW,CAAC8D,WAAW,CAAC,CAAC;;IAEzB;IACA,IAAInD,WAAW,EAAE;MACfA,WAAW,CAACoD,KAAK,CAAC,CAAC;IACrB;;IAEA;IACA,IAAI9D,OAAO,EAAE;MACX,IAAI;QACF,MAAM,IAAA+D,4BAAe,EAAC/D,OAAO,CAAC;MAChC,CAAC,CAAC,OAAOoC,KAAK,EAAE;QACd,IAAI5B,MAAM,EAAE;UACVA,MAAM,CAAC,uCAAuC,EAAE4B,KAAK,CAAC;QACxD;MACF;IACF;IAEA,MAAMuB,mBAAmB,CAAC,CAAC;IAC3BtD,iBAAiB,GAAG,IAAI,CAAC;EAC3B,CAAC,EAAE,CAACsD,mBAAmB,EAAExD,WAAW,EAAEE,iBAAiB,EAAEN,WAAW,EAAEW,WAAW,EAAEV,OAAO,EAAEQ,MAAM,CAAC,CAAC;EAEpG,MAAMwD,eAAe,GAAG,IAAApC,kBAAW,EACjC,OAAOsB,SAAiB,EAAEe,IAAU,KAAoB;IACtDxD,aAAa,GAAG,IAAI,CAAC;IACrBM,kBAAkB,CAACmC,SAAS,CAAC;IAC7BhD,YAAY,CAAC+D,IAAI,CAAC;IAClB,MAAMZ,mBAAmB,CAACH,SAAS,CAAC;IACpC,MAAM9C,uBAAuB,CAAC6D,IAAI,CAAC;IACnC5D,iBAAiB,GAAG4D,IAAI,CAAC;EAC3B,CAAC,EACD,CAAC7D,uBAAuB,EAAEF,YAAY,EAAEG,iBAAiB,EAAEgD,mBAAmB,EAAE5C,aAAa,CAC/F,CAAC;EAED,MAAMyD,kBAAkB,GAAG,IAAAjD,aAAM,EAAqC,IAAIK,GAAG,CAAC,CAAC,CAAC;EAEhF,MAAM6C,mBAAmB,GAAG,IAAAvC,kBAAW,EAAEsB,SAAiB,IAAK;IAC7D7B,kBAAkB,CAACH,OAAO,CAACkD,GAAG,CAAClB,SAAS,CAAC;IACzC,MAAMmB,OAAO,GAAGC,UAAU,CAAC,MAAM;MAC/BjD,kBAAkB,CAACH,OAAO,CAACqD,MAAM,CAACrB,SAAS,CAAC;MAC5CgB,kBAAkB,CAAChD,OAAO,CAACqD,MAAM,CAACF,OAAO,CAAC;IAC5C,CAAC,EAAE,IAAI,CAAC;IACRH,kBAAkB,CAAChD,OAAO,CAACkD,GAAG,CAACC,OAAO,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAG,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXN,kBAAkB,CAAChD,OAAO,CAACuD,OAAO,CAACC,YAAY,CAAC;IAClD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,aAAa,GAAG,IAAA/C,kBAAW,EAC/B,MAAOsB,SAAiB,IAAoB;IAC1C,IAAI;MACF;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAI,IAAA0B,0BAAY,EAAC,CAAC,IAAI,CAAC7E,WAAW,CAAC8E,cAAc,CAAC,CAAC,EAAE;QACnD,MAAM,IAAIC,KAAK,CAAC,+BAA+B,CAAC;MAClD;MAEA,MAAMC,UAAU,GAAG,MAAMhF,WAAW,CAACiF,eAAe,CAAC9B,SAAS,EAAE;QAAE+B,mBAAmB,EAAE;MAAK,CAAC,CAAC;MAC9F,IAAI,CAACF,UAAU,EAAEG,KAAK,EAAE;QACtB,MAAM,IAAIJ,KAAK,CAAC,+BAA+B,CAAC;MAClD;MAEA,IAAI,CAACC,UAAU,CAACd,IAAI,EAAE;QACpB,MAAM,IAAIa,KAAK,CAAC,iDAAiD,CAAC;MACpE;MAEA,MAAMb,IAAI,GAAGc,UAAU,CAACd,IAAY;MACpC,MAAMD,eAAe,CAACd,SAAS,EAAEe,IAAI,CAAC;MAEtC,IAAI;QACF,MAAMkB,cAAc,GAAG,MAAM,IAAAC,yCAAyB,EAACrF,WAAW,EAAEmD,SAAS,EAAE;UAC7EmC,cAAc,EAAEpB,IAAI,CAACqB,EAAE;UACvB9E;QACF,CAAC,CAAC;QACFgC,cAAc,CAAC2C,cAAc,EAAE;UAAEtC,KAAK,EAAE;QAAK,CAAC,CAAC;MACjD,CAAC,CAAC,OAAOT,KAAK,EAAE;QACd,IAAI,IAAAC,WAAK,EAAC,CAAC,EAAE;UACXC,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAEH,KAAK,CAAC;QACrE;MACF;MAEA,OAAO6B,IAAI;IACb,CAAC,CAAC,OAAO7B,KAAK,EAAE;MACd,MAAMmD,cAAc,GAAG,IAAAC,oCAAqB,EAACpD,KAAK,CAAC;MAEnD,IAAImD,cAAc,EAAE;QAClB;QACA;QACA;QACA/C,cAAc,CAACxB,WAAW,CAACE,OAAO,CAACuE,MAAM,CAAExC,OAAO,IAAKA,OAAO,CAACC,SAAS,KAAKA,SAAS,CAAC,EAAE;UACvFL,KAAK,EAAE;QACT,CAAC,CAAC;MACJ;MAEA,IAAAS,8BAAe,EAAClB,KAAK,EAAE;QACrBmB,cAAc,EAAE,0BAA0B;QAC1CC,IAAI,EAAE+B,cAAc,GAAG,iBAAiB,GAAG,sBAAsB;QACjEjF,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;MACF,MAAM4B,KAAK,YAAY0C,KAAK,GAAG1C,KAAK,GAAG,IAAI0C,KAAK,CAAC,0BAA0B,CAAC;IAC9E;EACF,CAAC,EACD,CACEd,eAAe,EACfxD,MAAM,EACNF,OAAO,EACPP,WAAW,EACXQ,YAAY,EACZiC,cAAc,CAElB,CAAC;EAED,MAAMkD,eAAe,GAAG,IAAA9D,kBAAW,EACjC,MAAO+D,YAAqB,IAAoB;IAC9C;IACA;IACA;IACA,MAAM7E,eAAe,GAAGK,kBAAkB,CAACD,OAAO;IAClD,IAAI,CAACJ,eAAe,EAAE;IAEtB,IAAIM,kBAAkB,CAACF,OAAO,EAAE;MAC9B,MAAME,kBAAkB,CAACF,OAAO;MAChC;IACF;IAEA,MAAM0E,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;IACtB,IAAIA,GAAG,GAAGrE,cAAc,CAACL,OAAO,GAAG,GAAG,EAAE;MACtC;IACF;IACAK,cAAc,CAACL,OAAO,GAAG0E,GAAG;IAE5B,MAAME,cAAc,GAAG,CAAC,YAAY;MAClC,IAAI;QACF,MAAMX,cAAc,GAAG,MAAM,IAAAC,yCAAyB,EAACrF,WAAW,EAAEe,eAAe,EAAE;UACnFuE,cAAc,EAAEM,YAAY;UAC5BnF;QACF,CAAC,CAAC;QACFgC,cAAc,CAAC2C,cAAc,EAAE;UAAEtC,KAAK,EAAE;QAAK,CAAC,CAAC;MACjD,CAAC,CAAC,OAAOT,KAAK,EAAE;QACd,IAAI,IAAAoD,oCAAqB,EAACpD,KAAK,CAAC,EAAE;UAChC;UACA;UACA;UACA,MAAMwB,iBAAiB,CAAC,CAAC;UACzB;QACF;QAEA,IAAAN,8BAAe,EAAClB,KAAK,EAAE;UACrBmB,cAAc,EAAE,4BAA4B;UAC5CC,IAAI,EAAE,uBAAuB;UAC7BlD,OAAO;UACPC,YAAY;UACZC;QACF,CAAC,CAAC;MACJ,CAAC,SAAS;QACRY,kBAAkB,CAACF,OAAO,GAAG,IAAI;QACjCK,cAAc,CAACL,OAAO,GAAG2E,IAAI,CAACD,GAAG,CAAC,CAAC;MACrC;IACF,CAAC,EAAE,CAAC;IAEJxE,kBAAkB,CAACF,OAAO,GAAG4E,cAAc;IAC3C,MAAMA,cAAc;EACtB,CAAC,EACD,CACElC,iBAAiB,EACjBpD,MAAM,EACNF,OAAO,EACPP,WAAW,EACXQ,YAAY,EACZiC,cAAc,CAElB,CAAC;EAED,MAAMuD,iBAAiB,GAAGC,OAAO,CAAC5E,kBAAkB,CAACF,OAAO,CAAC;EAE7D,OAAO;IACLP,QAAQ;IACRG,eAAe;IACfC,kBAAkB;IAClByB,cAAc;IACdmC,aAAa;IACbe,eAAe;IACf9B,iBAAiB;IACjBP,mBAAmB;IACnBc,mBAAmB;IACnB3C,WAAW;IACXuE;EACF,CAAC;AACH,CAAC;AAACE,OAAA,CAAAnG,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -34,6 +34,7 @@ const screenLoaders = {
|
|
|
34
34
|
UserLinks: () => require('../screens/UserLinksScreen').default,
|
|
35
35
|
HistoryView: () => require('../screens/HistoryViewScreen').default,
|
|
36
36
|
SavesCollections: () => require('../screens/SavesCollectionsScreen').default,
|
|
37
|
+
EditProfile: () => require('../screens/EditProfileScreen').default,
|
|
37
38
|
EditProfileField: () => require('../screens/EditProfileFieldScreen').default,
|
|
38
39
|
// Informational screens
|
|
39
40
|
LearnMoreUsernames: () => require('../screens/LearnMoreUsernamesScreen').default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["screenLoaders","OxyAuth","require","default","ManageAccount","AccountVerification","PaymentGateway","Profile","LanguageSelector","PrivacySettings","SearchSettings","FileManagement","HelpSupport","FAQ","Feedback","LegalDocuments","AppInfo","PremiumSubscription","WelcomeNewUser","UserLinks","HistoryView","SavesCollections","EditProfileField","LearnMoreUsernames","TrustCenter","TrustLeaderboard","TrustRewards","TrustRules","AboutTrust","TrustFAQ","FollowersList","FollowingList","AccountSwitcher","CreateAccount","AccountMembers","AccountSettings","AvatarCrop","Notifications","ConnectedApps","Preferences","screenCache","Map","getScreenComponent","routeName","has","get","loader","component","set","error","__DEV__","console","undefined","exports","isValidRoute","isFileManagementImageOnlyPicker","props","selectMode","disabled","disabledMimeTypes","Array","isArray","length","predicate","some","mt","blocksVideos","startsWith","blocksAudio","blocksDocs","DEFAULT_SHEET_CONFIG","scrollable","manualActivation","dynamicBackdrop","getSheetConfig","screenProps"],"sourceRoot":"../../../../src","sources":["ui/navigation/routes.ts"],"mappings":";;;;;;AAGA;AACA;AACA;;AAEA;;
|
|
1
|
+
{"version":3,"names":["screenLoaders","OxyAuth","require","default","ManageAccount","AccountVerification","PaymentGateway","Profile","LanguageSelector","PrivacySettings","SearchSettings","FileManagement","HelpSupport","FAQ","Feedback","LegalDocuments","AppInfo","PremiumSubscription","WelcomeNewUser","UserLinks","HistoryView","SavesCollections","EditProfile","EditProfileField","LearnMoreUsernames","TrustCenter","TrustLeaderboard","TrustRewards","TrustRules","AboutTrust","TrustFAQ","FollowersList","FollowingList","AccountSwitcher","CreateAccount","AccountMembers","AccountSettings","AvatarCrop","Notifications","ConnectedApps","Preferences","screenCache","Map","getScreenComponent","routeName","has","get","loader","component","set","error","__DEV__","console","undefined","exports","isValidRoute","isFileManagementImageOnlyPicker","props","selectMode","disabled","disabledMimeTypes","Array","isArray","length","predicate","some","mt","blocksVideos","startsWith","blocksAudio","blocksDocs","DEFAULT_SHEET_CONFIG","scrollable","manualActivation","dynamicBackdrop","getSheetConfig","screenProps"],"sourceRoot":"../../../../src","sources":["ui/navigation/routes.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,6 +17,7 @@ var _useI18n = require("../hooks/useI18n.js");
|
|
|
17
17
|
var _OxyContext = require("../context/OxyContext.js");
|
|
18
18
|
var _useProfileEditing = require("../hooks/useProfileEditing.js");
|
|
19
19
|
var _bloom = require("@oxyhq/bloom");
|
|
20
|
+
var _linkFormat = require("./linkFormat.js");
|
|
20
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
22
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
23
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
@@ -28,8 +29,82 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
28
29
|
* Field configuration for each field type
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Pure seeding function: derives the initial `fieldValues` / `listItems` for a
|
|
34
|
+
* given field type from the active account snapshot. Called ONCE per state via
|
|
35
|
+
* lazy `useState` initializers — never from an effect — so a background
|
|
36
|
+
* `refreshSessions()` / `useCurrentUser()` swap of the `user` reference can't
|
|
37
|
+
* wipe in-progress typing. Each editor mounts with a fixed `fieldType`, so the
|
|
38
|
+
* seed is stable for the lifetime of the mount.
|
|
39
|
+
*/
|
|
40
|
+
function buildInitialProfileState(user, fieldType) {
|
|
41
|
+
if (!user) {
|
|
42
|
+
return {
|
|
43
|
+
fieldValues: {},
|
|
44
|
+
listItems: []
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const userData = user;
|
|
48
|
+
if (fieldType === 'locations') {
|
|
49
|
+
const locations = Array.isArray(userData.locations) ? userData.locations : [];
|
|
50
|
+
return {
|
|
51
|
+
fieldValues: {},
|
|
52
|
+
listItems: locations.map((loc, i) => ({
|
|
53
|
+
id: String(loc.id || `location-${i}`),
|
|
54
|
+
name: String(loc.name || ''),
|
|
55
|
+
...loc
|
|
56
|
+
}))
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (fieldType === 'links') {
|
|
60
|
+
const linksMetadata = Array.isArray(userData.linksMetadata) ? userData.linksMetadata : [];
|
|
61
|
+
const links = Array.isArray(userData.links) ? userData.links : [];
|
|
62
|
+
// Prefer rich link metadata; fall back to the plain links array.
|
|
63
|
+
if (linksMetadata.length > 0) {
|
|
64
|
+
return {
|
|
65
|
+
fieldValues: {},
|
|
66
|
+
listItems: linksMetadata.map((link, i) => ({
|
|
67
|
+
...link,
|
|
68
|
+
id: String(link.id || `link-${i}`),
|
|
69
|
+
url: String(link.url || ''),
|
|
70
|
+
title: String(link.title || (0, _linkFormat.getLinkTitle)(String(link.url || ''))),
|
|
71
|
+
description: String(link.description || (0, _linkFormat.getLinkDescription)(String(link.url || '')))
|
|
72
|
+
}))
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
fieldValues: {},
|
|
77
|
+
listItems: (0, _linkFormat.linksToListItems)(links)
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Scalar fields: seed only the keys this field type edits.
|
|
82
|
+
const fieldValues = {};
|
|
83
|
+
switch (fieldType) {
|
|
84
|
+
case 'displayName':
|
|
85
|
+
fieldValues.firstName = String(userData.name?.first || '');
|
|
86
|
+
fieldValues.lastName = String(userData.lastName || userData.name?.last || '');
|
|
87
|
+
break;
|
|
88
|
+
case 'birthday':
|
|
89
|
+
fieldValues.birthday = String(userData.birthday || userData.dateOfBirth || '');
|
|
90
|
+
break;
|
|
91
|
+
case 'address':
|
|
92
|
+
fieldValues.address = String(userData.address || '');
|
|
93
|
+
break;
|
|
94
|
+
case 'username':
|
|
95
|
+
case 'email':
|
|
96
|
+
case 'bio':
|
|
97
|
+
case 'phone':
|
|
98
|
+
fieldValues[fieldType] = String(userData[fieldType] || '');
|
|
99
|
+
break;
|
|
100
|
+
default:
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
fieldValues,
|
|
105
|
+
listItems: []
|
|
106
|
+
};
|
|
107
|
+
}
|
|
33
108
|
|
|
34
109
|
/**
|
|
35
110
|
* EditProfileFieldScreen - A dedicated screen for editing profile fields
|
|
@@ -63,12 +138,14 @@ const EditProfileFieldScreen = ({
|
|
|
63
138
|
const bloomTheme = (0, _theme.useTheme)();
|
|
64
139
|
const normalizedTheme = (0, _core.normalizeTheme)(theme);
|
|
65
140
|
|
|
66
|
-
// State for field values
|
|
67
|
-
|
|
141
|
+
// State for field values — seeded ONCE from the active account snapshot at
|
|
142
|
+
// mount via lazy initializers. See buildInitialProfileState: no effect
|
|
143
|
+
// reseeds these, so a background user-ref swap never wipes typing.
|
|
144
|
+
const [fieldValues, setFieldValues] = (0, _react.useState)(() => buildInitialProfileState(user, fieldType).fieldValues);
|
|
68
145
|
const [fieldErrors, setFieldErrors] = (0, _react.useState)({});
|
|
69
146
|
|
|
70
|
-
// State for list fields (locations, links)
|
|
71
|
-
const [listItems, setListItems] = (0, _react.useState)(
|
|
147
|
+
// State for list fields (locations, links) — same one-time mount seeding.
|
|
148
|
+
const [listItems, setListItems] = (0, _react.useState)(() => buildInitialProfileState(user, fieldType).listItems);
|
|
72
149
|
const [newItemValue, setNewItemValue] = (0, _react.useState)('');
|
|
73
150
|
|
|
74
151
|
// Get field configuration based on fieldType
|
|
@@ -81,11 +158,13 @@ const EditProfileFieldScreen = ({
|
|
|
81
158
|
fields: [{
|
|
82
159
|
key: 'firstName',
|
|
83
160
|
label: t('editProfile.items.displayName.firstName') || 'First Name',
|
|
84
|
-
placeholder: t('editProfile.items.displayName.firstNamePlaceholder') || 'Enter first name'
|
|
161
|
+
placeholder: t('editProfile.items.displayName.firstNamePlaceholder') || 'Enter first name',
|
|
162
|
+
validation: value => (0, _core.isValidDisplayName)(value) ? undefined : t('editProfile.items.displayName.invalidChars') || 'Use letters and spaces only'
|
|
85
163
|
}, {
|
|
86
164
|
key: 'lastName',
|
|
87
165
|
label: t('editProfile.items.displayName.lastName') || 'Last Name',
|
|
88
|
-
placeholder: t('editProfile.items.displayName.lastNamePlaceholder') || 'Enter last name (optional)'
|
|
166
|
+
placeholder: t('editProfile.items.displayName.lastNamePlaceholder') || 'Enter last name (optional)',
|
|
167
|
+
validation: value => (0, _core.isValidDisplayName)(value) ? undefined : t('editProfile.items.displayName.invalidChars') || 'Use letters and spaces only'
|
|
89
168
|
}]
|
|
90
169
|
};
|
|
91
170
|
case 'username':
|
|
@@ -216,60 +295,6 @@ const EditProfileFieldScreen = ({
|
|
|
216
295
|
}
|
|
217
296
|
}, [fieldType, t]);
|
|
218
297
|
|
|
219
|
-
// Initialize field values from the active account's data
|
|
220
|
-
(0, _react.useEffect)(() => {
|
|
221
|
-
if (!user) return;
|
|
222
|
-
const userData = user;
|
|
223
|
-
if (fieldConfig.isList) {
|
|
224
|
-
if (fieldType === 'locations') {
|
|
225
|
-
const locations = Array.isArray(userData.locations) ? userData.locations : [];
|
|
226
|
-
setListItems(locations.map((loc, i) => ({
|
|
227
|
-
id: String(loc.id || `location-${i}`),
|
|
228
|
-
name: String(loc.name || ''),
|
|
229
|
-
...loc
|
|
230
|
-
})));
|
|
231
|
-
} else if (fieldType === 'links') {
|
|
232
|
-
const linksMetadata = Array.isArray(userData.linksMetadata) ? userData.linksMetadata : [];
|
|
233
|
-
const links = Array.isArray(userData.links) ? userData.links : [];
|
|
234
|
-
// Use linksMetadata if available, otherwise convert links array
|
|
235
|
-
if (linksMetadata.length > 0) {
|
|
236
|
-
setListItems(linksMetadata.map((link, i) => ({
|
|
237
|
-
...link,
|
|
238
|
-
id: String(link.id || `link-${i}`),
|
|
239
|
-
url: String(link.url || ''),
|
|
240
|
-
title: String(link.title || getLinkTitle(String(link.url || ''))),
|
|
241
|
-
description: String(link.description || getLinkDescription(String(link.url || '')))
|
|
242
|
-
})));
|
|
243
|
-
} else {
|
|
244
|
-
setListItems(links.map((item, i) => {
|
|
245
|
-
return {
|
|
246
|
-
id: `link-${i}`,
|
|
247
|
-
url: item,
|
|
248
|
-
title: getLinkTitle(item),
|
|
249
|
-
description: getLinkDescription(item)
|
|
250
|
-
};
|
|
251
|
-
}));
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
} else {
|
|
255
|
-
const initialValues = {};
|
|
256
|
-
fieldConfig.fields.forEach(field => {
|
|
257
|
-
if (field.key === 'firstName') {
|
|
258
|
-
initialValues[field.key] = String(userData.name?.first || '');
|
|
259
|
-
} else if (field.key === 'lastName') {
|
|
260
|
-
initialValues[field.key] = String(userData.lastName || userData.name?.last || '');
|
|
261
|
-
} else if (field.key === 'birthday') {
|
|
262
|
-
initialValues[field.key] = String(userData.birthday || userData.dateOfBirth || '');
|
|
263
|
-
} else if (field.key === 'address') {
|
|
264
|
-
initialValues[field.key] = String(userData.address || userData.location || '');
|
|
265
|
-
} else {
|
|
266
|
-
initialValues[field.key] = String(userData[field.key] || '');
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
setFieldValues(initialValues);
|
|
270
|
-
}
|
|
271
|
-
}, [user, fieldConfig, fieldType]);
|
|
272
|
-
|
|
273
298
|
// Field change handler
|
|
274
299
|
const handleFieldChange = (0, _react.useCallback)((key, value) => {
|
|
275
300
|
setFieldValues(prev => ({
|
|
@@ -288,7 +313,7 @@ const EditProfileFieldScreen = ({
|
|
|
288
313
|
const validateFields = (0, _react.useCallback)(() => {
|
|
289
314
|
const errors = {};
|
|
290
315
|
let isValid = true;
|
|
291
|
-
fieldConfig.fields
|
|
316
|
+
for (const field of fieldConfig.fields) {
|
|
292
317
|
if (field.validation) {
|
|
293
318
|
const error = field.validation(fieldValues[field.key] || '');
|
|
294
319
|
if (error) {
|
|
@@ -296,7 +321,7 @@ const EditProfileFieldScreen = ({
|
|
|
296
321
|
isValid = false;
|
|
297
322
|
}
|
|
298
323
|
}
|
|
299
|
-
}
|
|
324
|
+
}
|
|
300
325
|
setFieldErrors(errors);
|
|
301
326
|
return isValid;
|
|
302
327
|
}, [fieldConfig.fields, fieldValues]);
|
|
@@ -314,8 +339,8 @@ const EditProfileFieldScreen = ({
|
|
|
314
339
|
const newItem = {
|
|
315
340
|
id: `link-${Date.now()}`,
|
|
316
341
|
url: newItemValue.trim(),
|
|
317
|
-
title: getLinkTitle(newItemValue.trim()),
|
|
318
|
-
description: getLinkDescription(newItemValue.trim())
|
|
342
|
+
title: (0, _linkFormat.getLinkTitle)(newItemValue.trim()),
|
|
343
|
+
description: (0, _linkFormat.getLinkDescription)(newItemValue.trim())
|
|
319
344
|
};
|
|
320
345
|
setListItems(prev => [...prev, newItem]);
|
|
321
346
|
}
|
|
@@ -349,8 +374,8 @@ const EditProfileFieldScreen = ({
|
|
|
349
374
|
linksMetadata: listItems.map(item => ({
|
|
350
375
|
id: item.id,
|
|
351
376
|
url: String(item.url || ''),
|
|
352
|
-
title: String(item.title || getLinkTitle(String(item.url || ''))),
|
|
353
|
-
description: String(item.description || getLinkDescription(String(item.url || ''))),
|
|
377
|
+
title: String(item.title || (0, _linkFormat.getLinkTitle)(String(item.url || ''))),
|
|
378
|
+
description: String(item.description || (0, _linkFormat.getLinkDescription)(String(item.url || ''))),
|
|
354
379
|
...(item.image !== undefined && {
|
|
355
380
|
image: String(item.image)
|
|
356
381
|
})
|