@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
@@ -8,27 +8,27 @@ const API_BASE_URL = API_CONFIG.BASE_URL;
8
8
 
9
9
  // Interface for Apple authentication payload
10
10
 
11
- /**
12
- * Interface for the timer response from backend
11
+ /**
12
+ * Interface for the timer response from backend
13
13
  */
14
14
 
15
- /**
16
- * Interface for the profile response from backend
15
+ /**
16
+ * Interface for the profile response from backend
17
17
  */
18
18
 
19
- /**
20
- * Interface for creating/updating user profile
19
+ /**
20
+ * Interface for creating/updating user profile
21
21
  */
22
22
 
23
- /**
24
- * Authenticate with Apple
25
- * @param appleAuthData Data from Apple authentication
26
- * @returns Authentication response with token and user data
23
+ /**
24
+ * Authenticate with Apple
25
+ * @param appleAuthData Data from Apple authentication
26
+ * @returns Authentication response with token and user data
27
27
  */
28
- /**
29
- * Authenticate with Onairos (similar to Apple authentication)
30
- * @param onairosAuthData Data from Onairos authentication
31
- * @returns Authentication response with token and user data
28
+ /**
29
+ * Authenticate with Onairos (similar to Apple authentication)
30
+ * @param onairosAuthData Data from Onairos authentication
31
+ * @returns Authentication response with token and user data
32
32
  */
