@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,12 +1,12 @@
1
1
  import AsyncStorage from '@react-native-async-storage/async-storage';
2
- /**
3
- * JWT Token Storage Service - CORRECTED APPROACH
4
- * Manages 3 DISTINCT JWT token types for different route families
5
- *
6
- * TOKEN TYPES:
7
- * 1. Enoch JWT (enoch_token) - For /enoch/*, /api/auth/*, /mobile-training/enoch
8
- * 2. Onairos JWT (onairos_jwt_token) - For /youtube/*, /gmail/*, social connections
9
- * 3. Auth Token (auth_token) - For context-specific auth flows
2
+ /**
3
+ * JWT Token Storage Service - CORRECTED APPROACH
4
+ * Manages 3 DISTINCT JWT token types for different route families
5
+ *
6
+ * TOKEN TYPES:
7
+ * 1. Enoch JWT (enoch_token) - For /enoch/*, /api/auth/*, /mobile-training/enoch
8
+ * 2. Onairos JWT (onairos_jwt_token) - For /youtube/*, /gmail/*, social connections
9
+ * 3. Auth Token (auth_token) - For context-specific auth flows
10
10
  */
11
11
 
12
12
  export let TokenType = /*#__PURE__*/function (TokenType) {
@@ -16,9 +16,9 @@ export let TokenType = /*#__PURE__*/function (TokenType) {
16
16
  return TokenType;
17
17
  }({});
18
18
 
19
- /**
20
- * Route-based token mapping
21
- * Determines which token type to use for which routes
19
+ /**
20
+ * Route-based token mapping
21
+ * Determines which token type to use for which routes
22
22
  */
23
23
  export const getTokenTypeForRoute = route => {
24
24
  const cleanRoute = route.toLowerCase();
@@ -37,11 +37,11 @@ export const getTokenTypeForRoute = route => {
37
37
  return TokenType.AUTH;
38
38
  };
39
39
 
40
- /**
41
- * Store JWT token of specific type
42
- * @param tokenType - Type of token to store
43
- * @param token - JWT token to store
44
- * @returns Promise<boolean> - Success status
40
+ /**
41
+ * Store JWT token of specific type
42
+ * @param tokenType - Type of token to store
43
+ * @param token - JWT token to store
44
+ * @returns Promise<boolean> - Success status
45
45
  */
46
46
  export const storeJWT = async (tokenType, token) => {
47
47
  try {
@@ -65,10 +65,10 @@ export const storeJWT = async (tokenType, token) => {
65
65
  }
66
66
  };
67
67
 
68
- /**
69
- * Retrieve JWT token of specific type
70
- * @param tokenType - Type of token to retrieve
71
- * @returns Promise<string | null> - JWT token or null if not found
68
+ /**
69
+ * Retrieve JWT token of specific type
70
+ * @param tokenType - Type of token to retrieve
71
+ * @returns Promise<string | null> - JWT token or null if not found
72
72
  */
73
73
  export const getJWT = async tokenType => {
74
74
  try {
@@ -92,10 +92,10 @@ export const getJWT = async tokenType => {
92
92
  }
93
93
  };
94
94
 
95
- /**
96
- * Get JWT token for specific route
97
- * @param route - API route to get token for
98
- * @returns Promise<string | null> - Appropriate JWT token or null
95
+ /**
96
+ * Get JWT token for specific route
97
+ * @param route - API route to get token for
98
+ * @returns Promise<string | null> - Appropriate JWT token or null
99
99
  */
100
100
  export const getJWTForRoute = async route => {
101
101
  const tokenType = getTokenTypeForRoute(route);
@@ -108,10 +108,10 @@ export const getJWTForRoute = async route => {
108
108
  return token;
109
109
  };
110
110
 
111
- /**
112
- * Clear JWT token of specific type
113
- * @param tokenType - Type of token to clear
114
- * @returns Promise<boolean> - Success status
111
+ /**
112
+ * Clear JWT token of specific type
113
+ * @param tokenType - Type of token to clear
114
+ * @returns Promise<boolean> - Success status
115
115
  */
116
116
  export const clearJWT = async tokenType => {
117
117
  try {
@@ -124,9 +124,9 @@ export const clearJWT = async tokenType => {
124
124
  }
125
125
  };
126
126
 
127
- /**
128
- * Clear all JWT tokens
129
- * @returns Promise<boolean> - Success status
127
+ /**
128
+ * Clear all JWT tokens
129
+ * @returns Promise<boolean> - Success status
130
130
  */
131
131
  export const clearAllJWT = async () => {
132
132
  try {
@@ -139,11 +139,11 @@ export const clearAllJWT = async () => {
139
139
  }
140
140
  };
141
141
 
142
- /**
143
- * Replace JWT token after verification - route-aware
144
- * @param tokenType - Type of token being replaced
145
- * @param newToken - New JWT token from verification response
146
- * @returns Promise<boolean> - Success status
142
+ /**
143
+ * Replace JWT token after verification - route-aware
144
+ * @param tokenType - Type of token being replaced
145
+ * @param newToken - New JWT token from verification response
146
+ * @returns Promise<boolean> - Success status
147
147
  */
148
148
  export const replaceJWTAfterVerification = async (tokenType, newToken) => {
149
149
  try {
@@ -166,37 +166,37 @@ export const replaceJWTAfterVerification = async (tokenType, newToken) => {
166
166
  }
167
167
  };
168
168
 
169
- /**
170
- * Store Enoch JWT token (from email verification)
171
- * @param token - Enoch JWT token
172
- * @returns Promise<boolean> - Success status
169
+ /**
170
+ * Store Enoch JWT token (from email verification)
171
+ * @param token - Enoch JWT token
172
+ * @returns Promise<boolean> - Success status
173
173
  */
174
174
  export const storeEnochJWT = async token => {
175
175
  return await storeJWT(TokenType.ENOCH, token);
176
176
  };
177
177
 
178
- /**
179
- * Store Onairos JWT token (from sign-in/registration)
180
- * @param token - Onairos JWT token
181
- * @returns Promise<boolean> - Success status
178
+ /**
179
+ * Store Onairos JWT token (from sign-in/registration)
180
+ * @param token - Onairos JWT token
181
+ * @returns Promise<boolean> - Success status
182
182
  */
183
183
  export const storeOnairosJWT = async token => {
184
184
  return await storeJWT(TokenType.ONAIROS, token);
185
185
  };
186
186
 
187
- /**
188
- * Store Auth token (for context-specific flows)
189
- * @param token - Auth token
190
- * @returns Promise<boolean> - Success status
187
+ /**
188
+ * Store Auth token (for context-specific flows)
189
+ * @param token - Auth token
190
+ * @returns Promise<boolean> - Success status
191
191
  */
192
192
  export const storeAuthToken = async token => {
193
193
  return await storeJWT(TokenType.AUTH, token);
194
194
  };
195
195
 
196
- /**
197
- * Validate JWT format
198
- * @param token - Token to validate
199
- * @returns boolean - True if valid JWT format
196
+ /**
197
+ * Validate JWT format
198
+ * @param token - Token to validate
199
+ * @returns boolean - True if valid JWT format
200
200
  */
201
201
  const isValidJWTFormat = token => {
202
202
  if (!token || token.length < 20) return false;
@@ -215,19 +215,19 @@ const isValidJWTFormat = token => {
215
215
  return true;
216
216
  };
217
217
 
218
- /**
219
- * Check if JWT token of specific type exists and is valid
220
- * @param tokenType - Type of token to check
221
- * @returns Promise<boolean> - True if valid token exists
218
+ /**
219
+ * Check if JWT token of specific type exists and is valid
220
+ * @param tokenType - Type of token to check
221
+ * @returns Promise<boolean> - True if valid token exists
222
222
  */
223
223
  export const hasValidJWT = async tokenType => {
224
224
  const token = await getJWT(tokenType);
225
225
  return token !== null;
226
226
  };
227
227
 
228
- /**
229
- * Get all available tokens (for debugging)
230
- * @returns Promise<Record<TokenType, string | null>> - All tokens
228
+ /**
229
+ * Get all available tokens (for debugging)
230
+ * @returns Promise<Record<TokenType, string | null>> - All tokens
231
231
  */
232
232
  export const getAllTokens = async () => {
233
233
  return {
@@ -4,9 +4,9 @@ import { getAuthToken } from './authService';
4
4
 
5
5
  const API_BASE_URL = 'https://api2.onairos.uk';
6
6
 
7
- /**
8
- * Mobile Training API Service
9
- * Implements the updated training spec routes
7
+ /**
8
+ * Mobile Training API Service
9
+ * Implements the updated training spec routes
10
10
  */
11
11
 
12
12
  // Training Status Route
@@ -79,10 +79,10 @@ export const getHealthCheck = async () => {
79
79
  }
80
80
  };
81
81
 
82
- /**
83
- * Start Enoch Training - Simplified Version
84
- * Backend now handles all YouTube connection cases automatically (temporary mode, refresh tokens, etc.)
85
- * No frontend migration checks needed anymore
82
+ /**
83
+ * Start Enoch Training - Simplified Version
84
+ * Backend now handles all YouTube connection cases automatically (temporary mode, refresh tokens, etc.)
85
+ * No frontend migration checks needed anymore
86
86
  */
87
87
  export const startEnochTrainingWithYouTubeCheck = async trainingData => {
88
88
  try {
@@ -103,9 +103,9 @@ export const startEnochTrainingWithYouTubeCheck = async trainingData => {
103
103
  }
104
104
  };
105
105
 
106
- /**
107
- * Start Enoch Training
108
- * Updated to use the new /mobile-training/enoch endpoint with proper error handling
106
+ /**
107
+ * Start Enoch Training
108
+ * Updated to use the new /mobile-training/enoch endpoint with proper error handling
109
109
  */
110
110
  export const startEnochTraining = async trainingData => {
111
111
  try {
@@ -144,8 +144,8 @@ export const startEnochTraining = async trainingData => {
144
144
  }
145
145
  };
146
146
 
147
- /**
148
- * Helper function to check if training is in progress
147
+ /**
148
+ * Helper function to check if training is in progress
149
149
  */
150
150
  export const isTrainingInProgress = async username => {
151
151
  try {
@@ -157,8 +157,8 @@ export const isTrainingInProgress = async username => {
157
157
  }
158
158
  };
159
159
 
160
- /**
161
- * Helper function to get training features info
160
+ /**
161
+ * Helper function to get training features info
162
162
  */
163
163
  export const getTrainingFeatures = async () => {
164
164
  try {
@@ -1,15 +1,15 @@
1
1
  const CryptoJS = require('react-native-crypto-js');
2
2
  import { getTemporaryPin } from './pinStorageUtils';
3
3
 
4
- /**
5
- * Service for encrypting PIN data before sending to APIs
4
+ /**
5
+ * Service for encrypting PIN data before sending to APIs
6
6
  */
7
7
 
8
8
  // Encryption key - in production, this should come from a secure source
9
9
  const ENCRYPTION_KEY = 'onairos-pin-encryption-key-2024';
10
10
 
11
- /**
12
- * Encrypt PIN using AES encryption
11
+ /**
12
+ * Encrypt PIN using AES encryption
13
13
  */
14
14
  export const encryptPin = pin => {
15
15
  try {
@@ -22,8 +22,8 @@ export const encryptPin = pin => {
22
22
  }
23
23
  };
24
24
 
25
- /**
26
- * Decrypt PIN (for verification purposes)
25
+ /**
26
+ * Decrypt PIN (for verification purposes)
27
27
  */
28
28
  export const decryptPin = encryptedPin => {
29
29
  try {
@@ -37,8 +37,8 @@ export const decryptPin = encryptedPin => {
37
37
  }
38
38
  };
39
39
 
40
- /**
41
- * Get encrypted PIN for API transmission
40
+ /**
41
+ * Get encrypted PIN for API transmission
42
42
  */
43
43
  export const getEncryptedPinForAPI = async () => {
44
44
  try {
@@ -59,8 +59,8 @@ export const getEncryptedPinForAPI = async () => {
59
59
  }
60
60
  };
61
61
 
62
- /**
63
- * Hash PIN for verification (one-way hash)
62
+ /**
63
+ * Hash PIN for verification (one-way hash)
64
64
  */
65
65
  export const hashPin = pin => {
66
66
  try {
@@ -1,12 +1,12 @@
1
1
  import { biometricPinService } from './biometricPinService';
2
2
 
3
- /**
4
- * Utility functions for PIN storage management
3
+ /**
4
+ * Utility functions for PIN storage management
5
5
  */
6
6
 
7
- /**
8
- * Get the stored PIN for training/authentication purposes
9
- * This will prompt for biometric authentication
7
+ /**
8
+ * Get the stored PIN for training/authentication purposes
9
+ * This will prompt for biometric authentication
10
10
  */
11
11
  export const getStoredPinForTraining = async () => {
12
12
  try {
@@ -34,8 +34,8 @@ export const getStoredPinForTraining = async () => {
34
34
  }
35
35
  };
36
36
 
37
- /**
38
- * Check if user has a PIN stored securely
37
+ /**
38
+ * Check if user has a PIN stored securely
39
39
  */
40
40
  export const hasStoredPin = async () => {
41
41
  try {
@@ -46,8 +46,8 @@ export const hasStoredPin = async () => {
46
46
  }
47
47
  };
48
48
 
49
- /**
50
- * Remove stored PIN (for logout/reset purposes)
49
+ /**
50
+ * Remove stored PIN (for logout/reset purposes)
51
51
  */
52
52
  export const clearStoredPin = async () => {
53
53
  try {
@@ -59,9 +59,9 @@ export const clearStoredPin = async () => {
59
59
  }
60
60
  };
61
61
 
62
- /**
63
- * Get PIN for passing to training component
64
- * This function can be called from the onboarding flow
62
+ /**
63
+ * Get PIN for passing to training component
64
+ * This function can be called from the onboarding flow
65
65
  */
66
66
  export const getPinForTraining = async tempPin => {
67
67
  // If a temporary PIN is provided (from the PIN input), use it
@@ -74,9 +74,9 @@ export const getPinForTraining = async tempPin => {
74
74
  return await getStoredPinForTraining();
75
75
  };
76
76
 
77
- /**
78
- * Store PIN temporarily in memory for training component
79
- * This is used when PIN is entered but not yet stored biometrically
77
+ /**
78
+ * Store PIN temporarily in memory for training component
79
+ * This is used when PIN is entered but not yet stored biometrically
80
80
  */
81
81
  let temporaryPin = null;
82
82
  export const setTemporaryPin = pin => {
@@ -1,6 +1,6 @@
1
- /**
2
- * Platform Authentication Service
3
- * Handles OAuth flows for different platforms
1
+ /**
2
+ * Platform Authentication Service
3
+ * Handles OAuth flows for different platforms
4
4
  */
5
5
 
6
6
  import { GoogleSignin, statusCodes } from '@react-native-google-signin/google-signin';
@@ -86,16 +86,16 @@ const OAUTH_CONFIG = {
86
86
  }
87
87
  };
88
88
 
89
- /**
90
- * Check if the platform has a native SDK
89
+ /**
90
+ * Check if the platform has a native SDK
91
91
  */
92
92
  export const hasNativeSDK = platform => {
93
93
  var _OAUTH_CONFIG$platfor;
94
94
  return ((_OAUTH_CONFIG$platfor = OAUTH_CONFIG[platform]) === null || _OAUTH_CONFIG$platfor === void 0 ? void 0 : _OAUTH_CONFIG$platfor.hasNativeSDK) || false;
95
95
  };
96
96
 
97
- /**
98
- * Initiate OAuth flow for a platform
97
+ /**
98
+ * Initiate OAuth flow for a platform
99
99
  */
100
100
  export const initiateOAuth = async (platform, username) => {
101
101
  try {
@@ -153,9 +153,9 @@ export const initiateOAuth = async (platform, username) => {
153
153
  }
154
154
  };
155
155
 
156
- /**
157
- * Initialize Google Sign-In configuration with enhanced refresh token support
158
- * Updated with CRITICAL parameters for refresh token generation
156
+ /**
157
+ * Initialize Google Sign-In configuration with enhanced refresh token support
158
+ * Updated with CRITICAL parameters for refresh token generation
159
159
  */
160
160
  const initializeGoogleSignIn = () => {
161
161
  GoogleSignin.configure({
@@ -178,9 +178,9 @@ const initializeGoogleSignIn = () => {
178
178
  });
179
179
  };
180
180
 
181
- /**
182
- * Force YouTube reconnection with consent screen to get refresh tokens
183
- * This is the key function to fix YouTube token expiry issues
181
+ /**
182
+ * Force YouTube reconnection with consent screen to get refresh tokens
183
+ * This is the key function to fix YouTube token expiry issues
184
184
  */
185
185
  export const forceYouTubeReconnectionWithConsent = async username => {
186
186
  try {
@@ -465,8 +465,8 @@ export const forceYouTubeReconnectionWithConsent = async username => {
465
465
  }
466
466
  };
467
467
 
468
- /**
469
- * Alternative method: Force consent by revoking existing permissions
468
+ /**
469
+ * Alternative method: Force consent by revoking existing permissions
470
470
  */
471
471
  export const forceYouTubeReconnectionWithRevoke = async username => {
472
472
  try {
@@ -516,8 +516,8 @@ export const forceYouTubeReconnectionWithRevoke = async username => {
516
516
  }
517
517
  };
518
518
 
519
- /**
520
- * Fix YouTube connection for a specific user (like nicholase50)
519
+ /**
520
+ * Fix YouTube connection for a specific user (like nicholase50)
521
521
  */
522
522
  export const fixUserYouTubeConnection = async username => {
523
523
  console.log(`๐Ÿ”ง Fixing YouTube connection for user: ${username}`);
@@ -541,8 +541,8 @@ export const fixUserYouTubeConnection = async username => {
541
541
  return false;
542
542
  };
543
543
 
544
- /**
545
- * Get fresh tokens using refresh token
544
+ /**
545
+ * Get fresh tokens using refresh token
546
546
  */
547
547
  const refreshGoogleTokens = async () => {
548
548
  try {
@@ -582,8 +582,8 @@ const refreshGoogleTokens = async () => {
582
582
  }
583
583
  };
584
584
 
585
- /**
586
- * Debug YouTube tokens to verify refresh token availability
585
+ /**
586
+ * Debug YouTube tokens to verify refresh token availability
587
587
  */
588
588
  const debugYouTubeTokens = async () => {
589
589
  try {
@@ -609,8 +609,8 @@ const debugYouTubeTokens = async () => {
609
609
  }
610
610
  };
611
611
 
612
- /**
613
- * Force fresh YouTube reconnection with proper refresh token
612
+ /**
613
+ * Force fresh YouTube reconnection with proper refresh token
614
614
  */
615
615
  export const reconnectYouTube = async username => {
616
616
  try {
@@ -658,8 +658,8 @@ export const reconnectYouTube = async username => {
658
658
  }
659
659
  };
660
660
 
661
- /**
662
- * Initiate native authentication for platforms with SDKs
661
+ /**
662
+ * Initiate native authentication for platforms with SDKs
663
663
  */
664
664
  export const initiateNativeAuth = async (platform, username) => {
665
665
  if (platform === 'youtube') {
@@ -991,16 +991,16 @@ export const initiateNativeAuth = async (platform, username) => {
991
991
  return false;
992
992
  };
993
993
 
994
- /**
995
- * Check if a URL is an OAuth callback
994
+ /**
995
+ * Check if a URL is an OAuth callback
996
996
  */
997
997
  export const isOAuthCallback = url => {
998
998
  return url.includes('auth/callback') || url.includes('code=');
999
999
  };
1000
1000
 
1001
- /**
1002
- * Exchange authorization code for access token
1003
- * This would typically be done on a server, but we're simulating it here
1001
+ /**
1002
+ * Exchange authorization code for access token
1003
+ * This would typically be done on a server, but we're simulating it here
1004
1004
  */
1005
1005
  export const exchangeCodeForToken = async (code, platform) => {
1006
1006
  console.log(`Exchanging code for token for platform: ${platform}`);
@@ -1039,9 +1039,9 @@ export const exchangeCodeForToken = async (code, platform) => {
1039
1039
  }
1040
1040
  };
1041
1041
 
1042
- /**
1043
- * Refresh YouTube tokens when they expire
1044
- * This should be called when the backend reports token expiry
1042
+ /**
1043
+ * Refresh YouTube tokens when they expire
1044
+ * This should be called when the backend reports token expiry
1045
1045
  */
1046
1046
  export const refreshYouTubeTokens = async () => {
1047
1047
  try {
@@ -1101,9 +1101,9 @@ export const refreshYouTubeTokens = async () => {
1101
1101
  }
1102
1102
  };
1103
1103
 
1104
- /**
1105
- * Trigger training restart after YouTube re-authentication
1106
- * This signals the backend to restart training with the new refresh token
1104
+ /**
1105
+ * Trigger training restart after YouTube re-authentication
1106
+ * This signals the backend to restart training with the new refresh token
1107
1107
  */
1108
1108
  const triggerTrainingRestart = async (username, authToken) => {
1109
1109
  try {
@@ -1136,9 +1136,9 @@ const triggerTrainingRestart = async (username, authToken) => {
1136
1136
  }
1137
1137
  };
1138
1138
 
1139
- /**
1140
- * Test function to verify YouTube refresh token functionality
1141
- * Call this in your app to test the YouTube connection
1139
+ /**
1140
+ * Test function to verify YouTube refresh token functionality
1141
+ * Call this in your app to test the YouTube connection
1142
1142
  */
1143
1143
  export const testYouTubeRefreshToken = async username => {
1144
1144
  console.log('๐Ÿงช Testing YouTube refresh token functionality...');
@@ -1165,8 +1165,8 @@ export const testYouTubeRefreshToken = async username => {
1165
1165
  }
1166
1166
  };
1167
1167
 
1168
- /**
1169
- * Request email verification code
1168
+ /**
1169
+ * Request email verification code
1170
1170
  */
1171
1171
  export const requestEmailVerification = async (email, testMode = false) => {
1172
1172
  try {
@@ -1201,8 +1201,8 @@ export const requestEmailVerification = async (email, testMode = false) => {
1201
1201
  }
1202
1202
  };
1203
1203
 
1204
- /**
1205
- * Verify email code
1204
+ /**
1205
+ * Verify email code
1206
1206
  */
1207
1207
  export const verifyEmailCode = async (email, code, testMode = false) => {
1208
1208
  try {
@@ -1240,8 +1240,8 @@ export const verifyEmailCode = async (email, code, testMode = false) => {
1240
1240
  }
1241
1241
  };
1242
1242
 
1243
- /**
1244
- * Check email verification status
1243
+ /**
1244
+ * Check email verification status
1245
1245
  */
1246
1246
  export const checkEmailVerificationStatus = async (email, testMode = false) => {
1247
1247
  try {
@@ -1269,8 +1269,8 @@ export const checkEmailVerificationStatus = async (email, testMode = false) => {
1269
1269
  }
1270
1270
  };
1271
1271
 
1272
- /**
1273
- * Initialize platform auth service
1272
+ /**
1273
+ * Initialize platform auth service
1274
1274
  */
1275
1275
  export const initializePlatformAuthService = () => {
1276
1276
  console.log('๐Ÿ”ง Platform auth service initialized');