@onairos/react-native 3.1.16 → 3.1.18

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 (207) 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/ModalSheet.js +8 -2
  16. package/lib/commonjs/components/ModalSheet.js.map +1 -1
  17. package/lib/commonjs/components/OnairosButton.js +290 -0
  18. package/lib/commonjs/components/OnairosButton.js.map +1 -0
  19. package/lib/commonjs/components/OnairosSignInButton.js +32 -8
  20. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -1
  21. package/lib/commonjs/components/UniversalOnboarding.js +4 -4
  22. package/lib/commonjs/components/WelcomeScreen.js +29 -13
  23. package/lib/commonjs/components/WelcomeScreen.js.map +1 -1
  24. package/lib/commonjs/config/api.js +2 -2
  25. package/lib/commonjs/hooks/useConnections.js +6 -6
  26. package/lib/commonjs/hooks/useUserConnections.js +10 -10
  27. package/lib/commonjs/index.js +13 -6
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/services/apiClient.js +35 -35
  30. package/lib/commonjs/services/apiKeyService.js +99 -99
  31. package/lib/commonjs/services/authService.js +82 -82
  32. package/lib/commonjs/services/biometricPinService.js +10 -10
  33. package/lib/commonjs/services/connectedAccountsService.js +32 -32
  34. package/lib/commonjs/services/googleAuthService.js +15 -15
  35. package/lib/commonjs/services/imageCompressionService.js +15 -15
  36. package/lib/commonjs/services/jwtStorageService.js +59 -59
  37. package/lib/commonjs/services/mobileTrainingService.js +14 -14
  38. package/lib/commonjs/services/pinEncryptionService.js +10 -10
  39. package/lib/commonjs/services/pinStorageUtils.js +15 -15
  40. package/lib/commonjs/services/platformAuthService.js +47 -47
  41. package/lib/commonjs/services/storageService.js +31 -31
  42. package/lib/commonjs/services/trainingApiHelpers.js +33 -33
  43. package/lib/commonjs/services/userConnectionsService.js +24 -24
  44. package/lib/commonjs/utils/Portal.js +4 -4
  45. package/lib/commonjs/utils/api.js +24 -24
  46. package/lib/commonjs/utils/auth.js +18 -18
  47. package/lib/commonjs/utils/crypto.js +13 -13
  48. package/lib/commonjs/utils/encryption.js +12 -12
  49. package/lib/commonjs/utils/eventUtils.js +52 -52
  50. package/lib/commonjs/utils/programmaticFlow.js +16 -16
  51. package/lib/commonjs/utils/retryHelper.js +27 -27
  52. package/lib/module/assets/images/Checkbox.svg +3 -3
  53. package/lib/module/assets/images/EnochE.svg +19 -19
  54. package/lib/module/assets/images/Personalityprofile.svg +3 -3
  55. package/lib/module/assets/images/Personalitytraits.svg +3 -3
  56. package/lib/module/assets/images/Userpreferences.svg +3 -3
  57. package/lib/module/assets/images/arrow.svg +20 -20
  58. package/lib/module/assets/images/basicproficon.svg +43 -43
  59. package/lib/module/assets/images/basicprofile.svg +3 -3
  60. package/lib/module/assets/images/checkmark.svg +4 -4
  61. package/lib/module/assets/images/contentanalysis.svg +3 -3
  62. package/lib/module/assets/images/contenticon.svg +23 -23
  63. package/lib/module/assets/images/personalityicon.svg +18 -18
  64. package/lib/module/assets/images/x-close.svg +3 -3
  65. package/lib/module/components/ModalSheet.js +7 -2
  66. package/lib/module/components/ModalSheet.js.map +1 -1
  67. package/lib/module/components/OnairosButton.js +282 -0
  68. package/lib/module/components/OnairosButton.js.map +1 -0
  69. package/lib/module/components/OnairosSignInButton.js +32 -8
  70. package/lib/module/components/OnairosSignInButton.js.map +1 -1
  71. package/lib/module/components/UniversalOnboarding.js +4 -4
  72. package/lib/module/components/WelcomeScreen.js +25 -10
  73. package/lib/module/components/WelcomeScreen.js.map +1 -1
  74. package/lib/module/config/api.js +2 -2
  75. package/lib/module/hooks/useConnections.js +6 -6
  76. package/lib/module/hooks/useUserConnections.js +10 -10
  77. package/lib/module/index.js +11 -11
  78. package/lib/module/index.js.map +1 -1
  79. package/lib/module/services/apiClient.js +35 -35
  80. package/lib/module/services/apiKeyService.js +99 -99
  81. package/lib/module/services/authService.js +82 -82
  82. package/lib/module/services/biometricPinService.js +10 -10
  83. package/lib/module/services/connectedAccountsService.js +32 -32
  84. package/lib/module/services/googleAuthService.js +15 -15
  85. package/lib/module/services/imageCompressionService.js +15 -15
  86. package/lib/module/services/jwtStorageService.js +59 -59
  87. package/lib/module/services/mobileTrainingService.js +14 -14
  88. package/lib/module/services/pinEncryptionService.js +10 -10
  89. package/lib/module/services/pinStorageUtils.js +15 -15
  90. package/lib/module/services/platformAuthService.js +47 -47
  91. package/lib/module/services/storageService.js +31 -31
  92. package/lib/module/services/trainingApiHelpers.js +33 -33
  93. package/lib/module/services/userConnectionsService.js +24 -24
  94. package/lib/module/utils/Portal.js +4 -4
  95. package/lib/module/utils/api.js +24 -24
  96. package/lib/module/utils/auth.js +18 -18
  97. package/lib/module/utils/crypto.js +13 -13
  98. package/lib/module/utils/encryption.js +12 -12
  99. package/lib/module/utils/eventUtils.js +52 -52
  100. package/lib/module/utils/programmaticFlow.js +16 -16
  101. package/lib/module/utils/retryHelper.js +27 -27
  102. package/lib/typescript/components/ModalSheet.d.ts.map +1 -1
  103. package/lib/typescript/components/OnairosButton.d.ts +37 -0
  104. package/lib/typescript/components/OnairosButton.d.ts.map +1 -0
  105. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -1
  106. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -1
  107. package/lib/typescript/index.d.ts +3 -1
  108. package/lib/typescript/index.d.ts.map +1 -1
  109. package/package.json +145 -163
  110. package/src/api/index.ts +151 -151
  111. package/src/assets/images/Checkbox.svg +3 -3
  112. package/src/assets/images/EnochE.svg +19 -19
  113. package/src/assets/images/Personalityprofile.svg +3 -3
  114. package/src/assets/images/Personalitytraits.svg +3 -3
  115. package/src/assets/images/Userpreferences.svg +3 -3
  116. package/src/assets/images/arrow.svg +20 -20
  117. package/src/assets/images/basicproficon.svg +43 -43
  118. package/src/assets/images/basicprofile.svg +3 -3
  119. package/src/assets/images/checkmark.svg +4 -4
  120. package/src/assets/images/contentanalysis.svg +3 -3
  121. package/src/assets/images/contenticon.svg +23 -23
  122. package/src/assets/images/personalityicon.svg +18 -18
  123. package/src/assets/images/x-close.svg +3 -3
  124. package/src/components/BodyText.tsx +33 -33
  125. package/src/components/BrandMark.tsx +62 -62
  126. package/src/components/CodeInput.tsx +32 -32
  127. package/src/components/DataRequestScreen.tsx +355 -355
  128. package/src/components/EmailInput.tsx +31 -31
  129. package/src/components/EmailVerificationModal.tsx +363 -363
  130. package/src/components/ExistingUserDataConfirmation.tsx +506 -506
  131. package/src/components/GoogleButton.tsx +55 -55
  132. package/src/components/HeadingGroup.tsx +49 -49
  133. package/src/components/ModalHeader.tsx +125 -125
  134. package/src/components/ModalSheet.tsx +59 -57
  135. package/src/components/Onairos.tsx +422 -422
  136. package/src/components/OnairosButton.tsx +339 -0
  137. package/src/components/OnairosSignInButton.tsx +31 -9
  138. package/src/components/Overlay.tsx +506 -506
  139. package/src/components/PersonaImage.tsx +79 -79
  140. package/src/components/PersonaLoadingScreen.tsx +201 -201
  141. package/src/components/PersonalizationConsentScreen.tsx +410 -410
  142. package/src/components/PinCreationScreen.tsx +492 -492
  143. package/src/components/PinInput.tsx +555 -555
  144. package/src/components/PlatformConnectorsStep.tsx +891 -891
  145. package/src/components/PlatformList.tsx +144 -144
  146. package/src/components/PlatformToggle.tsx +226 -226
  147. package/src/components/PrimaryButton.tsx +213 -213
  148. package/src/components/SignInMatchAnimation.tsx +225 -225
  149. package/src/components/SignInStep.tsx +217 -217
  150. package/src/components/TrainingModal.tsx +1047 -1047
  151. package/src/components/UniversalOnboarding.tsx +2887 -2887
  152. package/src/components/VerificationStep.tsx +198 -198
  153. package/src/components/WelcomeScreen.tsx +490 -473
  154. package/src/components/icons/Basicproficon.tsx +30 -30
  155. package/src/components/icons/Basicprofile.tsx +17 -17
  156. package/src/components/icons/Checkbox.tsx +17 -17
  157. package/src/components/icons/Checkmark.tsx +24 -24
  158. package/src/components/icons/Contentanalysis.tsx +17 -17
  159. package/src/components/icons/Contenticon.tsx +30 -30
  160. package/src/components/icons/EnochE.tsx +39 -39
  161. package/src/components/icons/Personalityicon.tsx +22 -22
  162. package/src/components/icons/Personalityprofile.tsx +17 -17
  163. package/src/components/icons/Personalitytraits.tsx +17 -17
  164. package/src/components/icons/Userpreferences.tsx +17 -17
  165. package/src/components/icons/index.ts +12 -12
  166. package/src/components/onboarding/OAuthWebView.tsx +232 -232
  167. package/src/config/api.ts +25 -25
  168. package/src/context/AuthContext.tsx +393 -393
  169. package/src/hooks/useConnectedAccounts.ts +138 -138
  170. package/src/hooks/useConnections.ts +161 -161
  171. package/src/hooks/useCredentials.ts +174 -174
  172. package/src/hooks/useUserConnections.ts +165 -165
  173. package/src/index.js +14 -0
  174. package/src/index.ts +99 -96
  175. package/src/services/apiClient.ts +336 -336
  176. package/src/services/apiKeyService.ts +919 -919
  177. package/src/services/authService.ts +1008 -1008
  178. package/src/services/biometricPinService.ts +192 -192
  179. package/src/services/connectedAccountsService.ts +289 -289
  180. package/src/services/googleAuthService.ts +279 -279
  181. package/src/services/imageCompressionService.ts +302 -302
  182. package/src/services/jwtStorageService.ts +256 -256
  183. package/src/services/mobileTrainingService.ts +203 -203
  184. package/src/services/pinEncryptionService.ts +75 -75
  185. package/src/services/pinStorageUtils.ts +96 -96
  186. package/src/services/platformAuthService.ts +1346 -1346
  187. package/src/services/storageService.ts +451 -451
  188. package/src/services/trainingApiHelpers.ts +66 -66
  189. package/src/services/userConnectionsService.ts +556 -556
  190. package/src/services/youtubeMigrationService.ts +453 -453
  191. package/src/theme/index.ts +239 -239
  192. package/src/types/ambient.d.ts +28 -28
  193. package/src/types/index.ts +265 -265
  194. package/src/types/node-fix.d.ts +18 -18
  195. package/src/types/node-override.d.ts +23 -23
  196. package/src/types/opacity.d.ts +15 -15
  197. package/src/types/types.d.ts +17 -17
  198. package/src/utils/Portal.tsx +82 -82
  199. package/src/utils/api.js +111 -111
  200. package/src/utils/auth.js +103 -103
  201. package/src/utils/crypto.js +59 -59
  202. package/src/utils/encryption.ts +68 -68
  203. package/src/utils/eventUtils.ts +302 -302
  204. package/src/utils/haptics.ts +58 -58
  205. package/src/utils/imagePreloader.ts +2 -2
  206. package/src/utils/programmaticFlow.ts +112 -112
  207. package/src/utils/retryHelper.ts +274 -274
