@onairos/react-native 3.1.16 → 3.1.17

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 (198) hide show
  1. package/README.md +404 -0
  2. package/lib/commonjs/assets/images/Checkbox.svg +3 -3
  3. package/lib/commonjs/assets/images/EnochE.svg +19 -19
  4. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -3
  5. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -3
  6. package/lib/commonjs/assets/images/Userpreferences.svg +3 -3
  7. package/lib/commonjs/assets/images/arrow.svg +20 -20
  8. package/lib/commonjs/assets/images/basicproficon.svg +43 -43
  9. package/lib/commonjs/assets/images/basicprofile.svg +3 -3
  10. package/lib/commonjs/assets/images/checkmark.svg +4 -4
  11. package/lib/commonjs/assets/images/contentanalysis.svg +3 -3
  12. package/lib/commonjs/assets/images/contenticon.svg +23 -23
  13. package/lib/commonjs/assets/images/personalityicon.svg +18 -18
  14. package/lib/commonjs/assets/images/x-close.svg +3 -3
  15. package/lib/commonjs/components/OnairosButton.js +290 -0
  16. package/lib/commonjs/components/OnairosButton.js.map +1 -0
  17. package/lib/commonjs/components/OnairosSignInButton.js +30 -8
  18. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -1
  19. package/lib/commonjs/components/UniversalOnboarding.js +4 -4
  20. package/lib/commonjs/config/api.js +2 -2
  21. package/lib/commonjs/hooks/useConnections.js +6 -6
  22. package/lib/commonjs/hooks/useUserConnections.js +10 -10
  23. package/lib/commonjs/index.js +9 -10
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/services/apiClient.js +35 -35
  26. package/lib/commonjs/services/apiKeyService.js +99 -99
  27. package/lib/commonjs/services/authService.js +82 -82
  28. package/lib/commonjs/services/biometricPinService.js +10 -10
  29. package/lib/commonjs/services/connectedAccountsService.js +32 -32
  30. package/lib/commonjs/services/googleAuthService.js +15 -15
  31. package/lib/commonjs/services/imageCompressionService.js +15 -15
  32. package/lib/commonjs/services/jwtStorageService.js +59 -59
  33. package/lib/commonjs/services/mobileTrainingService.js +14 -14
  34. package/lib/commonjs/services/pinEncryptionService.js +10 -10
  35. package/lib/commonjs/services/pinStorageUtils.js +15 -15
  36. package/lib/commonjs/services/platformAuthService.js +47 -47
  37. package/lib/commonjs/services/storageService.js +31 -31
  38. package/lib/commonjs/services/trainingApiHelpers.js +33 -33
  39. package/lib/commonjs/services/userConnectionsService.js +24 -24
  40. package/lib/commonjs/utils/Portal.js +4 -4
  41. package/lib/commonjs/utils/api.js +24 -24
  42. package/lib/commonjs/utils/auth.js +18 -18
  43. package/lib/commonjs/utils/crypto.js +13 -13
  44. package/lib/commonjs/utils/encryption.js +12 -12
  45. package/lib/commonjs/utils/eventUtils.js +52 -52
  46. package/lib/commonjs/utils/programmaticFlow.js +16 -16
  47. package/lib/commonjs/utils/retryHelper.js +27 -27
  48. package/lib/module/assets/images/Checkbox.svg +3 -3
  49. package/lib/module/assets/images/EnochE.svg +19 -19
  50. package/lib/module/assets/images/Personalityprofile.svg +3 -3
  51. package/lib/module/assets/images/Personalitytraits.svg +3 -3
  52. package/lib/module/assets/images/Userpreferences.svg +3 -3
  53. package/lib/module/assets/images/arrow.svg +20 -20
  54. package/lib/module/assets/images/basicproficon.svg +43 -43
  55. package/lib/module/assets/images/basicprofile.svg +3 -3
  56. package/lib/module/assets/images/checkmark.svg +4 -4
  57. package/lib/module/assets/images/contentanalysis.svg +3 -3
  58. package/lib/module/assets/images/contenticon.svg +23 -23
  59. package/lib/module/assets/images/personalityicon.svg +18 -18
  60. package/lib/module/assets/images/x-close.svg +3 -3
  61. package/lib/module/components/OnairosButton.js +282 -0
  62. package/lib/module/components/OnairosButton.js.map +1 -0
  63. package/lib/module/components/OnairosSignInButton.js +30 -8
  64. package/lib/module/components/OnairosSignInButton.js.map +1 -1
  65. package/lib/module/components/UniversalOnboarding.js +4 -4
  66. package/lib/module/config/api.js +2 -2
  67. package/lib/module/hooks/useConnections.js +6 -6
  68. package/lib/module/hooks/useUserConnections.js +10 -10
  69. package/lib/module/index.js +8 -10
  70. package/lib/module/index.js.map +1 -1
  71. package/lib/module/services/apiClient.js +35 -35
  72. package/lib/module/services/apiKeyService.js +99 -99
  73. package/lib/module/services/authService.js +82 -82
  74. package/lib/module/services/biometricPinService.js +10 -10
  75. package/lib/module/services/connectedAccountsService.js +32 -32
  76. package/lib/module/services/googleAuthService.js +15 -15
  77. package/lib/module/services/imageCompressionService.js +15 -15
  78. package/lib/module/services/jwtStorageService.js +59 -59
  79. package/lib/module/services/mobileTrainingService.js +14 -14
  80. package/lib/module/services/pinEncryptionService.js +10 -10
  81. package/lib/module/services/pinStorageUtils.js +15 -15
  82. package/lib/module/services/platformAuthService.js +47 -47
  83. package/lib/module/services/storageService.js +31 -31
  84. package/lib/module/services/trainingApiHelpers.js +33 -33
  85. package/lib/module/services/userConnectionsService.js +24 -24
  86. package/lib/module/utils/Portal.js +4 -4
  87. package/lib/module/utils/api.js +24 -24
  88. package/lib/module/utils/auth.js +18 -18
  89. package/lib/module/utils/crypto.js +13 -13
  90. package/lib/module/utils/encryption.js +12 -12
  91. package/lib/module/utils/eventUtils.js +52 -52
  92. package/lib/module/utils/programmaticFlow.js +16 -16
  93. package/lib/module/utils/retryHelper.js +27 -27
  94. package/lib/typescript/components/OnairosButton.d.ts +37 -0
  95. package/lib/typescript/components/OnairosButton.d.ts.map +1 -0
  96. package/lib/typescript/components/OnairosSignInButton.d.ts +2 -1
  97. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -1
  98. package/lib/typescript/index.d.ts +3 -4
  99. package/lib/typescript/index.d.ts.map +1 -1
  100. package/package.json +163 -163
  101. package/src/api/index.ts +151 -151
  102. package/src/assets/images/Checkbox.svg +3 -3
  103. package/src/assets/images/EnochE.svg +19 -19
  104. package/src/assets/images/Personalityprofile.svg +3 -3
  105. package/src/assets/images/Personalitytraits.svg +3 -3
  106. package/src/assets/images/Userpreferences.svg +3 -3
  107. package/src/assets/images/arrow.svg +20 -20
  108. package/src/assets/images/basicproficon.svg +43 -43
  109. package/src/assets/images/basicprofile.svg +3 -3
  110. package/src/assets/images/checkmark.svg +4 -4
  111. package/src/assets/images/contentanalysis.svg +3 -3
  112. package/src/assets/images/contenticon.svg +23 -23
  113. package/src/assets/images/personalityicon.svg +18 -18
  114. package/src/assets/images/x-close.svg +3 -3
  115. package/src/components/BodyText.tsx +33 -33
  116. package/src/components/BrandMark.tsx +62 -62
  117. package/src/components/CodeInput.tsx +32 -32
  118. package/src/components/DataRequestScreen.tsx +355 -355
  119. package/src/components/EmailInput.tsx +31 -31
  120. package/src/components/EmailVerificationModal.tsx +363 -363
  121. package/src/components/ExistingUserDataConfirmation.tsx +506 -506
  122. package/src/components/GoogleButton.tsx +55 -55
  123. package/src/components/HeadingGroup.tsx +49 -49
  124. package/src/components/ModalHeader.tsx +125 -125
  125. package/src/components/ModalSheet.tsx +57 -57
  126. package/src/components/Onairos.tsx +422 -422
  127. package/src/components/OnairosButton.tsx +339 -0
  128. package/src/components/OnairosSignInButton.tsx +30 -10
  129. package/src/components/Overlay.tsx +506 -506
  130. package/src/components/PersonaImage.tsx +79 -79
  131. package/src/components/PersonaLoadingScreen.tsx +201 -201
  132. package/src/components/PersonalizationConsentScreen.tsx +410 -410
  133. package/src/components/PinCreationScreen.tsx +492 -492
  134. package/src/components/PinInput.tsx +555 -555
  135. package/src/components/PlatformConnectorsStep.tsx +891 -891
  136. package/src/components/PlatformList.tsx +144 -144
  137. package/src/components/PlatformToggle.tsx +226 -226
  138. package/src/components/PrimaryButton.tsx +213 -213
  139. package/src/components/SignInMatchAnimation.tsx +225 -225
  140. package/src/components/SignInStep.tsx +217 -217
  141. package/src/components/TrainingModal.tsx +1047 -1047
  142. package/src/components/UniversalOnboarding.tsx +2887 -2887
  143. package/src/components/VerificationStep.tsx +198 -198
  144. package/src/components/WelcomeScreen.tsx +473 -473
  145. package/src/components/icons/Basicproficon.tsx +30 -30
  146. package/src/components/icons/Basicprofile.tsx +17 -17
  147. package/src/components/icons/Checkbox.tsx +17 -17
  148. package/src/components/icons/Checkmark.tsx +24 -24
  149. package/src/components/icons/Contentanalysis.tsx +17 -17
  150. package/src/components/icons/Contenticon.tsx +30 -30
  151. package/src/components/icons/EnochE.tsx +39 -39
  152. package/src/components/icons/Personalityicon.tsx +22 -22
  153. package/src/components/icons/Personalityprofile.tsx +17 -17
  154. package/src/components/icons/Personalitytraits.tsx +17 -17
  155. package/src/components/icons/Userpreferences.tsx +17 -17
  156. package/src/components/icons/index.ts +12 -12
  157. package/src/components/onboarding/OAuthWebView.tsx +232 -232
  158. package/src/config/api.ts +25 -25
  159. package/src/context/AuthContext.tsx +393 -393
  160. package/src/hooks/useConnectedAccounts.ts +138 -138
  161. package/src/hooks/useConnections.ts +161 -161
  162. package/src/hooks/useCredentials.ts +174 -174
  163. package/src/hooks/useUserConnections.ts +165 -165
  164. package/src/index.js +14 -0
  165. package/src/index.ts +94 -96
  166. package/src/services/apiClient.ts +336 -336
  167. package/src/services/apiKeyService.ts +919 -919
  168. package/src/services/authService.ts +1008 -1008
  169. package/src/services/biometricPinService.ts +192 -192
  170. package/src/services/connectedAccountsService.ts +289 -289
  171. package/src/services/googleAuthService.ts +279 -279
  172. package/src/services/imageCompressionService.ts +302 -302
  173. package/src/services/jwtStorageService.ts +256 -256
  174. package/src/services/mobileTrainingService.ts +203 -203
  175. package/src/services/pinEncryptionService.ts +75 -75
  176. package/src/services/pinStorageUtils.ts +96 -96
  177. package/src/services/platformAuthService.ts +1346 -1346
  178. package/src/services/storageService.ts +451 -451
  179. package/src/services/trainingApiHelpers.ts +66 -66
  180. package/src/services/userConnectionsService.ts +556 -556
  181. package/src/services/youtubeMigrationService.ts +453 -453
  182. package/src/theme/index.ts +239 -239
  183. package/src/types/ambient.d.ts +28 -28
  184. package/src/types/index.ts +265 -265
  185. package/src/types/node-fix.d.ts +18 -18
  186. package/src/types/node-override.d.ts +23 -23
  187. package/src/types/opacity.d.ts +15 -15
  188. package/src/types/types.d.ts +17 -17
  189. package/src/utils/Portal.tsx +82 -82
  190. package/src/utils/api.js +111 -111
  191. package/src/utils/auth.js +103 -103
  192. package/src/utils/crypto.js +59 -59
  193. package/src/utils/encryption.ts +68 -68
  194. package/src/utils/eventUtils.ts +302 -302
  195. package/src/utils/haptics.ts +58 -58
  196. package/src/utils/imagePreloader.ts +2 -2
  197. package/src/utils/programmaticFlow.ts +112 -112
  198. package/src/utils/retryHelper.ts +274 -274
