@oxyhq/services 5.15.6 → 5.15.9
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/crypto/keyManager.js +11 -11
- package/lib/commonjs/crypto/keyManager.js.map +1 -1
- package/lib/commonjs/crypto/polyfill.js +48 -1
- package/lib/commonjs/crypto/polyfill.js.map +1 -1
- package/lib/commonjs/ui/components/TextField.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +168 -76
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/crypto/keyManager.js +11 -11
- package/lib/module/crypto/keyManager.js.map +1 -1
- package/lib/module/crypto/polyfill.js +48 -1
- package/lib/module/crypto/polyfill.js.map +1 -1
- package/lib/module/ui/components/TextField.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +169 -77
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/typescript/core/OxyServices.d.ts +1 -1
- package/lib/typescript/core/OxyServices.d.ts.map +1 -1
- package/lib/typescript/crypto/polyfill.d.ts +4 -0
- package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
- package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -0
- package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/package.json +1 -2
- package/src/crypto/keyManager.ts +11 -11
- package/src/crypto/polyfill.ts +53 -1
- package/src/ui/components/TextField.tsx +2 -2
- package/src/ui/screens/AccountSettingsScreen.tsx +1 -1
- package/src/ui/screens/OxyAuthScreen.tsx +184 -68
- package/lib/typescript/types/expo-random.d.ts +0 -9
- package/src/types/expo-random.d.ts +0 -9
|
@@ -8,24 +8,29 @@
|
|
|
8
8
|
* 1. Scan QR code with Oxy Accounts app
|
|
9
9
|
* 2. Open Oxy Accounts app directly (via deep link)
|
|
10
10
|
*
|
|
11
|
+
* Uses WebSocket for real-time authorization updates (with polling fallback).
|
|
11
12
|
* The Oxy Accounts app is where users manage their cryptographic identity.
|
|
12
13
|
* This screen should NOT be used within the Accounts app itself.
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
16
|
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
16
17
|
import { View, Text, TouchableOpacity, StyleSheet, Linking, Platform, ActivityIndicator } from 'react-native';
|
|
18
|
+
import io from 'socket.io-client';
|
|
17
19
|
import { useThemeColors } from '../styles';
|
|
18
20
|
import { useOxy } from '../context/OxyContext';
|
|
19
21
|
import QRCode from 'react-native-qrcode-svg';
|
|
20
22
|
import OxyLogo from '../components/OxyLogo';
|
|
21
23
|
|
|
22
24
|
// Deep link scheme for Oxy Accounts app
|
|
23
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
26
|
const OXY_ACCOUNTS_SCHEME = 'oxyaccounts://';
|
|
25
27
|
const OXY_ACCOUNTS_WEB_URL = 'https://accounts.oxy.so';
|
|
26
28
|
|
|
27
29
|
// Auth session expiration (5 minutes)
|
|
28
30
|
const AUTH_SESSION_EXPIRY_MS = 5 * 60 * 1000;
|
|
31
|
+
|
|
32
|
+
// Polling interval (fallback if socket fails)
|
|
33
|
+
const POLLING_INTERVAL_MS = 3000;
|
|
29
34
|
const OxyAuthScreen = ({
|
|
30
35
|
navigate,
|
|
31
36
|
goBack,
|
|
@@ -41,20 +46,139 @@ const OxyAuthScreen = ({
|
|
|
41
46
|
const [authSession, setAuthSession] = useState(null);
|
|
42
47
|
const [isLoading, setIsLoading] = useState(true);
|
|
43
48
|
const [error, setError] = useState(null);
|
|
44
|
-
const [
|
|
49
|
+
const [isWaiting, setIsWaiting] = useState(false);
|
|
50
|
+
const [connectionType, setConnectionType] = useState('socket');
|
|
51
|
+
const socketRef = useRef(null);
|
|
45
52
|
const pollingIntervalRef = useRef(null);
|
|
53
|
+
const isProcessingRef = useRef(false);
|
|
54
|
+
|
|
55
|
+
// Handle successful authorization
|
|
56
|
+
const handleAuthSuccess = useCallback(async sessionId => {
|
|
57
|
+
if (isProcessingRef.current) return;
|
|
58
|
+
isProcessingRef.current = true;
|
|
59
|
+
try {
|
|
60
|
+
// Get token and user data
|
|
61
|
+
await oxyServices.getTokenBySession(sessionId);
|
|
62
|
+
const user = await oxyServices.getUserBySession(sessionId);
|
|
63
|
+
if (onAuthenticated) {
|
|
64
|
+
onAuthenticated(user);
|
|
65
|
+
}
|
|
66
|
+
} catch (err) {
|
|
67
|
+
if (__DEV__) {
|
|
68
|
+
console.error('Error completing auth:', err);
|
|
69
|
+
}
|
|
70
|
+
setError('Authorization successful but failed to complete sign in. Please try again.');
|
|
71
|
+
isProcessingRef.current = false;
|
|
72
|
+
}
|
|
73
|
+
}, [oxyServices, onAuthenticated]);
|
|
74
|
+
|
|
75
|
+
// Connect to socket for real-time updates
|
|
76
|
+
const connectSocket = useCallback(sessionToken => {
|
|
77
|
+
const baseURL = oxyServices.getBaseURL();
|
|
78
|
+
|
|
79
|
+
// Connect to the auth-session namespace (no authentication required)
|
|
80
|
+
const socket = io(`${baseURL}/auth-session`, {
|
|
81
|
+
transports: ['websocket', 'polling'],
|
|
82
|
+
reconnection: true,
|
|
83
|
+
reconnectionAttempts: 3,
|
|
84
|
+
reconnectionDelay: 1000
|
|
85
|
+
});
|
|
86
|
+
socketRef.current = socket;
|
|
87
|
+
socket.on('connect', () => {
|
|
88
|
+
if (__DEV__) {
|
|
89
|
+
console.log('Auth socket connected');
|
|
90
|
+
}
|
|
91
|
+
// Join the room for this session token
|
|
92
|
+
socket.emit('join', sessionToken);
|
|
93
|
+
setConnectionType('socket');
|
|
94
|
+
});
|
|
95
|
+
socket.on('joined', () => {
|
|
96
|
+
if (__DEV__) {
|
|
97
|
+
console.log('Joined auth session room');
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
socket.on('auth_update', payload => {
|
|
101
|
+
if (__DEV__) {
|
|
102
|
+
console.log('Auth update received:', payload);
|
|
103
|
+
}
|
|
104
|
+
if (payload.status === 'authorized' && payload.sessionId) {
|
|
105
|
+
cleanup();
|
|
106
|
+
handleAuthSuccess(payload.sessionId);
|
|
107
|
+
} else if (payload.status === 'cancelled') {
|
|
108
|
+
cleanup();
|
|
109
|
+
setError('Authorization was denied.');
|
|
110
|
+
} else if (payload.status === 'expired') {
|
|
111
|
+
cleanup();
|
|
112
|
+
setError('Session expired. Please try again.');
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
socket.on('connect_error', err => {
|
|
116
|
+
if (__DEV__) {
|
|
117
|
+
console.log('Socket connection error, falling back to polling:', err.message);
|
|
118
|
+
}
|
|
119
|
+
// Fall back to polling if socket fails
|
|
120
|
+
socket.disconnect();
|
|
121
|
+
startPolling(sessionToken);
|
|
122
|
+
});
|
|
123
|
+
socket.on('disconnect', () => {
|
|
124
|
+
if (__DEV__) {
|
|
125
|
+
console.log('Auth socket disconnected');
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}, [oxyServices, handleAuthSuccess]);
|
|
129
|
+
|
|
130
|
+
// Start polling for authorization (fallback)
|
|
131
|
+
const startPolling = useCallback(sessionToken => {
|
|
132
|
+
setConnectionType('polling');
|
|
133
|
+
pollingIntervalRef.current = setInterval(async () => {
|
|
134
|
+
if (isProcessingRef.current) return;
|
|
135
|
+
try {
|
|
136
|
+
const response = await oxyServices.makeRequest('GET', `/api/auth/session/status/${sessionToken}`, undefined, {
|
|
137
|
+
cache: false
|
|
138
|
+
});
|
|
139
|
+
if (response.authorized && response.sessionId) {
|
|
140
|
+
cleanup();
|
|
141
|
+
handleAuthSuccess(response.sessionId);
|
|
142
|
+
} else if (response.status === 'cancelled') {
|
|
143
|
+
cleanup();
|
|
144
|
+
setError('Authorization was denied.');
|
|
145
|
+
} else if (response.status === 'expired') {
|
|
146
|
+
cleanup();
|
|
147
|
+
setError('Session expired. Please try again.');
|
|
148
|
+
}
|
|
149
|
+
} catch (err) {
|
|
150
|
+
// Silent fail for polling - will retry
|
|
151
|
+
if (__DEV__) {
|
|
152
|
+
console.log('Auth polling error:', err);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}, POLLING_INTERVAL_MS);
|
|
156
|
+
}, [oxyServices, handleAuthSuccess]);
|
|
157
|
+
|
|
158
|
+
// Cleanup socket and polling
|
|
159
|
+
const cleanup = useCallback(() => {
|
|
160
|
+
setIsWaiting(false);
|
|
161
|
+
if (socketRef.current) {
|
|
162
|
+
socketRef.current.disconnect();
|
|
163
|
+
socketRef.current = null;
|
|
164
|
+
}
|
|
165
|
+
if (pollingIntervalRef.current) {
|
|
166
|
+
clearInterval(pollingIntervalRef.current);
|
|
167
|
+
pollingIntervalRef.current = null;
|
|
168
|
+
}
|
|
169
|
+
}, []);
|
|
46
170
|
|
|
47
171
|
// Generate a new auth session
|
|
48
172
|
const generateAuthSession = useCallback(async () => {
|
|
49
173
|
setIsLoading(true);
|
|
50
174
|
setError(null);
|
|
175
|
+
isProcessingRef.current = false;
|
|
51
176
|
try {
|
|
52
177
|
// Generate a unique session token for this auth request
|
|
53
178
|
const sessionToken = generateSessionToken();
|
|
54
179
|
const expiresAt = Date.now() + AUTH_SESSION_EXPIRY_MS;
|
|
55
180
|
|
|
56
181
|
// Register the auth session with the server
|
|
57
|
-
// The server will associate this token with the user when they authorize in Accounts
|
|
58
182
|
await oxyServices.makeRequest('POST', '/api/auth/session/create', {
|
|
59
183
|
sessionToken,
|
|
60
184
|
expiresAt,
|
|
@@ -66,13 +190,16 @@ const OxyAuthScreen = ({
|
|
|
66
190
|
sessionToken,
|
|
67
191
|
expiresAt
|
|
68
192
|
});
|
|
69
|
-
|
|
193
|
+
setIsWaiting(true);
|
|
194
|
+
|
|
195
|
+
// Try socket first, will fall back to polling if needed
|
|
196
|
+
connectSocket(sessionToken);
|
|
70
197
|
} catch (err) {
|
|
71
198
|
setError(err.message || 'Failed to create auth session');
|
|
72
199
|
} finally {
|
|
73
200
|
setIsLoading(false);
|
|
74
201
|
}
|
|
75
|
-
}, [oxyServices]);
|
|
202
|
+
}, [oxyServices, connectSocket]);
|
|
76
203
|
|
|
77
204
|
// Generate a random session token
|
|
78
205
|
const generateSessionToken = () => {
|
|
@@ -84,49 +211,12 @@ const OxyAuthScreen = ({
|
|
|
84
211
|
return result;
|
|
85
212
|
};
|
|
86
213
|
|
|
87
|
-
// Start polling for authorization
|
|
88
|
-
const startPolling = useCallback(sessionToken => {
|
|
89
|
-
setIsPolling(true);
|
|
90
|
-
pollingIntervalRef.current = setInterval(async () => {
|
|
91
|
-
try {
|
|
92
|
-
const response = await oxyServices.makeRequest('GET', `/api/auth/session/status/${sessionToken}`, undefined, {
|
|
93
|
-
cache: false
|
|
94
|
-
});
|
|
95
|
-
if (response.authorized && response.sessionId) {
|
|
96
|
-
// Authorization successful!
|
|
97
|
-
stopPolling();
|
|
98
|
-
|
|
99
|
-
// Get token and user data
|
|
100
|
-
await oxyServices.getTokenBySession(response.sessionId);
|
|
101
|
-
const user = await oxyServices.getUserBySession(response.sessionId);
|
|
102
|
-
if (onAuthenticated) {
|
|
103
|
-
onAuthenticated(user);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
} catch (err) {
|
|
107
|
-
// Silent fail for polling - will retry
|
|
108
|
-
if (__DEV__) {
|
|
109
|
-
console.log('Auth polling error:', err);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}, 2000); // Poll every 2 seconds
|
|
113
|
-
}, [oxyServices, onAuthenticated]);
|
|
114
|
-
|
|
115
|
-
// Stop polling
|
|
116
|
-
const stopPolling = useCallback(() => {
|
|
117
|
-
setIsPolling(false);
|
|
118
|
-
if (pollingIntervalRef.current) {
|
|
119
|
-
clearInterval(pollingIntervalRef.current);
|
|
120
|
-
pollingIntervalRef.current = null;
|
|
121
|
-
}
|
|
122
|
-
}, []);
|
|
123
|
-
|
|
124
214
|
// Clean up on unmount
|
|
125
215
|
useEffect(() => {
|
|
126
216
|
return () => {
|
|
127
|
-
|
|
217
|
+
cleanup();
|
|
128
218
|
};
|
|
129
|
-
}, [
|
|
219
|
+
}, [cleanup]);
|
|
130
220
|
|
|
131
221
|
// Initialize auth session
|
|
132
222
|
useEffect(() => {
|
|
@@ -136,11 +226,11 @@ const OxyAuthScreen = ({
|
|
|
136
226
|
// Check if session expired
|
|
137
227
|
useEffect(() => {
|
|
138
228
|
if (authSession && Date.now() > authSession.expiresAt) {
|
|
139
|
-
|
|
229
|
+
cleanup();
|
|
140
230
|
setAuthSession(null);
|
|
141
231
|
setError('Session expired. Please try again.');
|
|
142
232
|
}
|
|
143
|
-
}, [authSession,
|
|
233
|
+
}, [authSession, cleanup]);
|
|
144
234
|
|
|
145
235
|
// Build the QR code data
|
|
146
236
|
const getQRData = () => {
|
|
@@ -175,9 +265,9 @@ const OxyAuthScreen = ({
|
|
|
175
265
|
|
|
176
266
|
// Refresh session
|
|
177
267
|
const handleRefresh = useCallback(() => {
|
|
178
|
-
|
|
268
|
+
cleanup();
|
|
179
269
|
generateAuthSession();
|
|
180
|
-
}, [generateAuthSession,
|
|
270
|
+
}, [generateAuthSession, cleanup]);
|
|
181
271
|
if (isLoading) {
|
|
182
272
|
return /*#__PURE__*/_jsxs(View, {
|
|
183
273
|
style: [styles.container, {
|
|
@@ -255,37 +345,39 @@ const OxyAuthScreen = ({
|
|
|
255
345
|
}],
|
|
256
346
|
children: "Scan with Oxy Accounts app"
|
|
257
347
|
})]
|
|
258
|
-
}), /*#__PURE__*/_jsxs(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
348
|
+
}), Platform.OS !== 'web' && /*#__PURE__*/_jsxs(_Fragment, {
|
|
349
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
350
|
+
style: styles.dividerContainer,
|
|
351
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
352
|
+
style: [styles.divider, {
|
|
353
|
+
backgroundColor: colors.border
|
|
354
|
+
}]
|
|
355
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
356
|
+
style: [styles.dividerText, {
|
|
357
|
+
color: colors.secondaryText
|
|
358
|
+
}],
|
|
359
|
+
children: "or"
|
|
360
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
361
|
+
style: [styles.divider, {
|
|
362
|
+
backgroundColor: colors.border
|
|
363
|
+
}]
|
|
364
|
+
})]
|
|
365
|
+
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
366
|
+
style: [styles.button, {
|
|
367
|
+
backgroundColor: colors.primary
|
|
267
368
|
}],
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
onPress: handleOpenAccounts,
|
|
279
|
-
children: [/*#__PURE__*/_jsx(OxyLogo, {
|
|
280
|
-
width: 20,
|
|
281
|
-
height: 20,
|
|
282
|
-
fillColor: "white",
|
|
283
|
-
style: styles.buttonIcon
|
|
284
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
285
|
-
style: styles.buttonText,
|
|
286
|
-
children: "Open Oxy Accounts"
|
|
369
|
+
onPress: handleOpenAccounts,
|
|
370
|
+
children: [/*#__PURE__*/_jsx(OxyLogo, {
|
|
371
|
+
width: 20,
|
|
372
|
+
height: 20,
|
|
373
|
+
fillColor: "white",
|
|
374
|
+
style: styles.buttonIcon
|
|
375
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
376
|
+
style: styles.buttonText,
|
|
377
|
+
children: "Open Oxy Accounts"
|
|
378
|
+
})]
|
|
287
379
|
})]
|
|
288
|
-
}),
|
|
380
|
+
}), isWaiting && /*#__PURE__*/_jsxs(View, {
|
|
289
381
|
style: styles.statusContainer,
|
|
290
382
|
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
291
383
|
size: "small",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useCallback","useRef","View","Text","TouchableOpacity","StyleSheet","Linking","Platform","ActivityIndicator","useThemeColors","useOxy","QRCode","OxyLogo","jsx","_jsx","jsxs","_jsxs","OXY_ACCOUNTS_SCHEME","OXY_ACCOUNTS_WEB_URL","AUTH_SESSION_EXPIRY_MS","OxyAuthScreen","navigate","goBack","onAuthenticated","theme","themeValue","colors","oxyServices","signIn","authSession","setAuthSession","isLoading","setIsLoading","error","setError","isPolling","setIsPolling","pollingIntervalRef","generateAuthSession","sessionToken","generateSessionToken","expiresAt","Date","now","makeRequest","appId","OS","cache","startPolling","err","message","chars","result","i","charAt","Math","floor","random","length","current","setInterval","response","undefined","authorized","sessionId","stopPolling","getTokenBySession","user","getUserBySession","__DEV__","console","log","clearInterval","getQRData","handleOpenAccounts","deepLinkUrl","webUrl","canOpen","canOpenURL","openURL","handleRefresh","style","styles","container","backgroundColor","background","children","size","color","primary","loadingText","secondaryText","errorText","button","onPress","buttonText","header","width","height","title","text","subtitle","qrContainer","inputBackground","borderColor","border","qrWrapper","value","qrHint","dividerContainer","divider","dividerText","fillColor","buttonIcon","statusContainer","statusText","footer","footerText","footerLink","cancelButton","cancelText","create","flex","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","borderRadius","borderWidth","flexDirection","marginVertical","marginHorizontal","paddingVertical","paddingHorizontal","marginRight","marginLeft"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useState","useEffect","useCallback","useRef","View","Text","TouchableOpacity","StyleSheet","Linking","Platform","ActivityIndicator","io","useThemeColors","useOxy","QRCode","OxyLogo","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","OXY_ACCOUNTS_SCHEME","OXY_ACCOUNTS_WEB_URL","AUTH_SESSION_EXPIRY_MS","POLLING_INTERVAL_MS","OxyAuthScreen","navigate","goBack","onAuthenticated","theme","themeValue","colors","oxyServices","signIn","authSession","setAuthSession","isLoading","setIsLoading","error","setError","isWaiting","setIsWaiting","connectionType","setConnectionType","socketRef","pollingIntervalRef","isProcessingRef","handleAuthSuccess","sessionId","current","getTokenBySession","user","getUserBySession","err","__DEV__","console","connectSocket","sessionToken","baseURL","getBaseURL","socket","transports","reconnection","reconnectionAttempts","reconnectionDelay","on","log","emit","payload","status","cleanup","message","disconnect","startPolling","setInterval","response","makeRequest","undefined","cache","authorized","clearInterval","generateAuthSession","generateSessionToken","expiresAt","Date","now","appId","OS","chars","result","i","charAt","Math","floor","random","length","getQRData","handleOpenAccounts","deepLinkUrl","webUrl","canOpen","canOpenURL","openURL","handleRefresh","style","styles","container","backgroundColor","background","children","size","color","primary","loadingText","secondaryText","errorText","button","onPress","buttonText","header","width","height","title","text","subtitle","qrContainer","inputBackground","borderColor","border","qrWrapper","value","qrHint","dividerContainer","divider","dividerText","fillColor","buttonIcon","statusContainer","statusText","footer","footerText","footerLink","cancelButton","cancelText","create","flex","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","borderRadius","borderWidth","flexDirection","marginVertical","marginHorizontal","paddingVertical","paddingHorizontal","marginRight","marginLeft"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -105,7 +105,7 @@ export declare const OXY_CLOUD_URL = "https://cloud.oxy.so";
|
|
|
105
105
|
/**
|
|
106
106
|
* Export the default Oxy API URL (for documentation)
|
|
107
107
|
*/
|
|
108
|
-
export declare const OXY_API_URL:
|
|
108
|
+
export declare const OXY_API_URL: any;
|
|
109
109
|
/**
|
|
110
110
|
* Pre-configured client instance for easy import
|
|
111
111
|
* Uses OXY_API_URL as baseURL and OXY_CLOUD_URL as cloudURL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyServices.d.ts","sourceRoot":"","sources":["../../../src/core/OxyServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,QAAA,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAwB,CAAC;AAGxF,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,MAAM,EAAE,SAAS;CAG9B;AAGD,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"OxyServices.d.ts","sourceRoot":"","sources":["../../../src/core/OxyServices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAG7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,QAAA,MAAM,mBAAmB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAwB,CAAC;AAGxF,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,MAAM,EAAE,SAAS;CAG9B;AAGD,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,aAAa,yBAAyB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,WAAW,KAAqG,CAAC;AAE9H;;;GAGG;AACH,eAAO,MAAM,SAAS,aAAqE,CAAC"}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This file ensures that required polyfills are available
|
|
5
5
|
* before any crypto operations are performed.
|
|
6
|
+
*
|
|
7
|
+
* Polyfills included:
|
|
8
|
+
* - Buffer: Required by bip39 and other crypto libraries
|
|
9
|
+
* - crypto.getRandomValues: Required by bip39 for secure random number generation
|
|
6
10
|
*/
|
|
7
11
|
import { Buffer } from 'buffer';
|
|
8
12
|
export { Buffer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../../src/crypto/polyfill.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"polyfill.d.ts","sourceRoot":"","sources":["../../../src/crypto/polyfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAkEhC,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* 1. Scan QR code with Oxy Accounts app
|
|
7
7
|
* 2. Open Oxy Accounts app directly (via deep link)
|
|
8
8
|
*
|
|
9
|
+
* Uses WebSocket for real-time authorization updates (with polling fallback).
|
|
9
10
|
* The Oxy Accounts app is where users manage their cryptographic identity.
|
|
10
11
|
* This screen should NOT be used within the Accounts app itself.
|
|
11
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OxyAuthScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/OxyAuthScreen.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"OxyAuthScreen.d.ts","sourceRoot":"","sources":["../../../../src/ui/screens/OxyAuthScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AA6B3D,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoW5C,CAAC;AA2GF,eAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/services",
|
|
3
|
-
"version": "5.15.
|
|
3
|
+
"version": "5.15.9",
|
|
4
4
|
"description": "Reusable OxyHQ module to handle authentication, user management, karma system, device-based session management and more 🚀",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -97,7 +97,6 @@
|
|
|
97
97
|
"elliptic": "^6.6.1",
|
|
98
98
|
"expo-blur": "~15.0.8",
|
|
99
99
|
"expo-crypto": "~14.0.1",
|
|
100
|
-
"expo-random": "~14.0.1",
|
|
101
100
|
"expo-secure-store": "~14.0.0",
|
|
102
101
|
"invariant": "^2.2.4",
|
|
103
102
|
"jwt-decode": "^4.0.0",
|
package/src/crypto/keyManager.ts
CHANGED
|
@@ -10,7 +10,7 @@ import type { ECKeyPair } from 'elliptic';
|
|
|
10
10
|
|
|
11
11
|
// Lazy imports for React Native specific modules
|
|
12
12
|
let SecureStore: typeof import('expo-secure-store') | null = null;
|
|
13
|
-
let
|
|
13
|
+
let ExpoCrypto: typeof import('expo-crypto') | null = null;
|
|
14
14
|
|
|
15
15
|
const ec = new EC('secp256k1');
|
|
16
16
|
|
|
@@ -44,11 +44,11 @@ function isNodeJS(): boolean {
|
|
|
44
44
|
return typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
async function
|
|
48
|
-
if (!
|
|
49
|
-
|
|
47
|
+
async function initExpoCrypto(): Promise<typeof import('expo-crypto')> {
|
|
48
|
+
if (!ExpoCrypto) {
|
|
49
|
+
ExpoCrypto = await import('expo-crypto');
|
|
50
50
|
}
|
|
51
|
-
return
|
|
51
|
+
return ExpoCrypto;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
/**
|
|
@@ -65,10 +65,10 @@ function uint8ArrayToHex(bytes: Uint8Array): string {
|
|
|
65
65
|
* Generate cryptographically secure random bytes
|
|
66
66
|
*/
|
|
67
67
|
async function getSecureRandomBytes(length: number): Promise<Uint8Array> {
|
|
68
|
-
// In React Native, always use expo-
|
|
68
|
+
// In React Native, always use expo-crypto
|
|
69
69
|
if (isReactNative() || !isNodeJS()) {
|
|
70
|
-
const
|
|
71
|
-
return
|
|
70
|
+
const Crypto = await initExpoCrypto();
|
|
71
|
+
return Crypto.getRandomBytes(length);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// In Node.js, use Node's crypto module
|
|
@@ -80,9 +80,9 @@ async function getSecureRandomBytes(length: number): Promise<Uint8Array> {
|
|
|
80
80
|
const crypto = getCrypto();
|
|
81
81
|
return new Uint8Array(crypto.randomBytes(length));
|
|
82
82
|
} catch (error) {
|
|
83
|
-
// Fallback to expo-
|
|
84
|
-
const
|
|
85
|
-
return
|
|
83
|
+
// Fallback to expo-crypto if Node crypto fails
|
|
84
|
+
const Crypto = await initExpoCrypto();
|
|
85
|
+
return Crypto.getRandomBytes(length);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
|
package/src/crypto/polyfill.ts
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This file ensures that required polyfills are available
|
|
5
5
|
* before any crypto operations are performed.
|
|
6
|
+
*
|
|
7
|
+
* Polyfills included:
|
|
8
|
+
* - Buffer: Required by bip39 and other crypto libraries
|
|
9
|
+
* - crypto.getRandomValues: Required by bip39 for secure random number generation
|
|
6
10
|
*/
|
|
7
11
|
|
|
8
12
|
// Import Buffer polyfill for React Native compatibility
|
|
@@ -18,11 +22,59 @@ const getGlobalObject = (): typeof globalThis => {
|
|
|
18
22
|
return {} as typeof globalThis;
|
|
19
23
|
};
|
|
20
24
|
|
|
21
|
-
// Make Buffer available globally for libraries that depend on it
|
|
22
25
|
const globalObject = getGlobalObject();
|
|
26
|
+
|
|
27
|
+
// Make Buffer available globally for libraries that depend on it
|
|
23
28
|
if (!globalObject.Buffer) {
|
|
24
29
|
(globalObject as unknown as { Buffer: typeof Buffer }).Buffer = Buffer;
|
|
25
30
|
}
|
|
26
31
|
|
|
32
|
+
// Polyfill crypto.getRandomValues for React Native
|
|
33
|
+
// This is required by bip39 and other crypto libraries
|
|
34
|
+
type CryptoLike = {
|
|
35
|
+
getRandomValues: <T extends ArrayBufferView>(array: T) => T;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Cache for expo-crypto module
|
|
39
|
+
let expoCryptoModule: typeof import('expo-crypto') | null = null;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Get random bytes using expo-crypto (synchronous)
|
|
43
|
+
* This is a synchronous wrapper that loads expo-crypto lazily
|
|
44
|
+
*/
|
|
45
|
+
function getRandomBytesSync(byteCount: number): Uint8Array {
|
|
46
|
+
if (!expoCryptoModule) {
|
|
47
|
+
// Try to require expo-crypto synchronously
|
|
48
|
+
try {
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
50
|
+
expoCryptoModule = require('expo-crypto');
|
|
51
|
+
} catch {
|
|
52
|
+
throw new Error('expo-crypto is required for crypto.getRandomValues polyfill');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// TypeScript guard - expoCryptoModule is guaranteed to be non-null here
|
|
56
|
+
const cryptoModule = expoCryptoModule;
|
|
57
|
+
if (!cryptoModule) {
|
|
58
|
+
throw new Error('Failed to load expo-crypto module');
|
|
59
|
+
}
|
|
60
|
+
return cryptoModule.getRandomBytes(byteCount);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const cryptoPolyfill: CryptoLike = {
|
|
64
|
+
getRandomValues<T extends ArrayBufferView>(array: T): T {
|
|
65
|
+
const bytes = getRandomBytesSync(array.byteLength);
|
|
66
|
+
const uint8View = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
|
|
67
|
+
uint8View.set(bytes);
|
|
68
|
+
return array;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// Only polyfill if crypto or crypto.getRandomValues is not available
|
|
73
|
+
if (typeof globalObject.crypto === 'undefined') {
|
|
74
|
+
(globalObject as unknown as { crypto: CryptoLike }).crypto = cryptoPolyfill;
|
|
75
|
+
} else if (typeof globalObject.crypto.getRandomValues !== 'function') {
|
|
76
|
+
(globalObject.crypto as CryptoLike).getRandomValues = cryptoPolyfill.getRandomValues;
|
|
77
|
+
}
|
|
78
|
+
|
|
27
79
|
// Re-export Buffer for convenience
|
|
28
80
|
export { Buffer };
|
|
@@ -287,7 +287,7 @@ const TextField = forwardRef<TextFieldHandles, Props>(
|
|
|
287
287
|
height: null,
|
|
288
288
|
});
|
|
289
289
|
|
|
290
|
-
const timer = React.useRef<
|
|
290
|
+
const timer = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);
|
|
291
291
|
const root = React.useRef<NativeTextInput | undefined | null>(null);
|
|
292
292
|
|
|
293
293
|
const { scale } = theme.animation;
|
|
@@ -339,7 +339,7 @@ const TextField = forwardRef<TextFieldHandles, Props>(
|
|
|
339
339
|
timer.current = setTimeout(
|
|
340
340
|
() => setDisplayPlaceholder(true),
|
|
341
341
|
50
|
|
342
|
-
)
|
|
342
|
+
);
|
|
343
343
|
}
|
|
344
344
|
} else {
|
|
345
345
|
// hidePlaceholder
|
|
@@ -314,7 +314,7 @@ const AccountSettingsScreen: React.FC<BaseScreenProps & { initialField?: string;
|
|
|
314
314
|
// Use a ref to track if we've already set the initial field to avoid loops
|
|
315
315
|
const hasSetInitialFieldRef = useRef(false);
|
|
316
316
|
const previousInitialFieldRef = useRef<string | undefined>(undefined);
|
|
317
|
-
const initialFieldTimeoutRef = useRef<
|
|
317
|
+
const initialFieldTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
318
318
|
|
|
319
319
|
// Delay constant for scroll completion
|
|
320
320
|
const SCROLL_DELAY_MS = 600;
|