@oxyhq/services 10.4.0 → 10.5.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.
Files changed (37) hide show
  1. package/lib/commonjs/ui/components/AnotherDeviceQR.js +121 -0
  2. package/lib/commonjs/ui/components/AnotherDeviceQR.js.map +1 -0
  3. package/lib/commonjs/ui/components/SignInModal.js +145 -356
  4. package/lib/commonjs/ui/components/SignInModal.js.map +1 -1
  5. package/lib/commonjs/ui/hooks/useOxyAuthSession.js +458 -0
  6. package/lib/commonjs/ui/hooks/useOxyAuthSession.js.map +1 -0
  7. package/lib/commonjs/ui/screens/OxyAuthScreen.js +62 -460
  8. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  9. package/lib/module/ui/components/AnotherDeviceQR.js +116 -0
  10. package/lib/module/ui/components/AnotherDeviceQR.js.map +1 -0
  11. package/lib/module/ui/components/SignInModal.js +149 -358
  12. package/lib/module/ui/components/SignInModal.js.map +1 -1
  13. package/lib/module/ui/hooks/useOxyAuthSession.js +452 -0
  14. package/lib/module/ui/hooks/useOxyAuthSession.js.map +1 -0
  15. package/lib/module/ui/screens/OxyAuthScreen.js +62 -460
  16. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  17. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts +24 -0
  18. package/lib/typescript/commonjs/ui/components/AnotherDeviceQR.d.ts.map +1 -0
  19. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +10 -5
  20. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts +83 -0
  22. package/lib/typescript/commonjs/ui/hooks/useOxyAuthSession.d.ts.map +1 -0
  23. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts +12 -8
  24. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  25. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts +24 -0
  26. package/lib/typescript/module/ui/components/AnotherDeviceQR.d.ts.map +1 -0
  27. package/lib/typescript/module/ui/components/SignInModal.d.ts +10 -5
  28. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -1
  29. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts +83 -0
  30. package/lib/typescript/module/ui/hooks/useOxyAuthSession.d.ts.map +1 -0
  31. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts +12 -8
  32. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/src/ui/components/AnotherDeviceQR.tsx +111 -0
  35. package/src/ui/components/SignInModal.tsx +142 -381
  36. package/src/ui/hooks/useOxyAuthSession.ts +556 -0
  37. package/src/ui/screens/OxyAuthScreen.tsx +61 -506
@@ -1,96 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  /**
4
- * OxyAuthScreen - Sign in with Oxy
5
- *
6
- * This screen is used by OTHER apps in the Oxy ecosystem to authenticate users.
7
- * It presents two options:
8
- * 1. Scan QR code with Oxy Accounts app
9
- * 2. Open the Oxy Auth web flow
10
- *
11
- * Uses WebSocket for real-time authorization updates (with polling fallback).
12
- * The Oxy Accounts app is where users manage their cryptographic identity.
13
- * This screen should NOT be used within the Accounts app itself.
4
+ * OxyAuthScreen - Sign in with Oxy (native bottom-sheet container)
5
+ *
6
+ * Used by OTHER apps in the Oxy ecosystem to authenticate users. The primary
7
+ * action is the one-tap "Continue with Oxy" approval flow (opens the Oxy Auth
8
+ * web flow with a deep-link `redirect_uri` so the app→app return path can
9
+ * complete the sign-in). The QR code is demoted to a collapsed "Sign in on
10
+ * another device" disclosure — you can't scan your own screen.
11
+ *
12
+ * ALL of the auth-session machinery (session-token creation, QR data, socket +
13
+ * polling, the native deep-link return path, waiting/error/retry state, the
14
+ * open-auth handler, and cleanup) lives in the shared `useOxyAuthSession` hook,
15
+ * which the web `SignInModal` also consumes — neither container re-implements
16
+ * the transport. The Oxy Accounts app is where users manage their cryptographic
17
+ * identity; this screen should NOT be used within the Accounts app itself.
14
18
  */
15
19
 
16
- import { useState, useEffect, useCallback, useRef } from 'react';
17
- import { View, Text, TouchableOpacity, StyleSheet, Linking, Platform } from 'react-native';
18
- import io from 'socket.io-client';
20
+ import { View, Text, TouchableOpacity, StyleSheet, Linking } from 'react-native';
19
21
  import { useTheme } from '@oxyhq/bloom/theme';