@@ -1,166 +1,166 @@
1
- import { useState, useEffect, useCallback } from 'react';
2
- import {
3
- getUserConnections,
4
- getUserConnectionsByUsername,
5
- getUserConnectionsByUserId,
6
- uploadProfilePicture,
7
- Connection
8
- } from '../services/userConnectionsService';
9
- import { getAuthToken } from '../services/authService';
10
- import AsyncStorage from '@react-native-async-storage/async-storage';
11
-
12
- export interface UseUserConnectionsResult {
13
- connections: Connection[];
14
- isLoading: boolean;
15
- error: string | null;
16
- refreshConnections: () => Promise<void>;
17
- getConnectionsByUsername: (username: string) => Promise<Connection[]>;
18
- getConnectionsByUserId: (userId: string) => Promise<Connection[]>;
19
- uploadUserProfilePicture: (imageData: string, fileType?: string) => Promise<boolean>;
20
- }
21
-
22
- export const useUserConnections = (): UseUserConnectionsResult => {
23
- const [connections, setConnections] = useState<Connection[]>([]);
24
- const [isLoading, setIsLoading] = useState<boolean>(true);
25
- const [error, setError] = useState<string | null>(null);
26
-
27
- /**
28
- * Load connections from API with authentication validation
29
- */
30
- const loadConnections = useCallback(async () => {
31
- try {
32
- setIsLoading(true);
33
- setError(null);
34
-
35
- // ✅ CRITICAL: Validate authentication before making API calls
36
- const authToken = await getAuthToken();
37
-
38
- // Check for demo mode (reviewer bypass)
39
- const reviewerToken = await AsyncStorage.getItem('onairos_jwt_token');
40
- const isDemoMode = reviewerToken === 'reviewer-bypass-token';
41
-
42
- if (!authToken && !isDemoMode) {
43
- console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for connections refresh');
44
- console.warn('⚠️ [CONNECTIONS HOOK] Skipping API call to prevent unauthenticated requests');
45
- setConnections([]);
46
- setError('Authentication required for connections');
47
- return;
48
- }
49
-
50
- if (isDemoMode) {
51
- console.log('🎯 [DEMO MODE] Reviewer bypass detected - skipping API call for demo');
52
- // For demo mode, return empty connections - ResultsScreen will use fallback data
53
- setConnections([]);
54
- setError(null);
55
- return;
56
- }
57
-
58
- // At this point, authToken must be valid (not null) because we've checked both cases above
59
- if (!authToken) {
60
- console.error('❌ [CONNECTIONS HOOK] Unexpected null token after validation');
61
- setConnections([]);
62
- setError('Authentication error');
63
- return;
64
- }
65
-
66
- console.log('🔄 Loading user connections with authentication...');
67
- console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
68
-
69
- const fetchedConnections = await getUserConnections();
70
-
71
- setConnections(fetchedConnections);
72
- console.log('✅ Connections loaded:', fetchedConnections.length);
73
-
74
- } catch (err) {
75
- const errorMessage = err instanceof Error ? err.message : 'Failed to load connections';
76
- console.error('❌ Error loading connections:', errorMessage);
77
- setError(errorMessage);
78
-
79
- // Set empty array on error - screens will handle their own fallbacks
80
- setConnections([]);
81
-
82
- } finally {
83
- setIsLoading(false);
84
- }
85
- }, []);
86
-
87
- /**
88
- * Refresh connections with authentication validation
89
- */
90
- const refreshConnections = useCallback(async () => {
91
- console.log('🔄 [CONNECTIONS HOOK] Refreshing connections...');
92
- await loadConnections();
93
- console.log('✅ [CONNECTIONS HOOK] Connections refresh completed');
94
- }, [loadConnections]);
95
-
96
- /**
97
- * Get connections by username with authentication validation
98
- */
99
- const getConnectionsByUsername = useCallback(async (username: string): Promise<Connection[]> => {
100
- try {
101
- // ✅ Validate authentication before making API calls
102
- const authToken = await getAuthToken();
103
- if (!authToken) {
104
- console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for username connections');
105
- return [];
106
- }
107
-
108
- console.log('🔍 Fetching connections by username:', username);
109
- console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
110
- return await getUserConnectionsByUsername(username);
111
- } catch (error) {
112
- console.error('❌ Error fetching connections by username:', error);
113
- return [];
114
- }
115
- }, []);
116
-
117
- /**
118
- * Get connections by user ID with authentication validation
119
- */
120
- const getConnectionsByUserId = useCallback(async (userId: string): Promise<Connection[]> => {
121
- try {
122
- // ✅ Validate authentication before making API calls
123
- const authToken = await getAuthToken();
124
- if (!authToken) {
125
- console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for user ID connections');
126
- return [];
127
- }
128
-
129
- console.log('🔍 Fetching connections by userId:', userId);
130
- console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
131
- return await getUserConnectionsByUserId(userId);
132
- } catch (error) {
133
- console.error('❌ Error fetching connections by userId:', error);
134
- return [];
135
- }
136
- }, []);
137
-
138
- /**
139
- * Upload profile picture
140
- */
141
- const uploadUserProfilePicture = useCallback(async (imageData: string, fileType: string = 'jpg'): Promise<boolean> => {
142
- try {
143
- console.log('📷 Uploading profile picture for user:');
144
- const result = await uploadProfilePicture(imageData, fileType);
145
- return result.success;
146
- } catch (error) {
147
- console.error('❌ Error uploading profile picture:', error);
148
- return false;
149
- }
150
- }, []);
151
-
152
- // Load connections on mount
153
- useEffect(() => {
154
- loadConnections();
155
- }, [loadConnections]);
156
-
157
- return {
158
- connections,
159
- isLoading,
160
- error,
161
- refreshConnections,
162
- getConnectionsByUsername,
163
- getConnectionsByUserId,
164
- uploadUserProfilePicture
165
- };
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import {
3
+ getUserConnections,
4
+ getUserConnectionsByUsername,
5
+ getUserConnectionsByUserId,
6
+ uploadProfilePicture,
7
+ Connection
8
+ } from '../services/userConnectionsService';
9
+ import { getAuthToken } from '../services/authService';
10
+ import AsyncStorage from '@react-native-async-storage/async-storage';
11
+
12
+ export interface UseUserConnectionsResult {
13
+ connections: Connection[];
14
+ isLoading: boolean;
15
+ error: string | null;
16
+ refreshConnections: () => Promise<void>;
17
+ getConnectionsByUsername: (username: string) => Promise<Connection[]>;
18
+ getConnectionsByUserId: (userId: string) => Promise<Connection[]>;
19
+ uploadUserProfilePicture: (imageData: string, fileType?: string) => Promise<boolean>;
20
+ }
21
+
22
+ export const useUserConnections = (): UseUserConnectionsResult => {
23
+ const [connections, setConnections] = useState<Connection[]>([]);
24
+ const [isLoading, setIsLoading] = useState<boolean>(true);
25
+ const [error, setError] = useState<string | null>(null);
26
+
27
+ /**
28
+ * Load connections from API with authentication validation
29
+ */
30
+ const loadConnections = useCallback(async () => {
31
+ try {
32
+ setIsLoading(true);
33
+ setError(null);
34
+
35
+ // ✅ CRITICAL: Validate authentication before making API calls
36
+ const authToken = await getAuthToken();
37
+
38
+ // Check for demo mode (reviewer bypass)
39
+ const reviewerToken = await AsyncStorage.getItem('onairos_jwt_token');
40
+ const isDemoMode = reviewerToken === 'reviewer-bypass-token';
41
+
42
+ if (!authToken && !isDemoMode) {
43
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for connections refresh');
44
+ console.warn('⚠️ [CONNECTIONS HOOK] Skipping API call to prevent unauthenticated requests');
45
+ setConnections([]);
46
+ setError('Authentication required for connections');
47
+ return;
48
+ }
49
+
50
+ if (isDemoMode) {
51
+ console.log('🎯 [DEMO MODE] Reviewer bypass detected - skipping API call for demo');
52
+ // For demo mode, return empty connections - ResultsScreen will use fallback data
53
+ setConnections([]);
54
+ setError(null);
55
+ return;
56
+ }
57
+
58
+ // At this point, authToken must be valid (not null) because we've checked both cases above
59
+ if (!authToken) {
60
+ console.error('❌ [CONNECTIONS HOOK] Unexpected null token after validation');
61
+ setConnections([]);
62
+ setError('Authentication error');
63
+ return;
64
+ }
65
+
66
+ console.log('🔄 Loading user connections with authentication...');
67
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
68
+
69
+ const fetchedConnections = await getUserConnections();
70
+
71
+ setConnections(fetchedConnections);
72
+ console.log('✅ Connections loaded:', fetchedConnections.length);
73
+
74
+ } catch (err) {
75
+ const errorMessage = err instanceof Error ? err.message : 'Failed to load connections';
76
+ console.error('❌ Error loading connections:', errorMessage);
77
+ setError(errorMessage);
78
+
79
+ // Set empty array on error - screens will handle their own fallbacks
80
+ setConnections([]);
81
+
82
+ } finally {
83
+ setIsLoading(false);
84
+ }
85
+ }, []);
86
+
87
+ /**
88
+ * Refresh connections with authentication validation
89
+ */
90
+ const refreshConnections = useCallback(async () => {
91
+ console.log('🔄 [CONNECTIONS HOOK] Refreshing connections...');
92
+ await loadConnections();
93
+ console.log('✅ [CONNECTIONS HOOK] Connections refresh completed');
94
+ }, [loadConnections]);
95
+
96
+ /**
97
+ * Get connections by username with authentication validation
98
+ */
99
+ const getConnectionsByUsername = useCallback(async (username: string): Promise<Connection[]> => {
100
+ try {
101
+ // ✅ Validate authentication before making API calls
102
+ const authToken = await getAuthToken();
103
+ if (!authToken) {
104
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for username connections');
105
+ return [];
106
+ }
107
+
108
+ console.log('🔍 Fetching connections by username:', username);
109
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
110
+ return await getUserConnectionsByUsername(username);
111
+ } catch (error) {
112
+ console.error('❌ Error fetching connections by username:', error);
113
+ return [];
114
+ }
115
+ }, []);
116
+
117
+ /**
118
+ * Get connections by user ID with authentication validation
119
+ */
120
+ const getConnectionsByUserId = useCallback(async (userId: string): Promise<Connection[]> => {
121
+ try {
122
+ // ✅ Validate authentication before making API calls
123
+ const authToken = await getAuthToken();
124
+ if (!authToken) {
125
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for user ID connections');
126
+ return [];
127
+ }
128
+
129
+ console.log('🔍 Fetching connections by userId:', userId);
130
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
131
+ return await getUserConnectionsByUserId(userId);
132
+ } catch (error) {
133
+ console.error('❌ Error fetching connections by userId:', error);
134
+ return [];
135
+ }
136
+ }, []);
137
+
138
+ /**
139
+ * Upload profile picture
140
+ */
141
+ const uploadUserProfilePicture = useCallback(async (imageData: string, fileType: string = 'jpg'): Promise<boolean> => {
142
+ try {
143
+ console.log('📷 Uploading profile picture for user:');
144
+ const result = await uploadProfilePicture(imageData, fileType);
145
+ return result.success;
146
+ } catch (error) {
147
+ console.error('❌ Error uploading profile picture:', error);
148
+ return false;
149
+ }
150
+ }, []);
151
+
152
+ // Load connections on mount
153
+ useEffect(() => {
154
+ loadConnections();
155
+ }, [loadConnections]);
156
+
157
+ return {
158
+ connections,
159
+ isLoading,
160
+ error,
161
+ refreshConnections,
162
+ getConnectionsByUsername,
163
+ getConnectionsByUserId,
164
+ uploadUserProfilePicture
165
+ };
166
166
  };
package/src/index.js ADDED
@@ -0,0 +1,14 @@
1
+ import OnairosButton from './components/OnairosButton';
2
+ import * as AuthUtils from './utils/auth';
3
+ import * as CryptoUtils from './utils/crypto';
4
+ import * as ApiUtils from './utils/api';
5
+
6
+ // Export the main component
7
+ export default OnairosButton;
8
+
9
+ // Export utilities for advanced usage
10
+ export {
11
+ AuthUtils,
12
+ CryptoUtils,
13
+ ApiUtils
14
+ };
package/src/index.ts CHANGED
@@ -1,97 +1,95 @@
1
- /**
2
- * Onairos React Native SDK v4.0.0
3
- * A React Native implementation for Onairos personalized data integration
4
- *
5
- * PUBLIC API - Complete redesigned UI and enhanced functionality
6
- */
7
-
8
- // Essential Types
9
- export type {
10
- OnairosProps,
11
- DataTier,
12
- OnairosConfig,
13
- TestModeOptions,
14
- UniversalOnboardingProps,
15
- ConnectionStatus,
16
- PlatformConfig,
17
- } from './types';
18
-
19
- // Export OnairosSignInButtonProps from component
20
- export type { OnairosSignInButtonProps } from './components/OnairosSignInButton';
21
-
22
- // Core Components - Redesigned UI
23
- export { OnairosSignInButton } from './components/OnairosSignInButton';
24
- export { Onairos } from './components/Onairos';
25
- export { UniversalOnboarding } from './components/UniversalOnboarding';
26
-
27
- // New UI Components - Complete Welcome Flow
28
- export { default as WelcomeScreen } from './components/WelcomeScreen';
29
- export { PrimaryButton } from './components/PrimaryButton';
30
- export { ModalSheet } from './components/ModalSheet';
31
- export { ModalHeader } from './components/ModalHeader';
32
- export { BrandMark } from './components/BrandMark';
33
- export { HeadingGroup } from './components/HeadingGroup';
34
- export { BodyText } from './components/BodyText';
35
- export { SignInStep } from './components/SignInStep';
36
- export { VerificationStep } from './components/VerificationStep';
37
- export { default as PlatformConnectorsStep } from './components/PlatformConnectorsStep';
38
- export { PersonalizationConsentScreen } from './components/PersonalizationConsentScreen';
39
- export { PinCreationScreen } from './components/PinCreationScreen';
40
-
41
- // Enhanced Hooks - Temporarily commented out for build
42
- // export { useConnections } from './hooks/useConnections';
43
- // export { useUserConnections } from './hooks/useUserConnections';
44
- // export { useConnectedAccounts } from './hooks/useConnectedAccounts';
45
- // export { useAuth } from './context/AuthContext';
46
-
47
- // Temporarily commented out components with missing dependencies
48
- export { default as PersonaImage } from './components/PersonaImage';
49
- // export { default as PlatformToggle } from './components/PlatformToggle';
50
- // export { default as PersonaLoadingScreen } from './components/PersonaLoadingScreen';
51
-
52
- // SDK Initialization & Services
53
- export {
54
- initializeApiKey,
55
- ADMIN_API_KEY,
56
- extractUsernameFromJWT,
57
- extractUserDataFromJWT,
58
- decodeJWTPayload,
59
- } from './services/apiKeyService';
60
-
61
- // Authentication & Enhanced Services - Temporarily limited for build
62
- export {
63
- getOnairosUsername,
64
- } from './services/authService';
65
-
66
- export {
67
- initiateOAuth,
68
- initiateNativeAuth,
69
- hasNativeSDK,
70
- isOAuthCallback,
71
- } from './services/platformAuthService';
72
-
73
- export {
74
- updateGoogleClientIds,
75
- } from './services/googleAuthService';
76
-
77
- // Enhanced API Client
78
- export { ApiClient } from './services/apiClient';
79
-
80
- // Programmatic Function (for custom buttons) - Temporarily commented out
81
- // export { executeOnairosFlow } from './utils/programmaticFlow';
82
-
83
- // Context Provider - Temporarily commented out for build
84
- // export { AuthProvider } from './context/AuthContext';
85
-
86
- // Default export for convenience
87
- import { OnairosSignInButton } from './components/OnairosSignInButton';
88
- import { Onairos } from './components/Onairos';
89
- import { UniversalOnboarding } from './components/UniversalOnboarding';
90
- import WelcomeScreen from './components/WelcomeScreen';
91
-
92
- export default {
93
- OnairosSignInButton,
94
- Onairos,
95
- UniversalOnboarding,
96
- WelcomeScreen,
1
+ /**
2
+ * Onairos React Native SDK v4.0.0
3
+ * A React Native implementation for Onairos personalized data integration
4
+ *
5
+ * PUBLIC API - Complete redesigned UI and enhanced functionality
6
+ */
7
+
8
+ // Essential Types
9
+ export type {
10
+ OnairosButtonProps,
11
+ OnairosProps,
12
+ DataTier,
13
+ OnairosConfig,
14
+ TestModeOptions,
15
+ UniversalOnboardingProps,
16
+ ConnectionStatus,
17
+ PlatformConfig,
18
+ } from './types';
19
+
20
+ // Core Components - Redesigned UI
21
+ export { OnairosButton } from './components/OnairosButton';
22
+ export { Onairos } from './components/Onairos';
23
+ export { UniversalOnboarding } from './components/UniversalOnboarding';
24
+
25
+ // New UI Components - Complete Welcome Flow
26
+ export { default as WelcomeScreen } from './components/WelcomeScreen';
27
+ export { PrimaryButton } from './components/PrimaryButton';
28
+ export { ModalSheet } from './components/ModalSheet';
29
+ export { ModalHeader } from './components/ModalHeader';
30
+ export { BrandMark } from './components/BrandMark';
31
+ export { HeadingGroup } from './components/HeadingGroup';
32
+ export { BodyText } from './components/BodyText';
33
+ export { SignInStep } from './components/SignInStep';
34
+ export { VerificationStep } from './components/VerificationStep';
35
+ export { default as PlatformConnectorsStep } from './components/PlatformConnectorsStep';
36
+ export { PersonalizationConsentScreen } from './components/PersonalizationConsentScreen';
37
+ export { PinCreationScreen } from './components/PinCreationScreen';
38
+
39
+ // Enhanced Hooks - Temporarily commented out for build
40
+ // export { useConnections } from './hooks/useConnections';
41
+ // export { useUserConnections } from './hooks/useUserConnections';
42
+ // export { useConnectedAccounts } from './hooks/useConnectedAccounts';
43
+ // export { useAuth } from './context/AuthContext';
44
+
45
+ // Temporarily commented out components with missing dependencies
46
+ export { default as PersonaImage } from './components/PersonaImage';
47
+ // export { default as PlatformToggle } from './components/PlatformToggle';
48
+ // export { default as PersonaLoadingScreen } from './components/PersonaLoadingScreen';
49
+
50
+ // SDK Initialization & Services
51
+ export {
52
+ initializeApiKey,
53
+ ADMIN_API_KEY,
54
+ extractUsernameFromJWT,
55
+ extractUserDataFromJWT,
56
+ decodeJWTPayload,
57
+ } from './services/apiKeyService';
58
+
59
+ // Authentication & Enhanced Services - Temporarily limited for build
60
+ export {
61
+ getOnairosUsername,
62
+ } from './services/authService';
63
+
64
+ export {
65
+ initiateOAuth,
66
+ initiateNativeAuth,
67
+ hasNativeSDK,
68
+ isOAuthCallback,
69
+ } from './services/platformAuthService';
70
+
71
+ export {
72
+ updateGoogleClientIds,
73
+ } from './services/googleAuthService';
74
+
75
+ // Enhanced API Client
76
+ export { ApiClient } from './services/apiClient';
77
+
78
+ // Programmatic Function (for custom buttons) - Temporarily commented out
79
+ // export { executeOnairosFlow } from './utils/programmaticFlow';
80
+
81
+ // Context Provider - Temporarily commented out for build
82
+ // export { AuthProvider } from './context/AuthContext';
83
+
84
+ // Default export for convenience
85
+ import { OnairosButton } from './components/OnairosButton';
86
+ import { Onairos } from './components/Onairos';
87
+ import { UniversalOnboarding } from './components/UniversalOnboarding';
88
+ import WelcomeScreen from './components/WelcomeScreen';
89
+
90
+ export default {
91
+ OnairosButton,
92
+ Onairos,
93
+ UniversalOnboarding,
94
+ WelcomeScreen,
97
95
  };