@@ -35,8 +35,8 @@ export const STORAGE_KEYS = {
35
35
 
36
36
  // Authentication state
37
37
 
38
- /**
39
- * Save user progress to track where they left off
38
+ /**
39
+ * Save user progress to track where they left off
40
40
  */
41
41
  export const saveUserProgress = async progress => {
42
42
  try {
@@ -53,8 +53,8 @@ export const saveUserProgress = async progress => {
53
53
  }
54
54
  };
55
55
 
56
- /**
57
- * Get user progress to determine where to resume
56
+ /**
57
+ * Get user progress to determine where to resume
58
58
  */
59
59
  export const getUserProgress = async () => {
60
60
  try {
@@ -82,8 +82,8 @@ export const getUserProgress = async () => {
82
82
  };
83
83
  };
84
84
 
85
- /**
86
- * Save authentication state
85
+ /**
86
+ * Save authentication state
87
87
  */
88
88
  export const saveAuthState = async authState => {
89
89
  try {
@@ -103,8 +103,8 @@ export const saveAuthState = async authState => {
103
103
  }
104
104
  };
105
105
 
106
- /**
107
- * Get authentication state
106
+ /**
107
+ * Get authentication state
108
108
  */
109
109
  export const getAuthState = async () => {
110
110
  try {
@@ -125,8 +125,8 @@ export const getAuthState = async () => {
125
125
  }
126
126
  };
127
127
 
128
- /**
129
- * Clear all user data (for logout)
128
+ /**
129
+ * Clear all user data (for logout)
130
130
  */
131
131
  export const clearUserData = async () => {
132
132
  try {
@@ -148,8 +148,8 @@ export const clearUserData = async () => {
148
148
  }
149
149
  };
150
150
 
151
- /**
152
- * Get resume navigation target based on user progress
151
+ /**
152
+ * Get resume navigation target based on user progress
153
153
  */
154
154
  export const getResumeTarget = async () => {
155
155
  try {
@@ -233,8 +233,8 @@ export const getResumeTarget = async () => {
233
233
  }
234
234
  };
235
235
 
236
- /**
237
- * Check if user has completed onboarding flow
236
+ /**
237
+ * Check if user has completed onboarding flow
238
238
  */
239
239
  export const hasCompletedOnboarding = async () => {
240
240
  try {
@@ -246,9 +246,9 @@ export const hasCompletedOnboarding = async () => {
246
246
  }
247
247
  };
248
248
 
249
- /**
250
- * Mark user as having reached the event page (completed full onboarding)
251
- * This creates the token that ensures they always return to Results
249
+ /**
250
+ * Mark user as having reached the event page (completed full onboarding)
251
+ * This creates the token that ensures they always return to Results
252
252
  */
253
253
  export const markEventPageReached = async eventData => {
254
254
  try {
@@ -277,8 +277,8 @@ export const markEventPageReached = async eventData => {
277
277
  }
278
278
  };
279
279
 
280
- /**
281
- * Check if user has the event access token (completed onboarding)
280
+ /**
281
+ * Check if user has the event access token (completed onboarding)
282
282
  */
283
283
  export const hasEventAccessToken = async () => {
284
284
  try {
@@ -291,8 +291,8 @@ export const hasEventAccessToken = async () => {
291
291
  }
292
292
  };
293
293
 
294
- /**
295
- * Mark a step as completed
294
+ /**
295
+ * Mark a step as completed
296
296
  */
297
297
  export const markStepCompleted = async step => {
298
298
  try {
@@ -306,8 +306,8 @@ export const markStepCompleted = async step => {
306
306
  }
307
307
  };
308
308
 
309
- /**
310
- * Update user's last screen
309
+ /**
310
+ * Update user's last screen
311
311
  */
312
312
  export const updateLastScreen = async (screen, params) => {
313
313
  try {
@@ -320,8 +320,8 @@ export const updateLastScreen = async (screen, params) => {
320
320
  }
321
321
  };
322
322
 
323
- /**
324
- * Check if this is a returning user with existing progress
323
+ /**
324
+ * Check if this is a returning user with existing progress
325
325
  */
326
326
  export const isReturningUser = async () => {
327
327
  try {
@@ -334,8 +334,8 @@ export const isReturningUser = async () => {
334
334
  }
335
335
  };
336
336
 
337
- /**
338
- * Mark app as active (call this when app becomes active)
337
+ /**
338
+ * Mark app as active (call this when app becomes active)
339
339
  */
340
340
  export const markAppActive = async () => {
341
341
  try {
@@ -348,8 +348,8 @@ export const markAppActive = async () => {
348
348
  }
349
349
  };
350
350
 
351
- /**
352
- * Development utility: Get all stored progress data for debugging
351
+ /**
352
+ * Development utility: Get all stored progress data for debugging
353
353
  */
354
354
  export const getDebugStorageInfo = async () => {
355
355
  try {
@@ -369,8 +369,8 @@ export const getDebugStorageInfo = async () => {
369
369
  }
370
370
  };
371
371
 
372
- /**
373
- * Development utility: Clear all progress (for testing)
372
+ /**
373
+ * Development utility: Clear all progress (for testing)
374
374
  */
375
375
  export const clearAllProgress = async () => {
376
376
  try {
@@ -1,11 +1,11 @@
1
1
  import { getEncryptedPinForAPI } from './pinEncryptionService';
2
2
 
3
- /**
4
- * Helper functions for training API modifications
3
+ /**
4
+ * Helper functions for training API modifications
5
5
  */
6
6
 
7
- /**
8
- * Add encrypted PIN to training data if available
7
+ /**
8
+ * Add encrypted PIN to training data if available
9
9
  */
10
10
  export const addEncryptedPinToTrainingData = async trainingData => {
11
11
  try {
@@ -34,34 +34,34 @@ export const addEncryptedPinToTrainingData = async trainingData => {
34
34
  }
35
35
  };
36
36
 
37
- /**
38
- * Example of how to modify the training API call to include PIN
39
- *
40
- * Usage in UniversalOnboarding.tsx:
41
- *
42
- * ```typescript
43
- * // Before sending to API
44
- * const trainingData = {
45
- * socketId,
46
- * username: finalUsername,
47
- * email: userInfo?.email || null,
48
- * modelKey: null,
49
- * connectedPlatforms: platformsList,
50
- * platformConnections: connections
51
- * };
52
- *
53
- * // Add encrypted PIN if needed
54
- * const trainingDataWithPin = await addEncryptedPinToTrainingData(trainingData);
55
- *
56
- * // Send to API
57
- * const response = await fetch('https://api2.onairos.uk/mobile-training/enoch', {
58
- * method: 'POST',
59
- * headers: {
60
- * 'Content-Type': 'application/json',
61
- * 'Authorization': `Bearer ${token}`
62
- * },
63
- * body: JSON.stringify(trainingDataWithPin)
64
- * });
65
- * ```
37
+ /**
38
+ * Example of how to modify the training API call to include PIN
39
+ *
40
+ * Usage in UniversalOnboarding.tsx:
41
+ *
42
+ * ```typescript
43
+ * // Before sending to API
44
+ * const trainingData = {
45
+ * socketId,
46
+ * username: finalUsername,
47
+ * email: userInfo?.email || null,
48
+ * modelKey: null,
49
+ * connectedPlatforms: platformsList,
50
+ * platformConnections: connections
51
+ * };
52
+ *
53
+ * // Add encrypted PIN if needed
54
+ * const trainingDataWithPin = await addEncryptedPinToTrainingData(trainingData);
55
+ *
56
+ * // Send to API
57
+ * const response = await fetch('https://api2.onairos.uk/mobile-training/enoch', {
58
+ * method: 'POST',
59
+ * headers: {
60
+ * 'Content-Type': 'application/json',
61
+ * 'Authorization': `Bearer ${token}`
62
+ * },
63
+ * body: JSON.stringify(trainingDataWithPin)
64
+ * });
65
+ * ```
66
66
  */
67
67
  //# sourceMappingURL=trainingApiHelpers.js.map
@@ -3,10 +3,10 @@ import AsyncStorage from '@react-native-async-storage/async-storage';
3
3
  import { compressProfilePicture } from './imageCompressionService';
4
4
  import { API_CONFIG, getAuthHeaders } from '../config/api';
5
5
 
6
- /**
7
- * Get user identifier (ID or username) using multiple fallback methods
8
- * Backend now supports both user IDs and usernames for profile picture uploads
9
- * @returns Promise<string | null>
6
+ /**
7
+ * Get user identifier (ID or username) using multiple fallback methods
8
+ * Backend now supports both user IDs and usernames for profile picture uploads
9
+ * @returns Promise<string | null>
10
10
  */
11
11
  const getUserIdWithFallbacks = async () => {
12
12
  try {
@@ -84,8 +84,8 @@ const API_BASE_URL = API_CONFIG.BASE_URL;
84
84
 
85
85
  // Interface for the transformed connection used by UI
86
86
 
87
- /**
88
- * Transform API connection to UI connection format
87
+ /**
88
+ * Transform API connection to UI connection format
89
89
  */
90
90
  const transformAPIConnection = apiConnection => {
91
91
  var _apiConnection$photo, _apiConnection$mutual;
@@ -126,10 +126,10 @@ const transformAPIConnection = apiConnection => {
126
126
  };
127
127
  };
128
128
 
129
- /**
130
- * Get user connections by username
131
- * @param username - Username to fetch connections for
132
- * @returns Promise<Connection[]>
129
+ /**
130
+ * Get user connections by username
131
+ * @param username - Username to fetch connections for
132
+ * @returns Promise<Connection[]>
133
133
  */
134
134
  export const getUserConnectionsByUsername = async username => {
135
135
  try {
@@ -176,10 +176,10 @@ export const getUserConnectionsByUsername = async username => {
176
176
  }
177
177
  };
178
178
 
179
- /**
180
- * Get user connections by user ID
181
- * @param userId - User ID to fetch connections for
182
- * @returns Promise<Connection[]>
179
+ /**
180
+ * Get user connections by user ID
181
+ * @param userId - User ID to fetch connections for
182
+ * @returns Promise<Connection[]>
183
183
  */
184
184
  export const getUserConnectionsByUserId = async userId => {
185
185
  try {
@@ -223,10 +223,10 @@ export const getUserConnectionsByUserId = async userId => {
223
223
  }
224
224
  };
225
225
 
226
- /**
227
- * Get user connections with automatic detection of user info
228
- * PRIORITIZES the working email/username endpoint over the failing user ID endpoint
229
- * @returns Promise<Connection[]>
226
+ /**
227
+ * Get user connections with automatic detection of user info
228
+ * PRIORITIZES the working email/username endpoint over the failing user ID endpoint
229
+ * @returns Promise<Connection[]>
230
230
  */
231
231
  export const getUserConnections = async () => {
232
232
  try {
@@ -309,12 +309,12 @@ export const getUserConnections = async () => {
309
309
  }
310
310
  };
311
311
 
312
- /**
313
- * Upload profile picture using base64 data with compression
314
- * The backend identifies the user from the JWT token, no need for user ID in URL
315
- * @param imageUri - Image URI (file:// or base64)
316
- * @param fileType - File type (jpg, png) - optional, will be extracted from imageUri if not provided
317
- * @returns Promise<{ success: boolean; photoUrl?: string; error?: string }>
312
+ /**
313
+ * Upload profile picture using base64 data with compression
314
+ * The backend identifies the user from the JWT token, no need for user ID in URL
315
+ * @param imageUri - Image URI (file:// or base64)
316
+ * @param fileType - File type (jpg, png) - optional, will be extracted from imageUri if not provided
317
+ * @returns Promise<{ success: boolean; photoUrl?: string; error?: string }>
318
318
  */
319
319
  export const uploadProfilePicture = async (imageUri, fileType) => {
320
320
  try {
@@ -12,8 +12,8 @@ const PortalContext = /*#__PURE__*/React.createContext({
12
12
  unmount: () => {}
13
13
  });
14
14
 
15
- /**
16
- * Portal Host component - place this at the root of your app
15
+ /**
16
+ * Portal Host component - place this at the root of your app
17
17
  */
18
18
  export const PortalHost = ({
19
19
  children
@@ -61,8 +61,8 @@ export const PortalHost = ({
61
61
  }, portals[Number(key)])));
62
62
  };
63
63
 
64
- /**
65
- * Portal component - renders children into the PortalHost
64
+ /**
65
+ * Portal component - renders children into the PortalHost
66
66
  */
67
67
  export const Portal = ({
68
68
  children
@@ -2,9 +2,9 @@ import axios from 'axios';
2
2
  import AsyncStorage from '@react-native-async-storage/async-storage';
3
3
  const API_URL = 'https://api2.onairos.uk';
4
4
 
5
- /**
6
- * Create an API instance with authorization headers
7
- * @returns {Promise<Object>} - The axios instance
5
+ /**
6
+ * Create an API instance with authorization headers
7
+ * @returns {Promise<Object>} - The axios instance
8
8
  */
9
9
  export const createApiInstance = async () => {
10
10
  const token = await AsyncStorage.getItem('onairosToken');
@@ -19,9 +19,9 @@ export const createApiInstance = async () => {
19
19
  });
20
20
  };
21
21
 
22
- /**
23
- * Validate the domain with the Onairos API
24
- * @returns {Promise<Object>} - The validation response
22
+ /**
23
+ * Validate the domain with the Onairos API
24
+ * @returns {Promise<Object>} - The validation response
25
25
  */
26
26
  export const validateDomain = async () => {
27
27
  try {
@@ -36,11 +36,11 @@ export const validateDomain = async () => {
36
36
  }
37
37
  };
38
38
 
39
- /**
40
- * Fetch account information
41
- * @param {string} identifier - The username or email
42
- * @param {boolean} isEmail - Whether the identifier is an email
43
- * @returns {Promise<Object>} - The account information
39
+ /**
40
+ * Fetch account information
41
+ * @param {string} identifier - The username or email
42
+ * @param {boolean} isEmail - Whether the identifier is an email
43
+ * @returns {Promise<Object>} - The account information
44
44
  */
45
45
  export const fetchAccountInfo = async (identifier, isEmail = false) => {
46
46
  try {
@@ -63,12 +63,12 @@ export const fetchAccountInfo = async (identifier, isEmail = false) => {
63
63
  }
64
64
  };
65
65
 
66
- /**
67
- * Get API URL for data requests
68
- * @param {Array} approvedRequests - The approved data requests
69
- * @param {string} pin - The encrypted PIN
70
- * @param {string} othentSub - The hashed Othent sub
71
- * @returns {Promise<Object>} - The API URL response
66
+ /**
67
+ * Get API URL for data requests
68
+ * @param {Array} approvedRequests - The approved data requests
69
+ * @param {string} pin - The encrypted PIN
70
+ * @param {string} othentSub - The hashed Othent sub
71
+ * @returns {Promise<Object>} - The API URL response
72
72
  */
73
73
  export const getApiUrl = async (approvedRequests, pin, othentSub) => {
74
74
  try {
@@ -91,13 +91,13 @@ export const getApiUrl = async (approvedRequests, pin, othentSub) => {
91
91
  }
92
92
  };
93
93
 
94
- /**
95
- * Create a new user account
96
- * @param {string} othentSub - The hashed Othent sub
97
- * @param {string} pin - The PIN
98
- * @param {Array} socialAccounts - The selected social accounts
99
- * @param {string} email - The user's email
100
- * @returns {Promise<Object>} - The account creation response
94
+ /**
95
+ * Create a new user account
96
+ * @param {string} othentSub - The hashed Othent sub
97
+ * @param {string} pin - The PIN
98
+ * @param {Array} socialAccounts - The selected social accounts
99
+ * @param {string} email - The user's email
100
+ * @returns {Promise<Object>} - The account creation response
101
101
  */
102
102
  export const createAccount = async (othentSub, pin, socialAccounts, email) => {
103
103
  try {
@@ -2,10 +2,10 @@ import axios from 'axios';
2
2
  import AsyncStorage from '@react-native-async-storage/async-storage';
3
3
  const API_URL = 'https://api2.onairos.uk';
4
4
 
5
- /**
6
- * Get the encrypted PIN for a user
7
- * @param {string} hashedOthentSub - The hashed Othent sub
8
- * @returns {Promise<Object>} - The response containing the encrypted PIN
5
+ /**
6
+ * Get the encrypted PIN for a user
7
+ * @param {string} hashedOthentSub - The hashed Othent sub
8
+ * @returns {Promise<Object>} - The response containing the encrypted PIN
9
9
  */
10
10
  export const getPin = async hashedOthentSub => {
11
11
  try {
@@ -19,10 +19,10 @@ export const getPin = async hashedOthentSub => {
19
19
  }
20
20
  };
21
21
 
22
- /**
23
- * Verify a token with the Onairos API
24
- * @param {string} token - The token to verify
25
- * @returns {Promise<boolean>} - Whether the token is valid
22
+ /**
23
+ * Verify a token with the Onairos API
24
+ * @param {string} token - The token to verify
25
+ * @returns {Promise<boolean>} - Whether the token is valid
26
26
  */
27
27
  export const verifyToken = async token => {
28
28
  try {
@@ -38,11 +38,11 @@ export const verifyToken = async token => {
38
38
  }
39
39
  };
40
40
 
41
- /**
42
- * Store authentication data
43
- * @param {string} token - The authentication token
44
- * @param {string} username - The username
45
- * @param {Object} othentData - The Othent user data
41
+ /**
42
+ * Store authentication data
43
+ * @param {string} token - The authentication token
44
+ * @param {string} username - The username
45
+ * @param {Object} othentData - The Othent user data
46
46
  */
47
47
  export const storeAuthData = async (token, username = null, othentData = null) => {
48
48
  try {
@@ -59,8 +59,8 @@ export const storeAuthData = async (token, username = null, othentData = null) =
59
59
  }
60
60
  };
61
61
 
62
- /**
63
- * Clear authentication data
62
+ /**
63
+ * Clear authentication data
64
64
  */
65
65
  export const clearAuthData = async () => {
66
66
  try {
@@ -73,9 +73,9 @@ export const clearAuthData = async () => {
73
73
  }
74
74
  };
75
75
 
76
- /**
77
- * Get stored authentication data
78
- * @returns {Promise<Object>} - The stored authentication data
76
+ /**
77
+ * Get stored authentication data
78
+ * @returns {Promise<Object>} - The stored authentication data
79
79
  */
80
80
  export const getStoredAuthData = async () => {
81
81
  try {
@@ -1,11 +1,11 @@
1
1
  import { RSA } from 'react-native-rsa-native';
2
2
  import { sha256 as cryptoSha256 } from 'react-native-crypto-js';
3
3
 
4
- /**
5
- * Encrypt data using RSA
6
- * @param {string} publicKey - The RSA public key
7
- * @param {string} data - The data to encrypt
8
- * @returns {Promise<string>} - The encrypted data
4
+ /**
5
+ * Encrypt data using RSA
6
+ * @param {string} publicKey - The RSA public key
7
+ * @param {string} data - The data to encrypt
8
+ * @returns {Promise<string>} - The encrypted data
9
9
  */
10
10
  export const rsaEncrypt = async (publicKey, data) => {
11
11
  try {
@@ -24,19 +24,19 @@ export const rsaEncrypt = async (publicKey, data) => {
24
24
  }
25
25
  };
26
26
 
27
- /**
28
- * Hash data using SHA-256
29
- * @param {string} data - The data to hash
30
- * @returns {string} - The hashed data
27
+ /**
28
+ * Hash data using SHA-256
29
+ * @param {string} data - The data to hash
30
+ * @returns {string} - The hashed data
31
31
  */
32
32
  export const sha256 = data => {
33
33
  return cryptoSha256(data).toString();
34
34
  };
35
35
 
36
- /**
37
- * Convert a base64 string to a buffer
38
- * @param {string} base64String - The base64 string to convert
39
- * @returns {ArrayBuffer} - The converted buffer
36
+ /**
37
+ * Convert a base64 string to a buffer
38
+ * @param {string} base64String - The base64 string to convert
39
+ * @returns {ArrayBuffer} - The converted buffer
40
40
  */
41
41
  export const base64ToBuffer = base64String => {
42
42
  try {
@@ -1,9 +1,9 @@
1
1
  import { onairosApi } from '../api';
2
- /**
3
- * Encrypt a model key using RSA with a public key
4
- * @param publicKey The public key to encrypt with
5
- * @param modelKey The model key to encrypt
6
- * @returns The encrypted model key
2
+ /**
3
+ * Encrypt a model key using RSA with a public key
4
+ * @param publicKey The public key to encrypt with
5
+ * @param modelKey The model key to encrypt
6
+ * @returns The encrypted model key
7
7
  */
8
8
  export const encryptModelKey = (publicKey, modelKey) => {
9
9
  try {
@@ -24,9 +24,9 @@ export const encryptModelKey = (publicKey, modelKey) => {
24
24
  }
25
25
  };
26
26
 
27
- /**
28
- * Get the server's public key
29
- * @returns The server's public key
27
+ /**
28
+ * Get the server's public key
29
+ * @returns The server's public key
30
30
  */
31
31
  export const getServerPublicKey = async () => {
32
32
  try {
@@ -49,10 +49,10 @@ export const getServerPublicKey = async () => {
49
49
  }
50
50
  };
51
51
 
52
- /**
53
- * Hash a string using SHA-256
54
- * @param input The string to hash
55
- * @returns The hashed string
52
+ /**
53
+ * Hash a string using SHA-256
54
+ * @param input The string to hash
55
+ * @returns The hashed string
56
56
  */
57
57
  export const hashString = async input => {
58
58
  try {