20
22
  import { Button } from '@oxyhq/bloom/button';
21
23
  import { Loading } from '@oxyhq/bloom/loading';
22
24
  import { useOxy } from "../context/OxyContext.js";
23
- import QRCode from 'react-native-qrcode-svg';
24
25
  import OxyLogo from "../components/OxyLogo.js";
25
- import { createDebugLogger } from '@oxyhq/core';
26
- import { completeDeviceFlowSignIn } from "../../utils/deviceFlowSignIn.js";
26
+ import AnotherDeviceQR from "../components/AnotherDeviceQR.js";
27
+ import { useOxyAuthSession, OXY_ACCOUNTS_WEB_URL } from "../hooks/useOxyAuthSession.js";
27
28
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
- const debug = createDebugLogger('OxyAuthScreen');
29
- const OXY_ACCOUNTS_WEB_URL = 'https://accounts.oxy.so';
30
- const OXY_AUTH_WEB_URL = 'https://auth.oxy.so';
31
-
32
- // Auth session expiration (5 minutes)
33
- const AUTH_SESSION_EXPIRY_MS = 5 * 60 * 1000;
34
-
35
- // Polling interval (fallback if socket fails)
36
- const POLLING_INTERVAL_MS = 3000;
37
- const resolveAuthWebBaseUrl = (baseURL, authWebUrl) => {
38
- if (authWebUrl) {
39
- return authWebUrl;
40
- }
41
- try {
42
- const url = new URL(baseURL);
43
- if (url.port === '3001') {
44
- url.port = '3002';
45
- return url.origin;
46
- }
47
- if (url.hostname.startsWith('api.')) {
48
- url.hostname = `auth.${url.hostname.slice(4)}`;
49
- return url.origin;
50
- }
51
- } catch {
52
- // Ignore parsing errors, fall back to default.
53
- }
54
- return OXY_AUTH_WEB_URL;
55
- };
56
- const resolveAuthRedirectUri = async authRedirectUri => {
57
- if (authRedirectUri) {
58
- return authRedirectUri;
59
- }
60
- try {
61
- const initialUrl = await Linking.getInitialURL();
62
- if (!initialUrl) {
63
- return null;
64
- }
65
- const parsed = new URL(initialUrl);
66
- parsed.search = '';
67
- parsed.hash = '';
68
- return parsed.toString();
69
- } catch {
70
- return null;
71
- }
72
- };
73
- const getRedirectParams = url => {
74
- try {
75
- const parsed = new URL(url);
76
- const sessionId = parsed.searchParams.get('session_id') ?? undefined;
77
- const error = parsed.searchParams.get('error') ?? undefined;
78
- if (!sessionId && !error) {
79
- return null;
80
- }
81
- return {
82
- sessionId,
83
- error
84
- };
85
- } catch {
86
- return null;
87
- }
88
- };
89
29
  const OxyAuthScreen = ({
90
- navigate,
91
30
  goBack,
92
- onAuthenticated,
93
- theme
31
+ onAuthenticated
94
32
  }) => {
95
33
  const bloomTheme = useTheme();
96
34
  const {
@@ -98,307 +36,16 @@ const OxyAuthScreen = ({
98
36
  switchSession,
99
37
  clientId
100
38
  } = useOxy();
101
- const [authSession, setAuthSession] = useState(null);
102
- const [isLoading, setIsLoading] = useState(true);
103
- const [error, setError] = useState(null);
104
- const [isWaiting, setIsWaiting] = useState(false);
105
- const [connectionType, setConnectionType] = useState('socket');
106
- const socketRef = useRef(null);
107
- const pollingIntervalRef = useRef(null);
108
- const isProcessingRef = useRef(false);
109
- const linkingHandledRef = useRef(false);
110
-
111
- // Handle successful authorization.
112
- //
113
- // The auth-session socket / poll (or deep-link return) hands us the
114
- // authorized `sessionId`. Before any session-management code can touch it we
115
- // MUST first exchange the secret `sessionToken` (held only by this client,
116
- // generated for THIS flow) for the first access token via
117
- // `claimSessionByToken` — the device-flow equivalent of OAuth's
118
- // code-for-token exchange (RFC 8628 §3.4).
119
- //
120
- // Without that exchange the SDK has no bearer token — the session is
121
- // authorized server-side but the app never becomes authenticated and the
122
- // sheet sits "Waiting for authorization..." forever. Once
123
- // `claimSessionByToken` plants the tokens in the HttpService, the rest of the
124
- // session wiring flows through the normal `switchSession` path. This mirrors
125
- // `SignInModal`'s web flow exactly.
126
- const handleAuthSuccess = useCallback(async (sessionId, sessionToken) => {
127
- if (isProcessingRef.current) return;
128
- isProcessingRef.current = true;
129
- try {
130
- // Claim the first access token with the secret sessionToken, then
131
- // hydrate the session. The claim step is what the native screen was
132
- // previously missing — see `completeDeviceFlowSignIn`. `switchSession`
133
- // is always provided by the context here; the helper requires it.
134
- if (!switchSession) {
135
- throw new Error('Session management unavailable');
136
- }
137
- const user = await completeDeviceFlowSignIn({
138
- oxyServices,
139
- sessionId,
140
- sessionToken,
141
- switchSession
142
- });
143
- if (onAuthenticated) {
144
- onAuthenticated(user);
145
- }
146
- } catch (err) {
147
- debug.error('Error completing auth:', err);
148
- setError('Authorization successful but failed to complete sign in. Please try again.');
149
- isProcessingRef.current = false;
150
- }
151
- }, [oxyServices, switchSession, onAuthenticated]);
152
-
153
- // Connect to socket for real-time updates
154
- const connectSocket = useCallback(sessionToken => {
155
- const baseURL = oxyServices.getBaseURL();
156
-
157
- // Connect to the auth-session namespace (no authentication required)
158
- const socket = io(`${baseURL}/auth-session`, {
159
- transports: ['websocket', 'polling'],
160
- reconnection: true,
161
- reconnectionAttempts: 3,
162
- reconnectionDelay: 1000
163
- });
164
- socketRef.current = socket;
165
- socket.on('connect', () => {
166
- debug.log('Auth socket connected');
167
- // Join the room for this session token
168
- socket.emit('join', sessionToken);
169
- setConnectionType('socket');
170
- });
171
- socket.on('joined', () => {
172
- debug.log('Joined auth session room');
173
- });
174
- socket.on('auth_update', payload => {
175
- debug.log('Auth update received:', payload);
176
- if (payload.status === 'authorized' && payload.sessionId) {
177
- cleanup();
178
- // `sessionToken` is this flow's secret credential (in closure) — pass
179
- // it through so `handleAuthSuccess` can claim the first access token.
180
- handleAuthSuccess(payload.sessionId, sessionToken);
181
- } else if (payload.status === 'cancelled') {
182
- cleanup();
183
- setError('Authorization was denied.');
184
- } else if (payload.status === 'expired') {
185
- cleanup();
186
- setError('Session expired. Please try again.');
187
- }
188
- });
189
- socket.on('connect_error', err => {
190
- debug.log('Socket connection error, falling back to polling:', err instanceof Error ? err.message : null);
191
- // Realtime transport errored — reflect the honest connection state. The
192
- // poll is already running (started unconditionally in
193
- // `generateAuthSession`), so `startPolling` here is a no-op backstop.
194
- socket.disconnect();
195
- setConnectionType('polling');
196
- startPolling(sessionToken);
197
- });
198
- socket.on('disconnect', () => {
199
- debug.log('Auth socket disconnected');
200
- });
201
- }, [oxyServices, handleAuthSuccess]);
202
-
203
- // Start polling for authorization.
204
- //
205
- // Idempotent: if a poll interval is already running this is a no-op, so the
206
- // `connect_error` path (which also calls this) cannot stack a second interval
207
- // on top of the always-on poll started in `generateAuthSession`.
208
- const startPolling = useCallback(sessionToken => {
209
- if (pollingIntervalRef.current) return;
210
- pollingIntervalRef.current = setInterval(async () => {
211
- if (isProcessingRef.current) return;
212
- try {
213
- const response = await oxyServices.makeRequest('GET', `/auth/session/status/${sessionToken}`, undefined, {
214
- cache: false
215
- });
216
- if (response.authorized && response.sessionId) {
217
- cleanup();
218
- // Pass the original sessionToken (in closure) through; the claim
219
- // exchange needs it to mint the first access token.
220
- handleAuthSuccess(response.sessionId, sessionToken);
221
- } else if (response.status === 'cancelled') {
222
- cleanup();
223
- setError('Authorization was denied.');
224
- } else if (response.status === 'expired') {
225
- cleanup();
226
- setError('Session expired. Please try again.');
227
- }
228
- } catch (err) {
229
- // Silent fail for polling - will retry
230
- debug.log('Auth polling error:', err);
231
- }
232
- }, POLLING_INTERVAL_MS);
233
- }, [oxyServices, handleAuthSuccess]);
234
-
235
- // Cleanup socket and polling
236
- const cleanup = useCallback(() => {
237
- setIsWaiting(false);
238
- if (socketRef.current) {
239
- socketRef.current.disconnect();
240
- socketRef.current = null;
241
- }
242
- if (pollingIntervalRef.current) {
243
- clearInterval(pollingIntervalRef.current);
244
- pollingIntervalRef.current = null;
245
- }
246
- }, []);
247
-
248
- // Generate a new auth session
249
- const generateAuthSession = useCallback(async () => {
250
- setIsLoading(true);
251
- setError(null);
252
- isProcessingRef.current = false;
253
-
254
- // The cross-app device sign-in flow identifies the requesting app by its
255
- // real registered OAuth client id (ApplicationCredential publicKey).
256
- // Without it the API cannot resolve the consent identity, so we fail fast
257
- // with a clear configuration error rather than creating a session the
258
- // server would reject.
259
- if (!clientId) {
260
- setError('This app is not configured for sign-in (missing clientId).');
261
- setIsLoading(false);
262
- return;
263
- }
264
- try {
265
- // Generate a unique session token for this auth request
266
- const sessionToken = generateSessionToken();
267
- const expiresAt = Date.now() + AUTH_SESSION_EXPIRY_MS;
268
-
269
- // Register the auth session with the server
270
- await oxyServices.makeRequest('POST', '/auth/session/create', {
271
- sessionToken,
272
- expiresAt,
273
- clientId
274
- }, {
275
- cache: false
276
- });
277
- setAuthSession({
278
- sessionToken,
279
- expiresAt
280
- });
281
- setIsWaiting(true);
282
-
283
- // Socket is the fast path; the poll is a transport-independent backstop
284
- // that guarantees completion even if the socket connects but silently
285
- // never delivers auth_update (RN transport / idle-timeout).
286
- connectSocket(sessionToken);
287
- startPolling(sessionToken);
288
- } catch (err) {
289
- setError((err instanceof Error ? err.message : null) || 'Failed to create auth session');
290
- } finally {
291
- setIsLoading(false);
292
- }
293
- }, [oxyServices, connectSocket, startPolling, clientId]);
294
-
295
- // Generate a random session token
296
- const generateSessionToken = () => {
297
- const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
298
- let result = '';
299
- for (let i = 0; i < 32; i++) {
300
- result += chars.charAt(Math.floor(Math.random() * chars.length));
301
- }
302
- return result;
303
- };
304
-
305
- // Clean up on unmount
306
- useEffect(() => {
307
- return () => {
308
- cleanup();
309
- };
310
- }, [cleanup]);
311
-
312
- // Initialize auth session
313
- useEffect(() => {
314
- generateAuthSession();
315
- }, []);
316
-
317
- // Check if session expired
318
- useEffect(() => {
319
- if (authSession && Date.now() > authSession.expiresAt) {
320
- cleanup();
321
- setAuthSession(null);
322
- setError('Session expired. Please try again.');
323
- }
324
- }, [authSession, cleanup]);
325
-
326
- // Build the QR code data
327
- const getQRData = () => {
328
- if (!authSession) return '';
329
-
330
- // Format: oxyauth://{sessionToken}
331
- return `oxyauth://${authSession.sessionToken}`;
332
- };
333
-
334
- // Open Oxy Auth web flow
335
- const handleOpenAuth = useCallback(async () => {
336
- if (!authSession) return;
337
- const authBaseUrl = resolveAuthWebBaseUrl(oxyServices.getBaseURL(), oxyServices.config?.authWebUrl);
338
- const webUrl = new URL('/authorize', authBaseUrl);
339
- webUrl.searchParams.set('token', authSession.sessionToken);
340
- const redirectUri = await resolveAuthRedirectUri(oxyServices.config?.authRedirectUri);
341
- if (redirectUri) {
342
- webUrl.searchParams.set('redirect_uri', redirectUri);
343
- }
344
- try {
345
- await Linking.openURL(webUrl.toString());
346
- } catch (err) {
347
- setError('Unable to open Oxy Auth. Please try again or use the QR code.');
348
- }
349
- }, [authSession, oxyServices]);
350
-
351
- // Refresh session
352
- const handleRefresh = useCallback(() => {
353
- cleanup();
354
- generateAuthSession();
355
- }, [generateAuthSession, cleanup]);
356
- const handleAuthRedirect = useCallback(url => {
357
- const params = getRedirectParams(url);
358
- if (!params) {
359
- return;
360
- }
361
- if (params.error) {
362
- cleanup();
363
- setError('Authorization was denied.');
364
- return;
365
- }
366
- if (params.sessionId) {
367
- // The deep-link return carries only `session_id` — the secret
368
- // `sessionToken` for this flow lives in component state (generated in
369
- // `generateAuthSession`). Without it we cannot claim the first access
370
- // token, so the flow would 401 in `handleAuthSuccess`. If it is somehow
371
- // unavailable, fall through to the socket/poll path (which carries the
372
- // token in closure) rather than attempting an unauthenticated claim.
373
- const flowSessionToken = authSession?.sessionToken;
374
- if (!flowSessionToken) {
375
- return;
376
- }
377
- cleanup();
378
- handleAuthSuccess(params.sessionId, flowSessionToken);
379
- }
380
- }, [authSession, cleanup, handleAuthSuccess]);
381
- useEffect(() => {
382
- if (Platform.OS === 'web') {
383
- return;
384
- }
385
- const subscription = Linking.addEventListener('url', ({
386
- url
387
- }) => {
388
- linkingHandledRef.current = true;
389
- handleAuthRedirect(url);
390
- });
391
- Linking.getInitialURL().then(url => {
392
- if (url && !linkingHandledRef.current) {
393
- handleAuthRedirect(url);
394
- }
395
- }).catch(() => {
396
- // Ignore linking errors; auth will still resolve via socket/polling.
397
- });
398
- return () => {
399
- subscription.remove();
400
- };
401
- }, [handleAuthRedirect]);
39
+ const {
40
+ qrData,
41
+ isLoading,
42
+ error,
43
+ isWaiting,
44
+ openAuthApproval,
45
+ retry
46
+ } = useOxyAuthSession(oxyServices, clientId, switchSession, {
47
+ onSignedIn: onAuthenticated
48
+ });
402
49
  if (isLoading) {
403
50
  return /*#__PURE__*/_jsxs(View, {
404
51
  style: [styles.container, {
@@ -424,11 +71,8 @@ const OxyAuthScreen = ({
424
71
  children: error
425
72
  }), /*#__PURE__*/_jsx(Button, {
426
73
  variant: "primary",
427
- onPress: handleRefresh,
428
- style: {
429
- width: '100%',
430
- borderRadius: 12
431
- },
74
+ onPress: retry,
75
+ style: styles.primaryButton,
432
76
  children: "Try Again"
433
77
  })]
434
78
  });
@@ -445,84 +89,57 @@ const OxyAuthScreen = ({
445
89
  }), /*#__PURE__*/_jsx(Text, {
446
90
  style: styles.title,
447
91
  className: "text-foreground",
448
- children: "Sign in with Oxy"
92
+ children: "Sign in to Oxy"
449
93
  }), /*#__PURE__*/_jsx(Text, {
450
94
  style: styles.subtitle,
451
95
  className: "text-muted-foreground",
452
- children: "Use your Oxy identity to sign in securely"
453
- })]
454
- }), /*#__PURE__*/_jsxs(View, {
455
- style: styles.qrContainer,
456
- className: "bg-secondary border-border",
457
- children: [/*#__PURE__*/_jsx(View, {
458
- style: styles.qrWrapper,
459
- children: /*#__PURE__*/_jsx(QRCode, {
460
- value: getQRData(),
461
- size: 200,
462
- backgroundColor: "white",
463
- color: "black"
464
- })
465
- }), /*#__PURE__*/_jsx(Text, {
466
- style: styles.qrHint,
467
- className: "text-muted-foreground",
468
- children: "Scan with Oxy Accounts app"
469
- })]
470
- }), /*#__PURE__*/_jsxs(View, {
471
- style: styles.dividerContainer,
472
- children: [/*#__PURE__*/_jsx(View, {
473
- style: styles.divider,
474
- className: "bg-border"
475
- }), /*#__PURE__*/_jsx(Text, {
476
- style: styles.dividerText,
477
- className: "text-muted-foreground",
478
- children: "or"
479
- }), /*#__PURE__*/_jsx(View, {
480
- style: styles.divider,
481
- className: "bg-border"
96
+ children: "Continue with your Oxy identity to sign in securely"
482
97
  })]
483
98
  }), /*#__PURE__*/_jsx(Button, {
484
99
  variant: "primary",
485
- onPress: handleOpenAuth,
100
+ onPress: openAuthApproval,
486
101
  icon: /*#__PURE__*/_jsx(OxyLogo, {
487
102
  variant: "icon",
488
103
  size: 20,
489
- fillColor: bloomTheme.colors.card,
104
+ fillColor: bloomTheme.colors.primaryForeground,
490
105
  style: styles.buttonIcon
491
106
  }),
492
- style: {
493
- width: '100%',
494
- borderRadius: 12
495
- },
496
- children: "Open Oxy Auth"
107
+ style: styles.primaryButton,
108
+ children: "Continue with Oxy"
497
109
  }), isWaiting && /*#__PURE__*/_jsxs(View, {
498
110
  style: styles.statusContainer,
499
111
  children: [/*#__PURE__*/_jsx(Loading, {
500
112
  size: "small",
501
- style: {
502
- flex: undefined
503
- }
113
+ style: styles.statusSpinner
504
114
  }), /*#__PURE__*/_jsx(Text, {
505
115
  style: styles.statusText,
506
116
  className: "text-muted-foreground",
507
117
  children: "Waiting for authorization..."
508
118
  })]
119
+ }), /*#__PURE__*/_jsx(View, {
120
+ style: styles.qrSection,
121
+ children: /*#__PURE__*/_jsx(AnotherDeviceQR, {
122
+ qrData: qrData
123
+ })
509
124
  }), /*#__PURE__*/_jsxs(View, {
510
125
  style: styles.footer,
511
126
  children: [/*#__PURE__*/_jsxs(Text, {
512
127
  style: styles.footerText,
513
128
  className: "text-muted-foreground",
514
- children: ["Don't have Oxy Accounts?", ' ']
129
+ children: ["Don't have an Oxy account?", ' ']
515
130
  }), /*#__PURE__*/_jsx(TouchableOpacity, {
516
131
  onPress: () => Linking.openURL(OXY_ACCOUNTS_WEB_URL),
132
+ accessibilityRole: "link",
517
133
  children: /*#__PURE__*/_jsx(Text, {
518
134
  style: styles.footerLink,
519
135
  className: "text-primary",
520
- children: "Get it here"
136
+ children: "Create one"
521
137
  })
522
138
  })]
523
139
  }), goBack && /*#__PURE__*/_jsx(TouchableOpacity, {
524
140
  style: styles.cancelButton,
525
141
  onPress: goBack,
142
+ accessibilityRole: "button",
526
143
  children: /*#__PURE__*/_jsx(Text, {
527
144
  style: styles.cancelText,
528
145
  className: "text-muted-foreground",
@@ -540,62 +157,47 @@ const styles = StyleSheet.create({
540
157
  },
541
158
  header: {
542
159
  alignItems: 'center',
543
- marginBottom: 32
160
+ marginBottom: 28
544
161
  },
545
162
  title: {
546
163
  fontSize: 24,
547
164
  fontWeight: 'bold',
548
- marginTop: 16
165
+ marginTop: 16,
166
+ textAlign: 'center'
549
167
  },
550
168
  subtitle: {
551
169
  fontSize: 14,
552
170
  marginTop: 8,
553
171
  textAlign: 'center'
554
172
  },
555
- qrContainer: {
556
- padding: 24,
557
- borderRadius: 16,
558
- borderWidth: 1,
559
- alignItems: 'center'
560
- },
561
- qrWrapper: {
562
- padding: 16,
563
- backgroundColor: 'white',
173
+ primaryButton: {
174
+ width: '100%',
564
175
  borderRadius: 12
565
176
  },
566
- qrHint: {
567
- marginTop: 16,
568
- fontSize: 12
569
- },
570
- dividerContainer: {
571
- flexDirection: 'row',
572
- alignItems: 'center',
573
- marginVertical: 24,
574
- width: '100%'
575
- },
576
- divider: {
577
- flex: 1,
578
- height: 1
579
- },
580
- dividerText: {
581
- marginHorizontal: 16,
582
- fontSize: 14
583
- },
584
177
  buttonIcon: {
585
178
  marginRight: 10
586
179
  },
587
180
  statusContainer: {
588
181
  flexDirection: 'row',
589
182
  alignItems: 'center',
590
- marginTop: 24
183
+ marginTop: 20
184
+ },
185
+ statusSpinner: {
186
+ flex: undefined
591
187
  },
592
188
  statusText: {
593
189
  marginLeft: 8,
594
190
  fontSize: 14
595
191
  },
192
+ qrSection: {
193
+ width: '100%',
194
+ marginTop: 24
195
+ },
596
196
  footer: {
597
197
  flexDirection: 'row',
598
- marginTop: 32
198
+ flexWrap: 'wrap',
199
+ justifyContent: 'center',
200
+ marginTop: 28
599
201
  },
600
202
  footerText: {
601
203
  fontSize: 14
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useCallback","useRef","View","Text","TouchableOpacity","StyleSheet","Linking","Platform","io","useTheme","Button","Loading","useOxy","QRCode","OxyLogo","createDebugLogger","completeDeviceFlowSignIn","jsx","_jsx","jsxs","_jsxs","debug","OXY_ACCOUNTS_WEB_URL","OXY_AUTH_WEB_URL","AUTH_SESSION_EXPIRY_MS","POLLING_INTERVAL_MS","resolveAuthWebBaseUrl","baseURL","authWebUrl","url","URL","port","origin","hostname","startsWith","slice","resolveAuthRedirectUri","authRedirectUri","initialUrl","getInitialURL","parsed","search","hash","toString","getRedirectParams","sessionId","searchParams","get","undefined","error","OxyAuthScreen","navigate","goBack","onAuthenticated","theme","bloomTheme","oxyServices","switchSession","clientId","authSession","setAuthSession","isLoading","setIsLoading","setError","isWaiting","setIsWaiting","connectionType","setConnectionType","socketRef","pollingIntervalRef","isProcessingRef","linkingHandledRef","handleAuthSuccess","sessionToken","current","Error","user","err","connectSocket","getBaseURL","socket","transports","reconnection","reconnectionAttempts","reconnectionDelay","on","log","emit","payload","status","cleanup","message","disconnect","startPolling","setInterval","response","makeRequest","cache","authorized","clearInterval","generateAuthSession","generateSessionToken","expiresAt","Date","now","chars","result","i","charAt","Math","floor","random","length","getQRData","handleOpenAuth","authBaseUrl","config","webUrl","set","redirectUri","openURL","handleRefresh","handleAuthRedirect","params","flowSessionToken","OS","subscription","addEventListener","then","catch","remove","style","styles","container","backgroundColor","colors","background","children","size","loadingText","className","errorText","variant","onPress","width","borderRadius","header","title","subtitle","qrContainer","qrWrapper","value","color","qrHint","dividerContainer","divider","dividerText","icon","fillColor","card","buttonIcon","statusContainer","flex","statusText","footer","footerText","footerLink","cancelButton","cancelText","create","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","borderWidth","flexDirection","marginVertical","height","marginHorizontal","marginRight","marginLeft"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["View","Text","TouchableOpacity","StyleSheet","Linking","useTheme","Button","Loading","useOxy","OxyLogo","AnotherDeviceQR","useOxyAuthSession","OXY_ACCOUNTS_WEB_URL","jsx","_jsx","jsxs","_jsxs","OxyAuthScreen","goBack","onAuthenticated","bloomTheme","oxyServices","switchSession","clientId","qrData","isLoading","error","isWaiting","openAuthApproval","retry","onSignedIn","style","styles","container","backgroundColor","colors","background","children","size","loadingText","className","errorText","variant","onPress","primaryButton","header","title","subtitle","icon","fillColor","primaryForeground","buttonIcon","statusContainer","statusSpinner","statusText","qrSection","footer","footerText","openURL","accessibilityRole","footerLink","cancelButton","cancelText","create","flex","padding","alignItems","justifyContent","marginBottom","fontSize","fontWeight","marginTop","textAlign","width","borderRadius","marginRight","flexDirection","undefined","marginLeft","flexWrap"],"sourceRoot":"../../../../src","sources":["ui/screens/OxyAuthScreen.tsx"],"mappings":"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","ignoreList":[]}