@oxyhq/services 5.2.2 → 5.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/commonjs/core/index.js +117 -0
  2. package/lib/commonjs/core/index.js.map +1 -1
  3. package/lib/commonjs/models/secureSession.js +2 -0
  4. package/lib/commonjs/models/secureSession.js.map +1 -0
  5. package/lib/commonjs/ui/context/LegacyOxyContext.js +643 -0
  6. package/lib/commonjs/ui/context/LegacyOxyContext.js.map +1 -0
  7. package/lib/commonjs/ui/context/OxyContext.js +215 -450
  8. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  9. package/lib/commonjs/ui/context/SecureOxyContext.js +408 -0
  10. package/lib/commonjs/ui/context/SecureOxyContext.js.map +1 -0
  11. package/lib/commonjs/ui/screens/AccountCenterScreen.js +3 -3
  12. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  13. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +31 -30
  14. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  15. package/lib/commonjs/ui/screens/AppInfoScreen.js +4 -4
  16. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  17. package/lib/commonjs/ui/screens/SessionManagementScreen.js +34 -34
  18. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  19. package/lib/commonjs/ui/screens/SignInScreen.js +2 -2
  20. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  21. package/lib/module/core/index.js +117 -0
  22. package/lib/module/core/index.js.map +1 -1
  23. package/lib/module/models/secureSession.js +2 -0
  24. package/lib/module/models/secureSession.js.map +1 -0
  25. package/lib/module/ui/context/LegacyOxyContext.js +639 -0
  26. package/lib/module/ui/context/LegacyOxyContext.js.map +1 -0
  27. package/lib/module/ui/context/OxyContext.js +214 -450
  28. package/lib/module/ui/context/OxyContext.js.map +1 -1
  29. package/lib/module/ui/context/SecureOxyContext.js +403 -0
  30. package/lib/module/ui/context/SecureOxyContext.js.map +1 -0
  31. package/lib/module/ui/screens/AccountCenterScreen.js +3 -3
  32. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  33. package/lib/module/ui/screens/AccountSwitcherScreen.js +31 -30
  34. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  35. package/lib/module/ui/screens/AppInfoScreen.js +4 -4
  36. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  37. package/lib/module/ui/screens/SessionManagementScreen.js +34 -34
  38. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  39. package/lib/module/ui/screens/SignInScreen.js +2 -2
  40. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  41. package/lib/typescript/core/index.d.ts +51 -0
  42. package/lib/typescript/core/index.d.ts.map +1 -1
  43. package/lib/typescript/models/secureSession.d.ts +25 -0
  44. package/lib/typescript/models/secureSession.d.ts.map +1 -0
  45. package/lib/typescript/ui/context/LegacyOxyContext.d.ts +40 -0
  46. package/lib/typescript/ui/context/LegacyOxyContext.d.ts.map +1 -0
  47. package/lib/typescript/ui/context/OxyContext.d.ts +11 -12
  48. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  49. package/lib/typescript/ui/context/SecureOxyContext.d.ts +39 -0
  50. package/lib/typescript/ui/context/SecureOxyContext.d.ts.map +1 -0
  51. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  52. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/src/core/index.ts +117 -0
  55. package/src/index.ts +2 -2
  56. package/src/models/secureSession.ts +27 -0
  57. package/src/ui/context/LegacyOxyContext.tsx +735 -0
  58. package/src/ui/context/OxyContext.tsx +412 -674
  59. package/src/ui/context/SecureOxyContext.tsx +473 -0
  60. package/src/ui/screens/AccountCenterScreen.tsx +4 -4
  61. package/src/ui/screens/AccountSwitcherScreen.tsx +36 -34
  62. package/src/ui/screens/AppInfoScreen.tsx +3 -3
  63. package/src/ui/screens/SessionManagementScreen.tsx +31 -35
  64. package/src/ui/screens/SignInScreen.tsx +2 -2
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useContext, useState, useEffect, useCallback, useMemo } from 'react';
4
+
5
+ // Define authenticated user with tokens
6
+
7
+ // Define the legacy context shape
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ // Create the context with default values
10
+ const LegacyOxyContext = /*#__PURE__*/createContext(null);
11
+
12
+ // Props for the LegacyOxyContextProvider
13
+
14
+ // Platform storage implementation
15
+
16
+ // Web localStorage implementation
17
+ class WebStorage {
18
+ async getItem(key) {
19
+ return localStorage.getItem(key);
20
+ }
21
+ async setItem(key, value) {
22
+ localStorage.setItem(key, value);
23
+ }
24
+ async removeItem(key) {
25
+ localStorage.removeItem(key);
26
+ }
27
+ async clear() {
28
+ localStorage.clear();
29
+ }
30
+ }
31
+
32
+ // React Native AsyncStorage implementation
33
+ // This will be dynamically imported only in React Native environment
34
+ let AsyncStorage;
35
+
36
+ // Determine the platform and set up storage
37
+ const isReactNative = () => {
38
+ return typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
39
+ };
40
+
41
+ // Get appropriate storage for the platform
42
+ const getStorage = async () => {
43
+ if (isReactNative()) {
44
+ // Dynamically import AsyncStorage only in React Native environment
45
+ if (!AsyncStorage) {
46
+ try {
47
+ const asyncStorageModule = await import('@react-native-async-storage/async-storage');
48
+ AsyncStorage = asyncStorageModule.default;
49
+ } catch (error) {
50
+ console.error('Failed to import AsyncStorage:', error);
51
+ throw new Error('AsyncStorage is required in React Native environment');
52
+ }
53
+ }
54
+ return AsyncStorage;
55
+ }
56
+
57
+ // Default to web storage
58
+ return new WebStorage();
59
+ };
60
+
61
+ // Storage keys
62
+ const getStorageKeys = (prefix = 'oxy') => ({
63
+ users: `${prefix}_users`,
64
+ // Array of authenticated users with tokens
65
+ activeUserId: `${prefix}_active_user_id`,
66
+ // ID of currently active user
67
+ // Legacy keys for migration
68
+ accessToken: `${prefix}_access_token`,
69
+ refreshToken: `${prefix}_refresh_token`,
70
+ user: `${prefix}_user`
71
+ });
72
+ export const LegacyOxyContextProvider = ({
73
+ children,
74
+ oxyServices,
75
+ storageKeyPrefix = 'oxy',
76
+ onAuthStateChange,
77
+ bottomSheetRef
78
+ }) => {
79
+ // Authentication state
80
+ const [user, setUser] = useState(null);
81
+ const [users, setUsers] = useState([]);
82
+ const [isLoading, setIsLoading] = useState(true);
83
+ const [error, setError] = useState(null);
84
+ const [storage, setStorage] = useState(null);
85
+
86
+ // Storage keys (memoized to prevent infinite loops)
87
+ const keys = useMemo(() => getStorageKeys(storageKeyPrefix), [storageKeyPrefix]);
88
+
89
+ // Initialize storage
90
+ useEffect(() => {
91
+ const initStorage = async () => {
92
+ try {
93
+ const platformStorage = await getStorage();
94
+ setStorage(platformStorage);
95
+ } catch (error) {
96
+ console.error('Failed to initialize storage:', error);
97
+ setError('Failed to initialize storage');
98
+ }
99
+ };
100
+ initStorage();
101
+ }, []);
102
+
103
+ // Effect to initialize authentication state
104
+ useEffect(() => {
105
+ const initAuth = async () => {
106
+ if (!storage) return;
107
+ setIsLoading(true);
108
+ try {
109
+ // Check for multi-user data first
110
+ const usersData = await storage.getItem(keys.users);
111
+ const activeUserId = await storage.getItem(keys.activeUserId);
112
+ console.log('InitAuth - usersData:', usersData);
113
+ console.log('InitAuth - activeUserId:', activeUserId);
114
+ if (usersData) {
115
+ // Multi-user setup exists
116
+ const parsedUsers = JSON.parse(usersData);
117
+ console.log('InitAuth - parsedUsers:', parsedUsers);
118
+ setUsers(parsedUsers);
119
+ if (activeUserId && parsedUsers.length > 0) {
120
+ const activeUser = parsedUsers.find(u => u.id === activeUserId);
121
+ console.log('InitAuth - activeUser found:', activeUser);
122
+ if (activeUser) {
123
+ setUser(activeUser);
124
+ oxyServices.setTokens(activeUser.accessToken, activeUser.refreshToken || activeUser.accessToken);
125
+
126
+ // Validate the tokens
127
+ const isValid = await oxyServices.validate();
128
+ console.log('InitAuth - token validation result:', isValid);
129
+ if (!isValid) {
130
+ // Remove invalid user during initialization
131
+ console.log('InitAuth - removing invalid user due to failed validation');
132
+ const filteredUsers = parsedUsers.filter(u => u.id !== activeUser.id);
133
+ setUsers(filteredUsers);
134
+ await saveUsersToStorage(filteredUsers);
135
+
136
+ // If there are other users, switch to the first one
137
+ if (filteredUsers.length > 0) {
138
+ const newActiveUser = filteredUsers[0];
139
+ setUser(newActiveUser);
140
+ await saveActiveUserId(newActiveUser.id);
141
+ oxyServices.setTokens(newActiveUser.accessToken, newActiveUser.refreshToken || newActiveUser.accessToken);
142
+ if (onAuthStateChange) {
143
+ onAuthStateChange(newActiveUser);
144
+ }
145
+ } else {
146
+ // No valid users left
147
+ setUser(null);
148
+ await storage.removeItem(keys.activeUserId);
149
+ oxyServices.clearTokens();
150
+ if (onAuthStateChange) {
151
+ onAuthStateChange(null);
152
+ }
153
+ }
154
+ } else {
155
+ console.log('InitAuth - user validated successfully, setting auth state');
156
+ // Notify about auth state change
157
+ if (onAuthStateChange) {
158
+ onAuthStateChange(activeUser);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ } else {
164
+ console.log('InitAuth - no users data, checking legacy auth');
165
+ // Check for legacy single-user data and migrate
166
+ await migrateLegacyAuth();
167
+ }
168
+ } catch (err) {
169
+ console.error('Auth initialization error:', err);
170
+ await clearAllStorage();
171
+ oxyServices.clearTokens();
172
+ } finally {
173
+ setIsLoading(false);
174
+ }
175
+ };
176
+ if (storage) {
177
+ initAuth();
178
+ }
179
+ }, [storage, oxyServices, keys, onAuthStateChange]);
180
+
181
+ // Migrate legacy single-user authentication to multi-user
182
+ const migrateLegacyAuth = useCallback(async () => {
183
+ if (!storage) return;
184
+ try {
185
+ const accessToken = await storage.getItem(keys.accessToken);
186
+ const refreshToken = await storage.getItem(keys.refreshToken);
187
+ const storedUser = await storage.getItem(keys.user);
188
+ if (accessToken && storedUser) {
189
+ // Set tokens in OxyServices
190
+ oxyServices.setTokens(accessToken, refreshToken || accessToken);
191
+
192
+ // Validate the tokens
193
+ const isValid = await oxyServices.validate();
194
+ if (isValid) {
195
+ const parsedUser = JSON.parse(storedUser);
196
+ const authenticatedUser = {
197
+ ...parsedUser,
198
+ accessToken,
199
+ refreshToken: refreshToken || undefined
200
+ };
201
+
202
+ // Store in new multi-user format
203
+ await storage.setItem(keys.users, JSON.stringify([authenticatedUser]));
204
+ await storage.setItem(keys.activeUserId, authenticatedUser.id);
205
+
206
+ // Set state
207
+ setUsers([authenticatedUser]);
208
+ setUser(authenticatedUser);
209
+
210
+ // Notify about auth state change
211
+ if (onAuthStateChange) {
212
+ onAuthStateChange(authenticatedUser);
213
+ }
214
+ }
215
+
216
+ // Clear legacy storage
217
+ await storage.removeItem(keys.accessToken);
218
+ await storage.removeItem(keys.refreshToken);
219
+ await storage.removeItem(keys.user);
220
+ }
221
+ } catch (err) {
222
+ console.error('Migration error:', err);
223
+ }
224
+ }, [storage, keys, oxyServices, onAuthStateChange]);
225
+
226
+ // Helper to clear legacy storage
227
+ const clearStorage = useCallback(async () => {
228
+ if (!storage) return;
229
+ try {
230
+ await storage.removeItem(keys.accessToken);
231
+ await storage.removeItem(keys.refreshToken);
232
+ await storage.removeItem(keys.user);
233
+ } catch (err) {
234
+ console.error('Clear storage error:', err);
235
+ }
236
+ }, [storage, keys]);
237
+
238
+ // Helper to clear all storage (multi-user)
239
+ const clearAllStorage = useCallback(async () => {
240
+ if (!storage) return;
241
+ try {
242
+ await storage.removeItem(keys.users);
243
+ await storage.removeItem(keys.activeUserId);
244
+ // Also clear legacy keys
245
+ await clearStorage();
246
+ } catch (err) {
247
+ console.error('Clear all storage error:', err);
248
+ }
249
+ }, [storage, keys, clearStorage]);
250
+
251
+ // Save users to storage
252
+ const saveUsersToStorage = useCallback(async usersList => {
253
+ if (!storage) return;
254
+ await storage.setItem(keys.users, JSON.stringify(usersList));
255
+ }, [storage, keys.users]);
256
+
257
+ // Save active user ID to storage
258
+ const saveActiveUserId = useCallback(async userId => {
259
+ if (!storage) return;
260
+ await storage.setItem(keys.activeUserId, userId);
261
+ }, [storage, keys.activeUserId]);
262
+
263
+ // Utility function to handle different token response formats
264
+ const storeTokens = useCallback(async response => {
265
+ // Store token and user data
266
+ if (response.accessToken) {
267
+ await storage?.setItem(keys.accessToken, response.accessToken);
268
+ if (response.refreshToken) {
269
+ await storage?.setItem(keys.refreshToken, response.refreshToken);
270
+ }
271
+ } else if (response.token) {
272
+ // Handle legacy API response
273
+ await storage?.setItem(keys.accessToken, response.token);
274
+ }
275
+ await storage?.setItem(keys.user, JSON.stringify(response.user));
276
+ }, [storage, keys]);
277
+
278
+ // Login method (updated for multi-user)
279
+ const login = async (username, password) => {
280
+ if (!storage) throw new Error('Storage not initialized');
281
+ setIsLoading(true);
282
+ setError(null);
283
+ try {
284
+ const response = await oxyServices.login(username, password);
285
+ const accessToken = response.accessToken || response.token;
286
+ if (!accessToken) {
287
+ throw new Error('No access token received from login');
288
+ }
289
+ const newUser = {
290
+ ...response.user,
291
+ accessToken,
292
+ refreshToken: response.refreshToken
293
+ // sessionId will be set by backend, but we don't get it in response yet
294
+ };
295
+
296
+ // Check if user already exists
297
+ const existingUserIndex = users.findIndex(u => u.id === newUser.id);
298
+ let updatedUsers;
299
+ if (existingUserIndex >= 0) {
300
+ // Update existing user
301
+ updatedUsers = [...users];
302
+ updatedUsers[existingUserIndex] = newUser;
303
+ } else {
304
+ // Add new user
305
+ updatedUsers = [...users, newUser];
306
+ }
307
+
308
+ // Update state
309
+ setUsers(updatedUsers);
310
+ setUser(newUser);
311
+
312
+ // Save to storage
313
+ await saveUsersToStorage(updatedUsers);
314
+ await saveActiveUserId(newUser.id);
315
+
316
+ // Notify about auth state change
317
+ if (onAuthStateChange) {
318
+ onAuthStateChange(newUser);
319
+ }
320
+ return newUser;
321
+ } catch (err) {
322
+ setError(err.message || 'Login failed');
323
+ throw err;
324
+ } finally {
325
+ setIsLoading(false);
326
+ }
327
+ };
328
+
329
+ // Logout method (supports multi-user)
330
+ const logout = async userId => {
331
+ if (!storage) throw new Error('Storage not initialized');
332
+ setIsLoading(true);
333
+ setError(null);
334
+ try {
335
+ const targetUserId = userId || user?.id;
336
+ if (!targetUserId) return;
337
+ const targetUser = users.find(u => u.id === targetUserId);
338
+ if (targetUser) {
339
+ // Set the target user's tokens to logout
340
+ oxyServices.setTokens(targetUser.accessToken, targetUser.refreshToken || targetUser.accessToken);
341
+ try {
342
+ await oxyServices.logout();
343
+ } catch (logoutError) {
344
+ console.warn('Logout API call failed:', logoutError);
345
+ }
346
+
347
+ // Remove user from list
348
+ const updatedUsers = users.filter(u => u.id !== targetUserId);
349
+ setUsers(updatedUsers);
350
+
351
+ // If logging out current user, switch to another user or clear
352
+ if (targetUserId === user?.id) {
353
+ if (updatedUsers.length > 0) {
354
+ // Switch to first available user
355
+ const nextUser = updatedUsers[0];
356
+ setUser(nextUser);
357
+ oxyServices.setTokens(nextUser.accessToken, nextUser.refreshToken || nextUser.accessToken);
358
+ await saveActiveUserId(nextUser.id);
359
+ if (onAuthStateChange) {
360
+ onAuthStateChange(nextUser);
361
+ }
362
+ } else {
363
+ // No users left
364
+ setUser(null);
365
+ oxyServices.clearTokens();
366
+ await storage.removeItem(keys.activeUserId);
367
+ if (onAuthStateChange) {
368
+ onAuthStateChange(null);
369
+ }
370
+ }
371
+ }
372
+
373
+ // Save updated users list
374
+ await saveUsersToStorage(updatedUsers);
375
+ }
376
+ } catch (err) {
377
+ setError(err.message || 'Logout failed');
378
+ throw err;
379
+ } finally {
380
+ setIsLoading(false);
381
+ }
382
+ };
383
+
384
+ // Logout all users
385
+ const logoutAll = async () => {
386
+ if (!storage) throw new Error('Storage not initialized');
387
+ setIsLoading(true);
388
+ setError(null);
389
+ try {
390
+ // Logout each user
391
+ for (const userItem of users) {
392
+ try {
393
+ oxyServices.setTokens(userItem.accessToken, userItem.refreshToken || userItem.accessToken);
394
+ await oxyServices.logout();
395
+ } catch (logoutError) {
396
+ console.warn(`Logout failed for user ${userItem.id}:`, logoutError);
397
+ }
398
+ }
399
+
400
+ // Clear all state and storage
401
+ setUsers([]);
402
+ setUser(null);
403
+ oxyServices.clearTokens();
404
+ await clearAllStorage();
405
+
406
+ // Notify about auth state change
407
+ if (onAuthStateChange) {
408
+ onAuthStateChange(null);
409
+ }
410
+ } catch (err) {
411
+ setError(err.message || 'Logout all failed');
412
+ throw err;
413
+ } finally {
414
+ setIsLoading(false);
415
+ }
416
+ };
417
+
418
+ // Switch user
419
+ const switchUser = async userId => {
420
+ if (!storage) throw new Error('Storage not initialized');
421
+ setError(null);
422
+ try {
423
+ const targetUser = users.find(u => u.id === userId);
424
+ if (!targetUser) {
425
+ throw new Error('User not found');
426
+ }
427
+
428
+ // Validate tokens before switching
429
+ oxyServices.setTokens(targetUser.accessToken, targetUser.refreshToken || targetUser.accessToken);
430
+ const isValid = await oxyServices.validate();
431
+ if (!isValid) {
432
+ // Remove invalid user
433
+ await removeUser(userId);
434
+ throw new Error('User session is invalid');
435
+ }
436
+
437
+ // Switch to the user
438
+ setUser(targetUser);
439
+ await saveActiveUserId(userId);
440
+
441
+ // Notify about auth state change
442
+ if (onAuthStateChange) {
443
+ onAuthStateChange(targetUser);
444
+ }
445
+ } catch (err) {
446
+ setError(err.message || 'Switch user failed');
447
+ throw err;
448
+ }
449
+ };
450
+
451
+ // Remove user
452
+ const removeUser = async userId => {
453
+ if (!storage) throw new Error('Storage not initialized');
454
+ try {
455
+ const updatedUsers = users.filter(u => u.id !== userId);
456
+ setUsers(updatedUsers);
457
+
458
+ // If removing current user, switch to another or clear
459
+ if (userId === user?.id) {
460
+ if (updatedUsers.length > 0) {
461
+ await switchUser(updatedUsers[0].id);
462
+ } else {
463
+ setUser(null);
464
+ oxyServices.clearTokens();
465
+ await storage.removeItem(keys.activeUserId);
466
+ if (onAuthStateChange) {
467
+ onAuthStateChange(null);
468
+ }
469
+ }
470
+ }
471
+
472
+ // Save updated users list
473
+ await saveUsersToStorage(updatedUsers);
474
+ } catch (err) {
475
+ setError(err.message || 'Remove user failed');
476
+ throw err;
477
+ }
478
+ };
479
+
480
+ // Get user sessions
481
+ const getUserSessions = async userId => {
482
+ try {
483
+ const targetUserId = userId || user?.id;
484
+ if (!targetUserId) return [];
485
+ const targetUser = users.find(u => u.id === targetUserId);
486
+ if (!targetUser) return [];
487
+
488
+ // Store current tokens to restore later
489
+ const currentUser = user;
490
+ const wasCurrentUser = targetUserId === user?.id;
491
+ if (!wasCurrentUser) {
492
+ // Temporarily switch to target user's tokens
493
+ oxyServices.setTokens(targetUser.accessToken, targetUser.refreshToken || targetUser.accessToken);
494
+ }
495
+ try {
496
+ // Use the new OxyServices method
497
+ const sessions = await oxyServices.getUserSessions();
498
+ return sessions;
499
+ } finally {
500
+ if (!wasCurrentUser && currentUser) {
501
+ // Restore original tokens
502
+ oxyServices.setTokens(currentUser.accessToken, currentUser.refreshToken || currentUser.accessToken);
503
+ }
504
+ }
505
+ } catch (err) {
506
+ console.error('Get user sessions failed:', err);
507
+ return [];
508
+ }
509
+ };
510
+
511
+ // Logout specific session
512
+ const logoutSession = async (sessionId, userId) => {
513
+ try {
514
+ const targetUserId = userId || user?.id;
515
+ if (!targetUserId) return;
516
+ const targetUser = users.find(u => u.id === targetUserId);
517
+ if (!targetUser) return;
518
+
519
+ // Store current tokens to restore later
520
+ const currentUser = user;
521
+ const wasCurrentUser = targetUserId === user?.id;
522
+ if (!wasCurrentUser) {
523
+ // Temporarily switch to target user's tokens
524
+ oxyServices.setTokens(targetUser.accessToken, targetUser.refreshToken || targetUser.accessToken);
525
+ }
526
+ try {
527
+ // Use the new OxyServices method
528
+ await oxyServices.logoutSession(sessionId);
529
+
530
+ // If this is the current user's session, remove them from local state
531
+ if (wasCurrentUser && sessionId === targetUser.sessionId) {
532
+ await removeUser(targetUserId);
533
+ }
534
+ } finally {
535
+ if (!wasCurrentUser && currentUser) {
536
+ // Restore original tokens
537
+ oxyServices.setTokens(currentUser.accessToken, currentUser.refreshToken || currentUser.accessToken);
538
+ }
539
+ }
540
+ } catch (err) {
541
+ console.error('Logout session failed:', err);
542
+ throw err;
543
+ }
544
+ };
545
+
546
+ // Sign up method
547
+ const signUp = async (username, email, password) => {
548
+ if (!storage) throw new Error('Storage not initialized');
549
+ setIsLoading(true);
550
+ setError(null);
551
+ try {
552
+ const response = await oxyServices.signUp(username, email, password);
553
+ setUser(response.user);
554
+
555
+ // Store tokens
556
+ await storeTokens(response);
557
+
558
+ // Notify about auth state change
559
+ if (onAuthStateChange) {
560
+ onAuthStateChange(response.user);
561
+ }
562
+ return response.user;
563
+ } catch (err) {
564
+ setError(err.message || 'Sign up failed');
565
+ throw err;
566
+ } finally {
567
+ setIsLoading(false);
568
+ }
569
+ };
570
+
571
+ // Methods to control the bottom sheet
572
+ const showBottomSheet = useCallback(screenOrConfig => {
573
+ if (bottomSheetRef?.current) {
574
+ // Expand the bottom sheet
575
+ bottomSheetRef.current.expand();
576
+ if (typeof screenOrConfig === 'string') {
577
+ // If a screen is specified, navigate to it
578
+ if (screenOrConfig && bottomSheetRef.current._navigateToScreen) {
579
+ setTimeout(() => {
580
+ bottomSheetRef.current._navigateToScreen(screenOrConfig);
581
+ }, 100);
582
+ }
583
+ } else if (screenOrConfig && typeof screenOrConfig === 'object' && screenOrConfig.screen) {
584
+ // If an object is passed, navigate and pass props
585
+ if (bottomSheetRef.current._navigateToScreen) {
586
+ setTimeout(() => {
587
+ bottomSheetRef.current._navigateToScreen(screenOrConfig.screen, screenOrConfig.props || {});
588
+ }, 100);
589
+ }
590
+ }
591
+ }
592
+ }, [bottomSheetRef]);
593
+ const hideBottomSheet = useCallback(() => {
594
+ if (bottomSheetRef?.current) {
595
+ bottomSheetRef.current.close();
596
+ }
597
+ }, [bottomSheetRef]);
598
+
599
+ // Build context value
600
+ const contextValue = {
601
+ // Single user state (current active user)
602
+ user,
603
+ isAuthenticated: !!user,
604
+ isLoading,
605
+ error,
606
+ // Multi-user state
607
+ users,
608
+ // Auth methods
609
+ login,
610
+ logout,
611
+ logoutAll,
612
+ signUp,
613
+ // Multi-user methods
614
+ switchUser,
615
+ removeUser,
616
+ getUserSessions,
617
+ logoutSession,
618
+ // OxyServices instance
619
+ oxyServices,
620
+ // Bottom sheet methods
621
+ bottomSheetRef,
622
+ showBottomSheet,
623
+ hideBottomSheet
624
+ };
625
+ return /*#__PURE__*/_jsx(LegacyOxyContext.Provider, {
626
+ value: contextValue,
627
+ children: children
628
+ });
629
+ };
630
+
631
+ // Hook to use the legacy context
632
+ export const useLegacyOxy = () => {
633
+ const context = useContext(LegacyOxyContext);
634
+ if (!context) {
635
+ throw new Error('useLegacyOxy must be used within a LegacyOxyContextProvider');
636
+ }
637
+ return context;
638
+ };
639
+ //# sourceMappingURL=LegacyOxyContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useState","useEffect","useCallback","useMemo","jsx","_jsx","LegacyOxyContext","WebStorage","getItem","key","localStorage","setItem","value","removeItem","clear","AsyncStorage","isReactNative","navigator","product","getStorage","asyncStorageModule","default","error","console","Error","getStorageKeys","prefix","users","activeUserId","accessToken","refreshToken","user","LegacyOxyContextProvider","children","oxyServices","storageKeyPrefix","onAuthStateChange","bottomSheetRef","setUser","setUsers","isLoading","setIsLoading","setError","storage","setStorage","keys","initStorage","platformStorage","initAuth","usersData","log","parsedUsers","JSON","parse","length","activeUser","find","u","id","setTokens","isValid","validate","filteredUsers","filter","saveUsersToStorage","newActiveUser","saveActiveUserId","clearTokens","migrateLegacyAuth","err","clearAllStorage","storedUser","parsedUser","authenticatedUser","undefined","stringify","clearStorage","usersList","userId","storeTokens","response","token","login","username","password","newUser","existingUserIndex","findIndex","updatedUsers","message","logout","targetUserId","targetUser","logoutError","warn","nextUser","logoutAll","userItem","switchUser","removeUser","getUserSessions","currentUser","wasCurrentUser","sessions","logoutSession","sessionId","signUp","email","showBottomSheet","screenOrConfig","current","expand","_navigateToScreen","setTimeout","screen","props","hideBottomSheet","close","contextValue","isAuthenticated","Provider","useLegacyOxy","context"],"sourceRoot":"../../../../src","sources":["ui/context/LegacyOxyContext.tsx"],"mappings":"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","ignoreList":[]}