33
33
  export const authenticateWithOnairos = async onairosAuthData => {
34
34
  try {
@@ -78,10 +78,10 @@ export const authenticateWithOnairos = async onairosAuthData => {
78
78
  }
79
79
  };
80
80
 
81
- /**
82
- * Authenticate with Onairos using the standardized /login/signin endpoint
83
- * @param credentials Email and password for Onairos sign-in
84
- * @returns Authentication response with token and user data
81
+ /**
82
+ * Authenticate with Onairos using the standardized /login/signin endpoint
83
+ * @param credentials Email and password for Onairos sign-in
84
+ * @returns Authentication response with token and user data
85
85
  */
86
86
  export const authenticateWithOnairosSignIn = async credentials => {
87
87
  try {
@@ -262,9 +262,9 @@ export const authenticateWithApple = async appleAuthData => {
262
262
  }
263
263
  };
264
264
 
265
- /**
266
- * Save authentication token
267
- * @param token JWT token
265
+ /**
266
+ * Save authentication token
267
+ * @param token JWT token
268
268
  */
269
269
  export const saveAuthToken = async token => {
270
270
  try {
@@ -275,8 +275,8 @@ export const saveAuthToken = async token => {
275
275
  }
276
276
  };
277
277
 
278
- /**
279
- * Debug function to check all auth-related storage
278
+ /**
279
+ * Debug function to check all auth-related storage
280
280
  */
281
281
  export const debugAuthStorage = async () => {
282
282
  console.log('🔍 [AUTH STORAGE DEBUG] Checking all auth-related storage:');
@@ -303,8 +303,8 @@ export const debugAuthStorage = async () => {
303
303
  });
304
304
  };
305
305
 
306
- /**
307
- * Clear all auth tokens and start fresh
306
+ /**
307
+ * Clear all auth tokens and start fresh
308
308
  */
309
309
  export const clearAllAuthTokens = async () => {
310
310
  console.log('🧹 [AUTH DEBUG] Clearing all auth tokens via centralized service...');
@@ -320,9 +320,9 @@ export const clearAllAuthTokens = async () => {
320
320
  console.log('✅ [AUTH DEBUG] All auth tokens and data cleared');
321
321
  };
322
322
 
323
- /**
324
- * Get saved authentication token - CRITICAL FIX: Try all token types
325
- * @returns Saved JWT token or null if not found
323
+ /**
324
+ * Get saved authentication token - CRITICAL FIX: Try all token types
325
+ * @returns Saved JWT token or null if not found
326
326
  */
327
327
  export const getAuthToken = async () => {
328
328
  try {
@@ -362,8 +362,8 @@ export const getAuthToken = async () => {
362
362
  }
363
363
  };
364
364
 
365
- /**
366
- * Remove authentication token (logout)
365
+ /**
366
+ * Remove authentication token (logout)
367
367
  */
368
368
  export const removeAuthToken = async () => {
369
369
  try {
@@ -373,9 +373,9 @@ export const removeAuthToken = async () => {
373
373
  }
374
374
  };
375
375
 
376
- /**
377
- * Validate if user is properly authenticated
378
- * @returns boolean indicating if user has valid authentication
376
+ /**
377
+ * Validate if user is properly authenticated
378
+ * @returns boolean indicating if user has valid authentication
379
379
  */
380
380
  export const isAuthenticated = async () => {
381
381
  try {
@@ -387,10 +387,10 @@ export const isAuthenticated = async () => {
387
387
  }
388
388
  };
389
389
 
390
- /**
391
- * Ensure authentication is available before making API calls
392
- * @param apiName - Name of the API being called (for logging)
393
- * @returns boolean indicating if authentication is available
390
+ /**
391
+ * Ensure authentication is available before making API calls
392
+ * @param apiName - Name of the API being called (for logging)
393
+ * @returns boolean indicating if authentication is available
394
394
  */
395
395
  export const ensureAuthentication = async apiName => {
396
396
  const isAuth = await isAuthenticated();
@@ -402,9 +402,9 @@ export const ensureAuthentication = async apiName => {
402
402
  return isAuth;
403
403
  };
404
404
 
405
- /**
406
- * Get saved Enoch authentication token specifically
407
- * @returns Saved Enoch JWT token or null if not found
405
+ /**
406
+ * Get saved Enoch authentication token specifically
407
+ * @returns Saved Enoch JWT token or null if not found
408
408
  */
409
409
  export const getEnochToken = async () => {
410
410
  try {
@@ -415,9 +415,9 @@ export const getEnochToken = async () => {
415
415
  }
416
416
  };
417
417
 
418
- /**
419
- * Save Enoch authentication token specifically
420
- * @param token Enoch JWT token
418
+ /**
419
+ * Save Enoch authentication token specifically
420
+ * @param token Enoch JWT token
421
421
  */
422
422
  export const saveEnochToken = async token => {
423
423
  try {
@@ -429,9 +429,9 @@ export const saveEnochToken = async token => {
429
429
  }
430
430
  };
431
431
 
432
- /**
433
- * Verify token with backend
434
- * @returns Boolean indicating if token is valid
432
+ /**
433
+ * Verify token with backend
434
+ * @returns Boolean indicating if token is valid
435
435
  */
436
436
  export const verifyToken = async () => {
437
437
  try {
@@ -461,10 +461,10 @@ export const verifyToken = async () => {
461
461
  }
462
462
  };
463
463
 
464
- /**
465
- * Get user profile from backend using stored token
466
- * Note: This endpoint doesn't exist as GET, so we'll try to fetch via other means
467
- * @returns User profile data
464
+ /**
465
+ * Get user profile from backend using stored token
466
+ * Note: This endpoint doesn't exist as GET, so we'll try to fetch via other means
467
+ * @returns User profile data
468
468
  */
469
469
  export const getUserProfile = async () => {
470
470
  try {
@@ -575,10 +575,10 @@ export const getUserProfile = async () => {
575
575
  }
576
576
  };
577
577
 
578
- /**
579
- * Create or update user profile
580
- * @param profileData Profile data to create/update
581
- * @returns Profile response from backend
578
+ /**
579
+ * Create or update user profile
580
+ * @param profileData Profile data to create/update
581
+ * @returns Profile response from backend
582
582
  */
583
583
  export const createOrUpdateProfile = async profileData => {
584
584
  try {
@@ -603,9 +603,9 @@ export const createOrUpdateProfile = async profileData => {
603
603
  }
604
604
  };
605
605
 
606
- /**
607
- * Update user's onboarded status
608
- * @returns Promise that resolves when update is successful
606
+ /**
607
+ * Update user's onboarded status
608
+ * @returns Promise that resolves when update is successful
609
609
  */
610
610
  export const updateUserOnboardedStatus = async () => {
611
611
  try {
@@ -629,9 +629,9 @@ export const updateUserOnboardedStatus = async () => {
629
629
  }
630
630
  };
631
631
 
632
- /**
633
- * Fetch the current timer status from the backend
634
- * @returns Timer information including expiry and duration
632
+ /**
633
+ * Fetch the current timer status from the backend
634
+ * @returns Timer information including expiry and duration
635
635
  */
636
636
  export const getEventTimer = async () => {
637
637
  try {
@@ -787,10 +787,10 @@ export const getEventTimer = async () => {
787
787
  }
788
788
  };
789
789
 
790
- /**
791
- * Check if a user email has admin privileges
792
- * @param email User email to check
793
- * @returns True if user is an admin
790
+ /**
791
+ * Check if a user email has admin privileges
792
+ * @param email User email to check
793
+ * @returns True if user is an admin
794
794
  */
795
795
  export const isAdminEmail = email => {
796
796
  if (!email) {
@@ -807,9 +807,9 @@ export const isAdminEmail = email => {
807
807
  return isAdmin;
808
808
  };
809
809
 
810
- /**
811
- * Get the current admin status from AsyncStorage
812
- * This could be used for caching admin status between sessions
810
+ /**
811
+ * Get the current admin status from AsyncStorage
812
+ * This could be used for caching admin status between sessions
813
813
  */
814
814
  export const getAdminStatus = async () => {
815
815
  try {
@@ -821,9 +821,9 @@ export const getAdminStatus = async () => {
821
821
  }
822
822
  };
823
823
 
824
- /**
825
- * Save admin status to AsyncStorage
826
- * @param isAdmin Whether the user is an admin
824
+ /**
825
+ * Save admin status to AsyncStorage
826
+ * @param isAdmin Whether the user is an admin
827
827
  */
828
828
  export const saveAdminStatus = async isAdmin => {
829
829
  try {
@@ -833,10 +833,10 @@ export const saveAdminStatus = async isAdmin => {
833
833
  }
834
834
  };
835
835
 
836
- /**
837
- * Get stored Onairos username for API calls
838
- * This is used for data connector APIs (Reddit, etc.) that need the username
839
- * @returns Stored username or null if not found
836
+ /**
837
+ * Get stored Onairos username for API calls
838
+ * This is used for data connector APIs (Reddit, etc.) that need the username
839
+ * @returns Stored username or null if not found
840
840
  */
841
841
  export const getOnairosUsername = async () => {
842
842
  try {
@@ -847,9 +847,9 @@ export const getOnairosUsername = async () => {
847
847
  }
848
848
  };
849
849
 
850
- /**
851
- * Save Onairos username for API calls
852
- * @param username Username to store
850
+ /**
851
+ * Save Onairos username for API calls
852
+ * @param username Username to store
853
853
  */
854
854
  export const saveOnairosUsername = async username => {
855
855
  try {
@@ -859,11 +859,11 @@ export const saveOnairosUsername = async username => {
859
859
  }
860
860
  };
861
861
 
862
- /**
863
- * Check if user has connected Onairos to Enoch before
864
- * This checks for actual usage/training data, not just account existence
865
- * @param userIdentifier - Email, username, or user ID to check
866
- * @returns Promise<boolean> - true if user has connected Onairos features to Enoch
862
+ /**
863
+ * Check if user has connected Onairos to Enoch before
864
+ * This checks for actual usage/training data, not just account existence
865
+ * @param userIdentifier - Email, username, or user ID to check
866
+ * @returns Promise<boolean> - true if user has connected Onairos features to Enoch
867
867
  */
868
868
  export const checkEnochOnairosConnection = async userIdentifier => {
869
869
  try {
@@ -4,8 +4,8 @@ import { Platform } from 'react-native';
4
4
  // Service key for PIN storage
5
5
  const PIN_SERVICE_KEY = 'OnairosEventsPIN';
6
6
  const PIN_USERNAME = 'user_pin';
7
- /**
8
- * Check if biometric authentication is available on the device
7
+ /**
8
+ * Check if biometric authentication is available on the device
9
9
  */
10
10
  export const isBiometricAvailable = async () => {
11
11
  try {
@@ -20,8 +20,8 @@ export const isBiometricAvailable = async () => {
20
20
  }
21
21
  };
22
22
 
23
- /**
24
- * Store PIN with biometric authentication
23
+ /**
24
+ * Store PIN with biometric authentication
25
25
  */
26
26
  export const storePinWithBiometric = async pin => {
27
27
  try {
@@ -89,8 +89,8 @@ export const storePinWithBiometric = async pin => {
89
89
  }
90
90
  };
91
91
 
92
- /**
93
- * Retrieve PIN with biometric authentication
92
+ /**
93
+ * Retrieve PIN with biometric authentication
94
94
  */
95
95
  export const retrievePinWithBiometric = async () => {
96
96
  try {
@@ -121,8 +121,8 @@ export const retrievePinWithBiometric = async () => {
121
121
  }
122
122
  };
123
123
 
124
- /**
125
- * Check if PIN is stored in secure storage
124
+ /**
125
+ * Check if PIN is stored in secure storage
126
126
  */
127
127
  export const isPinStored = async () => {
128
128
  try {
@@ -134,8 +134,8 @@ export const isPinStored = async () => {
134
134
  }
135
135
  };
136
136
 
137
- /**
138
- * Remove PIN from secure storage
137
+ /**
138
+ * Remove PIN from secure storage
139
139
  */
140
140
  export const removePinFromStorage = async () => {
141
141
  try {
@@ -6,11 +6,11 @@ const API_BASE_URL = API_CONFIG.BASE_URL;
6
6
 
7
7
  // Interface for API response
8
8
 
9
- /**
10
- * NEW UNIFIED LOOKUP - Get connected accounts using the simplified lookup endpoint
11
- * This is the preferred method that makes only ONE request to the backend
12
- * @param userIdentifier - Can be email, username, userId, or any user identifier
13
- * @returns Promise<ConnectedAccount[]>
9
+ /**
10
+ * NEW UNIFIED LOOKUP - Get connected accounts using the simplified lookup endpoint
11
+ * This is the preferred method that makes only ONE request to the backend
12
+ * @param userIdentifier - Can be email, username, userId, or any user identifier
13
+ * @returns Promise<ConnectedAccount[]>
14
14
  */
15
15
  export const getConnectedAccountsLookup = async userIdentifier => {
16
16
  try {
@@ -42,13 +42,13 @@ export const getConnectedAccountsLookup = async userIdentifier => {
42
42
  }
43
43
  };
44
44
 
45
- /**
46
- * SMART CONNECTED ACCOUNTS FETCHER - Uses new API with old API fallback
47
- * This function tries the new unified lookup first, then falls back to old methods if needed
48
- * @param userEmail - User's email (primary identifier)
49
- * @param userId - User's ID (fallback)
50
- * @param username - User's username (fallback)
51
- * @returns Promise<ConnectedAccount[]>
45
+ /**
46
+ * SMART CONNECTED ACCOUNTS FETCHER - Uses new API with old API fallback
47
+ * This function tries the new unified lookup first, then falls back to old methods if needed
48
+ * @param userEmail - User's email (primary identifier)
49
+ * @param userId - User's ID (fallback)
50
+ * @param username - User's username (fallback)
51
+ * @returns Promise<ConnectedAccount[]>
52
52
  */
53
53
  export const getConnectedAccountsSmart = async (userEmail, userId, username) => {
54
54
  console.log('🧠 [SMART API] Starting smart connected accounts fetch...');
@@ -101,10 +101,10 @@ export const getConnectedAccountsSmart = async (userEmail, userId, username) =>
101
101
  // These will be used as fallbacks if the new unified lookup fails
102
102
  // =============================================================================
103
103
 
104
- /**
105
- * Get connected accounts by username
106
- * @param username - Username to fetch connected accounts for
107
- * @returns Promise<ConnectedAccount[]>
104
+ /**
105
+ * Get connected accounts by username
106
+ * @param username - Username to fetch connected accounts for
107
+ * @returns Promise<ConnectedAccount[]>
108
108
  */
109
109
  export const getConnectedAccountsByUsername = async username => {
110
110
  try {
@@ -129,10 +129,10 @@ export const getConnectedAccountsByUsername = async username => {
129
129
  }
130
130
  };
131
131
 
132
- /**
133
- * Get connected accounts by email
134
- * @param email - Email to fetch connected accounts for
135
- * @returns Promise<ConnectedAccount[]>
132
+ /**
133
+ * Get connected accounts by email
134
+ * @param email - Email to fetch connected accounts for
135
+ * @returns Promise<ConnectedAccount[]>
136
136
  */
137
137
  export const getConnectedAccountsByEmail = async email => {
138
138
  try {
@@ -157,10 +157,10 @@ export const getConnectedAccountsByEmail = async email => {
157
157
  }
158
158
  };
159
159
 
160
- /**
161
- * Get connected accounts by user ID
162
- * @param userId - User ID to fetch connected accounts for
163
- * @returns Promise<ConnectedAccount[]>
160
+ /**
161
+ * Get connected accounts by user ID
162
+ * @param userId - User ID to fetch connected accounts for
163
+ * @returns Promise<ConnectedAccount[]>
164
164
  */
165
165
  export const getConnectedAccountsByUserId = async userId => {
166
166
  try {
@@ -185,10 +185,10 @@ export const getConnectedAccountsByUserId = async userId => {
185
185
  }
186
186
  };
187
187
 
188
- /**
189
- * Get platform icon based on platform name
190
- * @param platform - Platform name (case insensitive)
191
- * @returns Image source for the platform icon
188
+ /**
189
+ * Get platform icon based on platform name
190
+ * @param platform - Platform name (case insensitive)
191
+ * @returns Image source for the platform icon
192
192
  */
193
193
  export const getPlatformIcon = platform => {
194
194
  const platformLower = platform.toLowerCase();
@@ -219,10 +219,10 @@ export const getPlatformIcon = platform => {
219
219
  }
220
220
  };
221
221
 
222
- /**
223
- * Get platform color based on platform name
224
- * @param platform - Platform name (case insensitive)
225
- * @returns Hex color code for the platform
222
+ /**
223
+ * Get platform color based on platform name
224
+ * @param platform - Platform name (case insensitive)
225
+ * @returns Hex color code for the platform
226
226
  */
227
227
  export const getPlatformColor = platform => {
228
228
  const platformLower = platform.toLowerCase();
@@ -1,6 +1,6 @@
1
- /**
2
- * Google Authentication Service
3
- * Handles Google Sign-In for user authentication and account creation
1
+ /**
2
+ * Google Authentication Service
3
+ * Handles Google Sign-In for user authentication and account creation
4
4
  */
5
5
 
6
6
  import { GoogleSignin, statusCodes } from '@react-native-google-signin/google-signin';
@@ -10,8 +10,8 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
10
10
  let WEB_CLIENT_ID = '1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com';
11
11
  let IOS_CLIENT_ID = '1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com';
12
12
 
13
- /**
14
- * Update Google OAuth client IDs for custom configurations
13
+ /**
14
+ * Update Google OAuth client IDs for custom configurations
15
15
  */
16
16
  export const updateGoogleClientIds = config => {
17
17
  if (config.webClientId) {
@@ -26,8 +26,8 @@ export const updateGoogleClientIds = config => {
26
26
  });
27
27
  };
28
28
 
29
- /**
30
- * Initialize Google Sign-In for user authentication
29
+ /**
30
+ * Initialize Google Sign-In for user authentication
31
31
  */
32
32
  const initializeGoogleAuth = () => {
33
33
  GoogleSignin.configure({
@@ -44,8 +44,8 @@ const initializeGoogleAuth = () => {
44
44
  });
45
45
  };
46
46
 
47
- /**
48
- * Sign in with Google and create/authenticate user account
47
+ /**
48
+ * Sign in with Google and create/authenticate user account
49
49
  */
50
50
  export const signInWithGoogle = async () => {
51
51
  try {
@@ -148,8 +148,8 @@ export const signInWithGoogle = async () => {
148
148
  }
149
149
  };
150
150
 
151
- /**
152
- * Create or authenticate user account on backend
151
+ /**
152
+ * Create or authenticate user account on backend
153
153
  */
154
154
  const createUserAccount = async userData => {
155
155
  try {
@@ -218,8 +218,8 @@ const createUserAccount = async userData => {
218
218
  }
219
219
  };
220
220
 
221
- /**
222
- * Check if user is already signed in with Google
221
+ /**
222
+ * Check if user is already signed in with Google
223
223
  */
224
224
  export const isGoogleSignedIn = async () => {
225
225
  try {
@@ -242,8 +242,8 @@ export const isGoogleSignedIn = async () => {
242
242
  }
243
243
  };
244
244
 
245
- /**
246
- * Sign out from Google
245
+ /**
246
+ * Sign out from Google
247
247
  */
248
248
  export const signOutFromGoogle = async () => {
249
249
  try {
@@ -1,12 +1,12 @@
1
1
  import ImageResizer from '@bam.tech/react-native-image-resizer';
2
2
 
3
- /**
4
- * Comprehensive image compression service for React Native
5
- * Supports iterative compression to meet specific size targets
3
+ /**
4
+ * Comprehensive image compression service for React Native
5
+ * Supports iterative compression to meet specific size targets
6
6
  */
7
7
 
8
- /**
9
- * Get file size from URI (React Native compatible)
8
+ /**
9
+ * Get file size from URI (React Native compatible)
10
10
  */
11
11
  const getFileSizeFromUri = async uri => {
12
12
  try {
@@ -19,8 +19,8 @@ const getFileSizeFromUri = async uri => {
19
19
  }
20
20
  };
21
21
 
22
- /**
23
- * Convert image to base64 string
22
+ /**
23
+ * Convert image to base64 string
24
24
  */
25
25
  const imageToBase64 = async uri => {
26
26
  try {
@@ -47,8 +47,8 @@ const imageToBase64 = async uri => {
47
47
  }
48
48
  };
49
49
 
50
- /**
51
- * Compress image with iterative quality reduction to meet size target
50
+ /**
51
+ * Compress image with iterative quality reduction to meet size target
52
52
  */
53
53
  export const compressImageToTarget = async (imageUri, options = {}) => {
54
54
  const {
@@ -210,8 +210,8 @@ export const compressImageToTarget = async (imageUri, options = {}) => {
210
210
  }
211
211
  };
212
212
 
213
- /**
214
- * Quick compression for profile pictures (300KB target)
213
+ /**
214
+ * Quick compression for profile pictures (300KB target)
215
215
  */
216
216
  export const compressProfilePicture = async imageUri => {
217
217
  return compressImageToTarget(imageUri, {
@@ -223,8 +223,8 @@ export const compressProfilePicture = async imageUri => {
223
223
  });
224
224
  };
225
225
 
226
- /**
227
- * Compress image for upload with custom settings
226
+ /**
227
+ * Compress image for upload with custom settings
228
228
  */
229
229
  export const compressForUpload = async (imageUri, maxSizeKB = 300) => {
230
230
  return compressImageToTarget(imageUri, {
@@ -236,8 +236,8 @@ export const compressForUpload = async (imageUri, maxSizeKB = 300) => {
236
236
  });
237
237
  };
238
238
 
239
- /**
240
- * Legacy function for backward compatibility
239
+ /**
240
+ * Legacy function for backward compatibility
241
241
  */
242
242
  export const convertImageToOptimizedBase64 = async (imageUri, quality = 0.8) => {
243
243
  const result = await compressImageToTarget(imageUri, {