@onairos/react-native 3.1.11 → 3.1.13

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 (598) hide show
  1. package/lib/commonjs/api/index.js +75 -1
  2. package/lib/commonjs/api/index.js.map +1 -1
  3. package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  4. package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  5. package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
  6. package/lib/commonjs/assets/icons/Gmail.png +0 -0
  7. package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
  8. package/lib/commonjs/assets/icons/Redditicon.png +0 -0
  9. package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
  10. package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
  11. package/lib/commonjs/assets/icons/farcaster.png +0 -0
  12. package/lib/commonjs/assets/icons/instagram.png +0 -0
  13. package/lib/commonjs/assets/icons/pinterest.png +0 -0
  14. package/lib/commonjs/assets/icons/swerv_logo.png +0 -0
  15. package/lib/commonjs/assets/icons/twitter.jpg +0 -0
  16. package/lib/commonjs/assets/images/Checkbox.svg +3 -0
  17. package/lib/commonjs/assets/images/EnochE.svg +19 -0
  18. package/lib/commonjs/assets/images/Enochicon1.png +0 -0
  19. package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
  20. package/lib/commonjs/assets/images/Facebookicon.png +0 -0
  21. package/lib/commonjs/assets/images/Gmail.png +0 -0
  22. package/lib/commonjs/assets/images/Googlelogo.png +0 -0
  23. package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
  24. package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
  25. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
  26. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
  27. package/lib/commonjs/assets/images/Redditicon.png +0 -0
  28. package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
  29. package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
  30. package/lib/commonjs/assets/images/arrow.svg +20 -0
  31. package/lib/commonjs/assets/images/basicproficon.svg +43 -0
  32. package/lib/commonjs/assets/images/basicprofile.svg +3 -0
  33. package/lib/commonjs/assets/images/checkmark.svg +4 -0
  34. package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
  35. package/lib/commonjs/assets/images/contenticon.svg +23 -0
  36. package/lib/commonjs/assets/images/persona1.png +0 -0
  37. package/lib/commonjs/assets/images/persona2.png +0 -0
  38. package/lib/commonjs/assets/images/persona3.png +0 -0
  39. package/lib/commonjs/assets/images/persona4.png +0 -0
  40. package/lib/commonjs/assets/images/persona5.png +0 -0
  41. package/lib/commonjs/assets/images/personalityicon.svg +18 -0
  42. package/lib/commonjs/assets/images/x-close.svg +3 -0
  43. package/lib/commonjs/components/BodyText.js +27 -0
  44. package/lib/commonjs/components/BodyText.js.map +1 -0
  45. package/lib/commonjs/components/BrandMark.js +44 -0
  46. package/lib/commonjs/components/BrandMark.js.map +1 -0
  47. package/lib/commonjs/components/CodeInput.js +30 -0
  48. package/lib/commonjs/components/CodeInput.js.map +1 -0
  49. package/lib/commonjs/components/EmailInput.js +30 -0
  50. package/lib/commonjs/components/EmailInput.js.map +1 -0
  51. package/lib/commonjs/components/ExistingUserDataConfirmation.js +474 -0
  52. package/lib/commonjs/components/ExistingUserDataConfirmation.js.map +1 -0
  53. package/lib/commonjs/components/GoogleButton.js +55 -0
  54. package/lib/commonjs/components/GoogleButton.js.map +1 -0
  55. package/lib/commonjs/components/HeadingGroup.js +43 -0
  56. package/lib/commonjs/components/HeadingGroup.js.map +1 -0
  57. package/lib/commonjs/components/ModalHeader.js +99 -0
  58. package/lib/commonjs/components/ModalHeader.js.map +1 -0
  59. package/lib/commonjs/components/ModalSheet.js +41 -0
  60. package/lib/commonjs/components/ModalSheet.js.map +1 -0
  61. package/lib/commonjs/components/Onairos.js +1 -3
  62. package/lib/commonjs/components/Onairos.js.map +1 -1
  63. package/lib/commonjs/components/OnairosButton.js +171 -190
  64. package/lib/commonjs/components/OnairosButton.js.map +1 -1
  65. package/lib/commonjs/components/OnairosSignInButton.js +169 -0
  66. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -0
  67. package/lib/commonjs/components/Overlay.js +5 -5
  68. package/lib/commonjs/components/Overlay.js.map +1 -1
  69. package/lib/commonjs/components/PersonaImage.js +60 -0
  70. package/lib/commonjs/components/PersonaImage.js.map +1 -0
  71. package/lib/commonjs/components/PersonaLoadingScreen.js +156 -0
  72. package/lib/commonjs/components/PersonaLoadingScreen.js.map +1 -0
  73. package/lib/commonjs/components/PersonalizationConsentScreen.js +316 -0
  74. package/lib/commonjs/components/PersonalizationConsentScreen.js.map +1 -0
  75. package/lib/commonjs/components/PinCreationScreen.js +393 -0
  76. package/lib/commonjs/components/PinCreationScreen.js.map +1 -0
  77. package/lib/commonjs/components/PinInput.js +282 -120
  78. package/lib/commonjs/components/PinInput.js.map +1 -1
  79. package/lib/commonjs/components/PlatformConnectorsStep.js +828 -0
  80. package/lib/commonjs/components/PlatformConnectorsStep.js.map +1 -0
  81. package/lib/commonjs/components/PlatformToggle.js +180 -0
  82. package/lib/commonjs/components/PlatformToggle.js.map +1 -0
  83. package/lib/commonjs/components/PrimaryButton.js +180 -0
  84. package/lib/commonjs/components/PrimaryButton.js.map +1 -0
  85. package/lib/commonjs/components/SignInMatchAnimation.js +197 -0
  86. package/lib/commonjs/components/SignInMatchAnimation.js.map +1 -0
  87. package/lib/commonjs/components/SignInStep.js +179 -0
  88. package/lib/commonjs/components/SignInStep.js.map +1 -0
  89. package/lib/commonjs/components/TrainingModal.js +808 -563
  90. package/lib/commonjs/components/TrainingModal.js.map +1 -1
  91. package/lib/commonjs/components/UniversalOnboarding.js +2304 -1283
  92. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
  93. package/lib/commonjs/components/VerificationStep.js +154 -0
  94. package/lib/commonjs/components/VerificationStep.js.map +1 -0
  95. package/lib/commonjs/components/WelcomeScreen.js +385 -0
  96. package/lib/commonjs/components/WelcomeScreen.js.map +1 -0
  97. package/lib/commonjs/components/icons/Basicproficon.js +37 -0
  98. package/lib/commonjs/components/icons/Basicproficon.js.map +1 -0
  99. package/lib/commonjs/components/icons/Basicprofile.js +21 -0
  100. package/lib/commonjs/components/icons/Basicprofile.js.map +1 -0
  101. package/lib/commonjs/components/icons/Checkbox.js +21 -0
  102. package/lib/commonjs/components/icons/Checkbox.js.map +1 -0
  103. package/lib/commonjs/components/icons/Checkmark.js +27 -0
  104. package/lib/commonjs/components/icons/Checkmark.js.map +1 -0
  105. package/lib/commonjs/components/icons/Contentanalysis.js +21 -0
  106. package/lib/commonjs/components/icons/Contentanalysis.js.map +1 -0
  107. package/lib/commonjs/components/icons/Contenticon.js +39 -0
  108. package/lib/commonjs/components/icons/Contenticon.js.map +1 -0
  109. package/lib/commonjs/components/icons/EnochE.js +41 -0
  110. package/lib/commonjs/components/icons/EnochE.js.map +1 -0
  111. package/lib/commonjs/components/icons/Personalityicon.js +30 -0
  112. package/lib/commonjs/components/icons/Personalityicon.js.map +1 -0
  113. package/lib/commonjs/components/icons/Personalityprofile.js +21 -0
  114. package/lib/commonjs/components/icons/Personalityprofile.js.map +1 -0
  115. package/lib/commonjs/components/icons/Personalitytraits.js +21 -0
  116. package/lib/commonjs/components/icons/Personalitytraits.js.map +1 -0
  117. package/lib/commonjs/components/icons/Userpreferences.js +21 -0
  118. package/lib/commonjs/components/icons/Userpreferences.js.map +1 -0
  119. package/lib/commonjs/components/icons/index.js +84 -0
  120. package/lib/commonjs/components/icons/index.js.map +1 -0
  121. package/lib/commonjs/components/onboarding/OAuthWebView.js +134 -743
  122. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
  123. package/lib/commonjs/config/api.js +34 -0
  124. package/lib/commonjs/config/api.js.map +1 -0
  125. package/lib/commonjs/context/AuthContext.js +345 -0
  126. package/lib/commonjs/context/AuthContext.js.map +1 -0
  127. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -0
  128. package/lib/commonjs/hooks/useConnectedAccounts.js.map +1 -0
  129. package/lib/commonjs/hooks/useConnections.js +120 -125
  130. package/lib/commonjs/hooks/useConnections.js.map +1 -1
  131. package/lib/commonjs/hooks/useUserConnections.js +148 -0
  132. package/lib/commonjs/hooks/useUserConnections.js.map +1 -0
  133. package/lib/commonjs/index.js +149 -27
  134. package/lib/commonjs/index.js.map +1 -1
  135. package/lib/commonjs/services/apiClient.js +302 -0
  136. package/lib/commonjs/services/apiClient.js.map +1 -0
  137. package/lib/commonjs/services/authService.js +935 -0
  138. package/lib/commonjs/services/authService.js.map +1 -0
  139. package/lib/commonjs/services/biometricPinService.js +184 -0
  140. package/lib/commonjs/services/biometricPinService.js.map +1 -0
  141. package/lib/commonjs/services/connectedAccountsService.js +268 -0
  142. package/lib/commonjs/services/connectedAccountsService.js.map +1 -0
  143. package/lib/commonjs/services/googleAuthService.js +268 -0
  144. package/lib/commonjs/services/googleAuthService.js.map +1 -0
  145. package/lib/commonjs/services/imageCompressionService.js +260 -0
  146. package/lib/commonjs/services/imageCompressionService.js.map +1 -0
  147. package/lib/commonjs/services/jwtStorageService.js +256 -0
  148. package/lib/commonjs/services/jwtStorageService.js.map +1 -0
  149. package/lib/commonjs/services/mobileTrainingService.js +185 -0
  150. package/lib/commonjs/services/mobileTrainingService.js.map +1 -0
  151. package/lib/commonjs/services/pinEncryptionService.js +84 -0
  152. package/lib/commonjs/services/pinEncryptionService.js.map +1 -0
  153. package/lib/commonjs/services/pinStorageUtils.js +105 -0
  154. package/lib/commonjs/services/pinStorageUtils.js.map +1 -0
  155. package/lib/commonjs/services/platformAuthService.js +956 -722
  156. package/lib/commonjs/services/platformAuthService.js.map +1 -1
  157. package/lib/commonjs/services/storageService.js +404 -0
  158. package/lib/commonjs/services/storageService.js.map +1 -0
  159. package/lib/commonjs/services/trainingApiHelpers.js +73 -0
  160. package/lib/commonjs/services/trainingApiHelpers.js.map +1 -0
  161. package/lib/commonjs/services/userConnectionsService.js +486 -0
  162. package/lib/commonjs/services/userConnectionsService.js.map +1 -0
  163. package/lib/commonjs/services/youtubeMigrationService.js +415 -0
  164. package/lib/commonjs/services/youtubeMigrationService.js.map +1 -0
  165. package/lib/commonjs/theme/index.js +249 -0
  166. package/lib/commonjs/theme/index.js.map +1 -0
  167. package/lib/commonjs/utils/eventUtils.js +288 -0
  168. package/lib/commonjs/utils/eventUtils.js.map +1 -0
  169. package/lib/commonjs/utils/haptics.js +66 -0
  170. package/lib/commonjs/utils/haptics.js.map +1 -0
  171. package/lib/commonjs/utils/imagePreloader.js +6 -0
  172. package/lib/commonjs/utils/imagePreloader.js.map +1 -0
  173. package/lib/module/api/index.js +72 -0
  174. package/lib/module/api/index.js.map +1 -1
  175. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  176. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  177. package/lib/module/assets/icons/Facebookicon.png +0 -0
  178. package/lib/module/assets/icons/Gmail.png +0 -0
  179. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  180. package/lib/module/assets/icons/Redditicon.png +0 -0
  181. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  182. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  183. package/lib/module/assets/icons/farcaster.png +0 -0
  184. package/lib/module/assets/icons/instagram.png +0 -0
  185. package/lib/module/assets/icons/pinterest.png +0 -0
  186. package/lib/module/assets/icons/swerv_logo.png +0 -0
  187. package/lib/module/assets/icons/twitter.jpg +0 -0
  188. package/lib/module/assets/images/Checkbox.svg +3 -0
  189. package/lib/module/assets/images/EnochE.svg +19 -0
  190. package/lib/module/assets/images/Enochicon1.png +0 -0
  191. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  192. package/lib/module/assets/images/Facebookicon.png +0 -0
  193. package/lib/module/assets/images/Gmail.png +0 -0
  194. package/lib/module/assets/images/Googlelogo.png +0 -0
  195. package/lib/module/assets/images/Linkedinicon.png +0 -0
  196. package/lib/module/assets/images/Onairoslogo.png +0 -0
  197. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  198. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  199. package/lib/module/assets/images/Redditicon.png +0 -0
  200. package/lib/module/assets/images/Userpreferences.svg +3 -0
  201. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  202. package/lib/module/assets/images/arrow.svg +20 -0
  203. package/lib/module/assets/images/basicproficon.svg +43 -0
  204. package/lib/module/assets/images/basicprofile.svg +3 -0
  205. package/lib/module/assets/images/checkmark.svg +4 -0
  206. package/lib/module/assets/images/contentanalysis.svg +3 -0
  207. package/lib/module/assets/images/contenticon.svg +23 -0
  208. package/lib/module/assets/images/persona1.png +0 -0
  209. package/lib/module/assets/images/persona2.png +0 -0
  210. package/lib/module/assets/images/persona3.png +0 -0
  211. package/lib/module/assets/images/persona4.png +0 -0
  212. package/lib/module/assets/images/persona5.png +0 -0
  213. package/lib/module/assets/images/personalityicon.svg +18 -0
  214. package/lib/module/assets/images/x-close.svg +3 -0
  215. package/lib/module/components/BodyText.js +20 -0
  216. package/lib/module/components/BodyText.js.map +1 -0
  217. package/lib/module/components/BrandMark.js +37 -0
  218. package/lib/module/components/BrandMark.js.map +1 -0
  219. package/lib/module/components/CodeInput.js +23 -0
  220. package/lib/module/components/CodeInput.js.map +1 -0
  221. package/lib/module/components/EmailInput.js +23 -0
  222. package/lib/module/components/EmailInput.js.map +1 -0
  223. package/lib/module/components/ExistingUserDataConfirmation.js +465 -0
  224. package/lib/module/components/ExistingUserDataConfirmation.js.map +1 -0
  225. package/lib/module/components/GoogleButton.js +48 -0
  226. package/lib/module/components/GoogleButton.js.map +1 -0
  227. package/lib/module/components/HeadingGroup.js +36 -0
  228. package/lib/module/components/HeadingGroup.js.map +1 -0
  229. package/lib/module/components/ModalHeader.js +92 -0
  230. package/lib/module/components/ModalHeader.js.map +1 -0
  231. package/lib/module/components/ModalSheet.js +34 -0
  232. package/lib/module/components/ModalSheet.js.map +1 -0
  233. package/lib/module/components/Onairos.js +1 -3
  234. package/lib/module/components/Onairos.js.map +1 -1
  235. package/lib/module/components/OnairosButton.js +172 -192
  236. package/lib/module/components/OnairosButton.js.map +1 -1
  237. package/lib/module/components/OnairosSignInButton.js +160 -0
  238. package/lib/module/components/OnairosSignInButton.js.map +1 -0
  239. package/lib/module/components/Overlay.js +5 -5
  240. package/lib/module/components/Overlay.js.map +1 -1
  241. package/lib/module/components/PersonaImage.js +53 -0
  242. package/lib/module/components/PersonaImage.js.map +1 -0
  243. package/lib/module/components/PersonaLoadingScreen.js +148 -0
  244. package/lib/module/components/PersonaLoadingScreen.js.map +1 -0
  245. package/lib/module/components/PersonalizationConsentScreen.js +309 -0
  246. package/lib/module/components/PersonalizationConsentScreen.js.map +1 -0
  247. package/lib/module/components/PinCreationScreen.js +386 -0
  248. package/lib/module/components/PinCreationScreen.js.map +1 -0
  249. package/lib/module/components/PinInput.js +283 -120
  250. package/lib/module/components/PinInput.js.map +1 -1
  251. package/lib/module/components/PlatformConnectorsStep.js +820 -0
  252. package/lib/module/components/PlatformConnectorsStep.js.map +1 -0
  253. package/lib/module/components/PlatformToggle.js +173 -0
  254. package/lib/module/components/PlatformToggle.js.map +1 -0
  255. package/lib/module/components/PrimaryButton.js +172 -0
  256. package/lib/module/components/PrimaryButton.js.map +1 -0
  257. package/lib/module/components/SignInMatchAnimation.js +189 -0
  258. package/lib/module/components/SignInMatchAnimation.js.map +1 -0
  259. package/lib/module/components/SignInStep.js +171 -0
  260. package/lib/module/components/SignInStep.js.map +1 -0
  261. package/lib/module/components/TrainingModal.js +809 -565
  262. package/lib/module/components/TrainingModal.js.map +1 -1
  263. package/lib/module/components/UniversalOnboarding.js +2307 -1284
  264. package/lib/module/components/UniversalOnboarding.js.map +1 -1
  265. package/lib/module/components/VerificationStep.js +146 -0
  266. package/lib/module/components/VerificationStep.js.map +1 -0
  267. package/lib/module/components/WelcomeScreen.js +378 -0
  268. package/lib/module/components/WelcomeScreen.js.map +1 -0
  269. package/lib/module/components/icons/Basicproficon.js +30 -0
  270. package/lib/module/components/icons/Basicproficon.js.map +1 -0
  271. package/lib/module/components/icons/Basicprofile.js +14 -0
  272. package/lib/module/components/icons/Basicprofile.js.map +1 -0
  273. package/lib/module/components/icons/Checkbox.js +14 -0
  274. package/lib/module/components/icons/Checkbox.js.map +1 -0
  275. package/lib/module/components/icons/Checkmark.js +20 -0
  276. package/lib/module/components/icons/Checkmark.js.map +1 -0
  277. package/lib/module/components/icons/Contentanalysis.js +14 -0
  278. package/lib/module/components/icons/Contentanalysis.js.map +1 -0
  279. package/lib/module/components/icons/Contenticon.js +32 -0
  280. package/lib/module/components/icons/Contenticon.js.map +1 -0
  281. package/lib/module/components/icons/EnochE.js +34 -0
  282. package/lib/module/components/icons/EnochE.js.map +1 -0
  283. package/lib/module/components/icons/Personalityicon.js +23 -0
  284. package/lib/module/components/icons/Personalityicon.js.map +1 -0
  285. package/lib/module/components/icons/Personalityprofile.js +14 -0
  286. package/lib/module/components/icons/Personalityprofile.js.map +1 -0
  287. package/lib/module/components/icons/Personalitytraits.js +14 -0
  288. package/lib/module/components/icons/Personalitytraits.js.map +1 -0
  289. package/lib/module/components/icons/Userpreferences.js +14 -0
  290. package/lib/module/components/icons/Userpreferences.js.map +1 -0
  291. package/lib/module/components/icons/index.js +13 -0
  292. package/lib/module/components/icons/index.js.map +1 -0
  293. package/lib/module/components/onboarding/OAuthWebView.js +136 -744
  294. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
  295. package/lib/module/config/api.js +26 -0
  296. package/lib/module/config/api.js.map +1 -0
  297. package/lib/module/context/AuthContext.js +335 -0
  298. package/lib/module/context/AuthContext.js.map +1 -0
  299. package/lib/module/hooks/useConnectedAccounts.js +106 -0
  300. package/lib/module/hooks/useConnectedAccounts.js.map +1 -0
  301. package/lib/module/hooks/useConnections.js +119 -125
  302. package/lib/module/hooks/useConnections.js.map +1 -1
  303. package/lib/module/hooks/useUserConnections.js +140 -0
  304. package/lib/module/hooks/useUserConnections.js.map +1 -0
  305. package/lib/module/index.js +51 -15
  306. package/lib/module/index.js.map +1 -1
  307. package/lib/module/services/apiClient.js +298 -0
  308. package/lib/module/services/apiClient.js.map +1 -0
  309. package/lib/module/services/authService.js +905 -0
  310. package/lib/module/services/authService.js.map +1 -0
  311. package/lib/module/services/biometricPinService.js +173 -0
  312. package/lib/module/services/biometricPinService.js.map +1 -0
  313. package/lib/module/services/connectedAccountsService.js +255 -0
  314. package/lib/module/services/connectedAccountsService.js.map +1 -0
  315. package/lib/module/services/googleAuthService.js +258 -0
  316. package/lib/module/services/googleAuthService.js.map +1 -0
  317. package/lib/module/services/imageCompressionService.js +250 -0
  318. package/lib/module/services/imageCompressionService.js.map +1 -0
  319. package/lib/module/services/jwtStorageService.js +239 -0
  320. package/lib/module/services/jwtStorageService.js.map +1 -0
  321. package/lib/module/services/mobileTrainingService.js +172 -0
  322. package/lib/module/services/mobileTrainingService.js.map +1 -0
  323. package/lib/module/services/pinEncryptionService.js +75 -0
  324. package/lib/module/services/pinEncryptionService.js.map +1 -0
  325. package/lib/module/services/pinStorageUtils.js +93 -0
  326. package/lib/module/services/pinStorageUtils.js.map +1 -0
  327. package/lib/module/services/platformAuthService.js +943 -704
  328. package/lib/module/services/platformAuthService.js.map +1 -1
  329. package/lib/module/services/storageService.js +383 -0
  330. package/lib/module/services/storageService.js.map +1 -0
  331. package/lib/module/services/trainingApiHelpers.js +67 -0
  332. package/lib/module/services/trainingApiHelpers.js.map +1 -0
  333. package/lib/module/services/userConnectionsService.js +476 -0
  334. package/lib/module/services/userConnectionsService.js.map +1 -0
  335. package/lib/module/services/youtubeMigrationService.js +404 -0
  336. package/lib/module/services/youtubeMigrationService.js.map +1 -0
  337. package/lib/module/theme/index.js +244 -0
  338. package/lib/module/theme/index.js.map +1 -0
  339. package/lib/module/utils/eventUtils.js +270 -0
  340. package/lib/module/utils/eventUtils.js.map +1 -0
  341. package/lib/module/utils/haptics.js +59 -0
  342. package/lib/module/utils/haptics.js.map +1 -0
  343. package/lib/module/utils/imagePreloader.js +3 -0
  344. package/lib/module/utils/imagePreloader.js.map +1 -0
  345. package/lib/typescript/api/index.d.ts +8 -0
  346. package/lib/typescript/api/index.d.ts.map +1 -1
  347. package/lib/typescript/components/BodyText.d.ts +10 -0
  348. package/lib/typescript/components/BodyText.d.ts.map +1 -0
  349. package/lib/typescript/components/BrandMark.d.ts +11 -0
  350. package/lib/typescript/components/BrandMark.d.ts.map +1 -0
  351. package/lib/typescript/components/CodeInput.d.ts +10 -0
  352. package/lib/typescript/components/CodeInput.d.ts.map +1 -0
  353. package/lib/typescript/components/EmailInput.d.ts +8 -0
  354. package/lib/typescript/components/EmailInput.d.ts.map +1 -0
  355. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts +12 -0
  356. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts.map +1 -0
  357. package/lib/typescript/components/GoogleButton.d.ts +11 -0
  358. package/lib/typescript/components/GoogleButton.d.ts.map +1 -0
  359. package/lib/typescript/components/HeadingGroup.d.ts +11 -0
  360. package/lib/typescript/components/HeadingGroup.d.ts.map +1 -0
  361. package/lib/typescript/components/ModalHeader.d.ts +11 -0
  362. package/lib/typescript/components/ModalHeader.d.ts.map +1 -0
  363. package/lib/typescript/components/ModalSheet.d.ts +13 -0
  364. package/lib/typescript/components/ModalSheet.d.ts.map +1 -0
  365. package/lib/typescript/components/Onairos.d.ts.map +1 -1
  366. package/lib/typescript/components/OnairosButton.d.ts +29 -4
  367. package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
  368. package/lib/typescript/components/OnairosSignInButton.d.ts +14 -0
  369. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -0
  370. package/lib/typescript/components/PersonaImage.d.ts +8 -0
  371. package/lib/typescript/components/PersonaImage.d.ts.map +1 -0
  372. package/lib/typescript/components/PersonaLoadingScreen.d.ts +10 -0
  373. package/lib/typescript/components/PersonaLoadingScreen.d.ts.map +1 -0
  374. package/lib/typescript/components/PersonalizationConsentScreen.d.ts +10 -0
  375. package/lib/typescript/components/PersonalizationConsentScreen.d.ts.map +1 -0
  376. package/lib/typescript/components/PinCreationScreen.d.ts +10 -0
  377. package/lib/typescript/components/PinCreationScreen.d.ts.map +1 -0
  378. package/lib/typescript/components/PinInput.d.ts +11 -1
  379. package/lib/typescript/components/PinInput.d.ts.map +1 -1
  380. package/lib/typescript/components/PlatformConnectorsStep.d.ts +11 -0
  381. package/lib/typescript/components/PlatformConnectorsStep.d.ts.map +1 -0
  382. package/lib/typescript/components/PlatformToggle.d.ts +20 -0
  383. package/lib/typescript/components/PlatformToggle.d.ts.map +1 -0
  384. package/lib/typescript/components/PrimaryButton.d.ts +22 -0
  385. package/lib/typescript/components/PrimaryButton.d.ts.map +1 -0
  386. package/lib/typescript/components/SignInMatchAnimation.d.ts +9 -0
  387. package/lib/typescript/components/SignInMatchAnimation.d.ts.map +1 -0
  388. package/lib/typescript/components/SignInStep.d.ts +12 -0
  389. package/lib/typescript/components/SignInStep.d.ts.map +1 -0
  390. package/lib/typescript/components/TrainingModal.d.ts +12 -1
  391. package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
  392. package/lib/typescript/components/UniversalOnboarding.d.ts +14 -1
  393. package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
  394. package/lib/typescript/components/VerificationStep.d.ts +13 -0
  395. package/lib/typescript/components/VerificationStep.d.ts.map +1 -0
  396. package/lib/typescript/components/WelcomeScreen.d.ts +9 -0
  397. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -0
  398. package/lib/typescript/components/icons/Basicproficon.d.ts +5 -0
  399. package/lib/typescript/components/icons/Basicproficon.d.ts.map +1 -0
  400. package/lib/typescript/components/icons/Basicprofile.d.ts +5 -0
  401. package/lib/typescript/components/icons/Basicprofile.d.ts.map +1 -0
  402. package/lib/typescript/components/icons/Checkbox.d.ts +5 -0
  403. package/lib/typescript/components/icons/Checkbox.d.ts.map +1 -0
  404. package/lib/typescript/components/icons/Checkmark.d.ts +5 -0
  405. package/lib/typescript/components/icons/Checkmark.d.ts.map +1 -0
  406. package/lib/typescript/components/icons/Contentanalysis.d.ts +5 -0
  407. package/lib/typescript/components/icons/Contentanalysis.d.ts.map +1 -0
  408. package/lib/typescript/components/icons/Contenticon.d.ts +5 -0
  409. package/lib/typescript/components/icons/Contenticon.d.ts.map +1 -0
  410. package/lib/typescript/components/icons/EnochE.d.ts +5 -0
  411. package/lib/typescript/components/icons/EnochE.d.ts.map +1 -0
  412. package/lib/typescript/components/icons/Personalityicon.d.ts +5 -0
  413. package/lib/typescript/components/icons/Personalityicon.d.ts.map +1 -0
  414. package/lib/typescript/components/icons/Personalityprofile.d.ts +5 -0
  415. package/lib/typescript/components/icons/Personalityprofile.d.ts.map +1 -0
  416. package/lib/typescript/components/icons/Personalitytraits.d.ts +5 -0
  417. package/lib/typescript/components/icons/Personalitytraits.d.ts.map +1 -0
  418. package/lib/typescript/components/icons/Userpreferences.d.ts +5 -0
  419. package/lib/typescript/components/icons/Userpreferences.d.ts.map +1 -0
  420. package/lib/typescript/components/icons/index.d.ts +12 -0
  421. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  422. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
  423. package/lib/typescript/config/api.d.ts +24 -0
  424. package/lib/typescript/config/api.d.ts.map +1 -0
  425. package/lib/typescript/context/AuthContext.d.ts +34 -0
  426. package/lib/typescript/context/AuthContext.d.ts.map +1 -0
  427. package/lib/typescript/hooks/useConnectedAccounts.d.ts +11 -0
  428. package/lib/typescript/hooks/useConnectedAccounts.d.ts.map +1 -0
  429. package/lib/typescript/hooks/useConnections.d.ts +10 -5
  430. package/lib/typescript/hooks/useConnections.d.ts.map +1 -1
  431. package/lib/typescript/hooks/useUserConnections.d.ts +12 -0
  432. package/lib/typescript/hooks/useUserConnections.d.ts.map +1 -0
  433. package/lib/typescript/index.d.ts +24 -6
  434. package/lib/typescript/index.d.ts.map +1 -1
  435. package/lib/typescript/services/apiClient.d.ts +91 -0
  436. package/lib/typescript/services/apiClient.d.ts.map +1 -0
  437. package/lib/typescript/services/authService.d.ts +216 -0
  438. package/lib/typescript/services/authService.d.ts.map +1 -0
  439. package/lib/typescript/services/biometricPinService.d.ts +29 -0
  440. package/lib/typescript/services/biometricPinService.d.ts.map +1 -0
  441. package/lib/typescript/services/connectedAccountsService.d.ts +56 -0
  442. package/lib/typescript/services/connectedAccountsService.d.ts.map +1 -0
  443. package/lib/typescript/services/googleAuthService.d.ts +63 -0
  444. package/lib/typescript/services/googleAuthService.d.ts.map +1 -0
  445. package/lib/typescript/services/imageCompressionService.d.ts +37 -0
  446. package/lib/typescript/services/imageCompressionService.d.ts.map +1 -0
  447. package/lib/typescript/services/jwtStorageService.d.ts +86 -0
  448. package/lib/typescript/services/jwtStorageService.d.ts.map +1 -0
  449. package/lib/typescript/services/mobileTrainingService.d.ts +45 -0
  450. package/lib/typescript/services/mobileTrainingService.d.ts.map +1 -0
  451. package/lib/typescript/services/pinEncryptionService.d.ts +17 -0
  452. package/lib/typescript/services/pinEncryptionService.d.ts.map +1 -0
  453. package/lib/typescript/services/pinStorageUtils.d.ts +25 -0
  454. package/lib/typescript/services/pinStorageUtils.d.ts.map +1 -0
  455. package/lib/typescript/services/platformAuthService.d.ts +34 -109
  456. package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
  457. package/lib/typescript/services/storageService.d.ts +128 -0
  458. package/lib/typescript/services/storageService.d.ts.map +1 -0
  459. package/lib/typescript/services/trainingApiHelpers.d.ts +38 -0
  460. package/lib/typescript/services/trainingApiHelpers.d.ts.map +1 -0
  461. package/lib/typescript/services/userConnectionsService.d.ts +90 -0
  462. package/lib/typescript/services/userConnectionsService.d.ts.map +1 -0
  463. package/lib/typescript/services/youtubeMigrationService.d.ts +12 -0
  464. package/lib/typescript/services/youtubeMigrationService.d.ts.map +1 -0
  465. package/lib/typescript/theme/index.d.ts +416 -0
  466. package/lib/typescript/theme/index.d.ts.map +1 -0
  467. package/lib/typescript/types/index.d.ts +39 -0
  468. package/lib/typescript/types/index.d.ts.map +1 -1
  469. package/lib/typescript/utils/eventUtils.d.ts +108 -0
  470. package/lib/typescript/utils/eventUtils.d.ts.map +1 -0
  471. package/lib/typescript/utils/haptics.d.ts +11 -0
  472. package/lib/typescript/utils/haptics.d.ts.map +1 -0
  473. package/lib/typescript/utils/imagePreloader.d.ts +2 -0
  474. package/lib/typescript/utils/imagePreloader.d.ts.map +1 -0
  475. package/package.json +158 -145
  476. package/src/api/index.ts +41 -0
  477. package/src/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  478. package/src/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  479. package/src/assets/icons/Facebookicon.png +0 -0
  480. package/src/assets/icons/Gmail.png +0 -0
  481. package/src/assets/icons/Linkedinicon.png +0 -0
  482. package/src/assets/icons/Redditicon.png +0 -0
  483. package/src/assets/icons/YouTubeicon2.png +0 -0
  484. package/src/assets/icons/YouTubeicon3.png +0 -0
  485. package/src/assets/icons/farcaster.png +0 -0
  486. package/src/assets/icons/instagram.png +0 -0
  487. package/src/assets/icons/pinterest.png +0 -0
  488. package/src/assets/icons/swerv_logo.png +0 -0
  489. package/src/assets/icons/twitter.jpg +0 -0
  490. package/src/assets/images/Checkbox.svg +3 -0
  491. package/src/assets/images/EnochE.svg +19 -0
  492. package/src/assets/images/Enochicon1.png +0 -0
  493. package/src/assets/images/Face_ID_logo.png +0 -0
  494. package/src/assets/images/Facebookicon.png +0 -0
  495. package/src/assets/images/Gmail.png +0 -0
  496. package/src/assets/images/Googlelogo.png +0 -0
  497. package/src/assets/images/Linkedinicon.png +0 -0
  498. package/src/assets/images/Onairoslogo.png +0 -0
  499. package/src/assets/images/Personalityprofile.svg +3 -0
  500. package/src/assets/images/Personalitytraits.svg +3 -0
  501. package/src/assets/images/Redditicon.png +0 -0
  502. package/src/assets/images/Userpreferences.svg +3 -0
  503. package/src/assets/images/YouTubeicon3.png +0 -0
  504. package/src/assets/images/arrow.svg +20 -0
  505. package/src/assets/images/basicproficon.svg +43 -0
  506. package/src/assets/images/basicprofile.svg +3 -0
  507. package/src/assets/images/checkmark.svg +4 -0
  508. package/src/assets/images/contentanalysis.svg +3 -0
  509. package/src/assets/images/contenticon.svg +23 -0
  510. package/src/assets/images/persona1.png +0 -0
  511. package/src/assets/images/persona2.png +0 -0
  512. package/src/assets/images/persona3.png +0 -0
  513. package/src/assets/images/persona4.png +0 -0
  514. package/src/assets/images/persona5.png +0 -0
  515. package/src/assets/images/personalityicon.svg +18 -0
  516. package/src/assets/images/x-close.svg +3 -0
  517. package/src/components/BodyText.tsx +33 -0
  518. package/src/components/BrandMark.tsx +62 -0
  519. package/src/components/CodeInput.tsx +32 -0
  520. package/src/components/EmailInput.tsx +31 -0
  521. package/src/components/ExistingUserDataConfirmation.tsx +507 -0
  522. package/src/components/GoogleButton.tsx +55 -0
  523. package/src/components/HeadingGroup.tsx +49 -0
  524. package/src/components/ModalHeader.tsx +125 -0
  525. package/src/components/ModalSheet.tsx +57 -0
  526. package/src/components/Onairos.tsx +422 -424
  527. package/src/components/OnairosButton.tsx +339 -359
  528. package/src/components/OnairosSignInButton.tsx +166 -0
  529. package/src/components/Overlay.tsx +506 -506
  530. package/src/components/PersonaImage.tsx +79 -0
  531. package/src/components/PersonaLoadingScreen.tsx +201 -0
  532. package/src/components/PersonalizationConsentScreen.tsx +410 -0
  533. package/src/components/PinCreationScreen.tsx +492 -0
  534. package/src/components/PinInput.tsx +555 -343
  535. package/src/components/PlatformConnectorsStep.tsx +892 -0
  536. package/src/components/PlatformToggle.tsx +226 -0
  537. package/src/components/PrimaryButton.tsx +214 -0
  538. package/src/components/SignInMatchAnimation.tsx +225 -0
  539. package/src/components/SignInStep.tsx +217 -0
  540. package/src/components/TrainingModal.tsx +1047 -737
  541. package/src/components/UniversalOnboarding.tsx +2888 -1820
  542. package/src/components/VerificationStep.tsx +198 -0
  543. package/src/components/WelcomeScreen.tsx +473 -0
  544. package/src/components/icons/Basicproficon.tsx +30 -0
  545. package/src/components/icons/Basicprofile.tsx +17 -0
  546. package/src/components/icons/Checkbox.tsx +17 -0
  547. package/src/components/icons/Checkmark.tsx +24 -0
  548. package/src/components/icons/Contentanalysis.tsx +17 -0
  549. package/src/components/icons/Contenticon.tsx +30 -0
  550. package/src/components/icons/EnochE.tsx +39 -0
  551. package/src/components/icons/Personalityicon.tsx +22 -0
  552. package/src/components/icons/Personalityprofile.tsx +17 -0
  553. package/src/components/icons/Personalitytraits.tsx +17 -0
  554. package/src/components/icons/Userpreferences.tsx +17 -0
  555. package/src/components/icons/index.ts +12 -0
  556. package/src/components/onboarding/OAuthWebView.tsx +232 -838
  557. package/src/config/api.ts +25 -0
  558. package/src/context/AuthContext.tsx +393 -0
  559. package/src/hooks/useConnectedAccounts.ts +139 -0
  560. package/src/hooks/useConnections.ts +129 -131
  561. package/src/hooks/useUserConnections.ts +166 -0
  562. package/src/index.ts +94 -49
  563. package/src/services/apiClient.ts +337 -0
  564. package/src/services/authService.ts +1008 -0
  565. package/src/services/biometricPinService.ts +193 -0
  566. package/src/services/connectedAccountsService.ts +290 -0
  567. package/src/services/googleAuthService.ts +279 -0
  568. package/src/services/imageCompressionService.ts +303 -0
  569. package/src/services/jwtStorageService.ts +257 -0
  570. package/src/services/mobileTrainingService.ts +204 -0
  571. package/src/services/pinEncryptionService.ts +76 -0
  572. package/src/services/pinStorageUtils.ts +97 -0
  573. package/src/services/platformAuthService.ts +1346 -1113
  574. package/src/services/storageService.ts +452 -0
  575. package/src/services/trainingApiHelpers.ts +67 -0
  576. package/src/services/userConnectionsService.ts +557 -0
  577. package/src/services/youtubeMigrationService.ts +454 -0
  578. package/src/theme/index.ts +239 -0
  579. package/src/types/index.ts +265 -238
  580. package/src/utils/eventUtils.ts +303 -0
  581. package/src/utils/haptics.ts +59 -0
  582. package/src/utils/imagePreloader.ts +2 -0
  583. package/README.md +0 -375
  584. package/lib/commonjs/assets/images/email.png +0 -0
  585. package/lib/commonjs/assets/images/linkedin.png +0 -0
  586. package/lib/commonjs/assets/images/reddit.png +0 -0
  587. package/lib/commonjs/assets/images/youtube.png +0 -0
  588. package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
  589. package/lib/module/assets/images/email.png +0 -0
  590. package/lib/module/assets/images/linkedin.png +0 -0
  591. package/lib/module/assets/images/reddit.png +0 -0
  592. package/lib/module/assets/images/youtube.png +0 -0
  593. package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
  594. package/src/assets/images/email.png +0 -0
  595. package/src/assets/images/linkedin.png +0 -0
  596. package/src/assets/images/reddit.png +0 -0
  597. package/src/assets/images/youtube.png +0 -0
  598. package/src/components/UniversalOnboarding.tsx.new +0 -455
@@ -1,163 +1,161 @@
1
1
  import { useState, useCallback } from 'react';
2
- import { Platform } from 'react-native';
3
- import { STORAGE_KEYS } from '../constants';
4
- import type { ConnectionStatus } from '../types';
2
+ import { initiateOAuth, initiateNativeAuth, exchangeCodeForToken } from '../services/platformAuthService';
3
+ import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import { getOnairosUsername } from '../services/authService';
5
5
 
6
- // Create a mock storage for environments without Keychain access (like Expo Go)
7
- const mockConnectionStorage: Record<string, ConnectionStatus> = {};
8
-
9
- // Try to import Keychain, but provide fallbacks if not available
10
- let Keychain: any = null;
11
- try {
12
- // This import might fail in Expo Go or environments without native modules
13
- Keychain = require('react-native-keychain');
14
- } catch (error) {
15
- console.warn('react-native-keychain module not available in useConnections, using mock storage');
6
+ export interface ConnectionStatus {
7
+ [key: string]: {
8
+ userName: string;
9
+ connected: boolean;
10
+ };
16
11
  }
17
12
 
18
- // Check if Keychain is properly initialized and available
19
- const isKeychainAvailable = () => {
20
- try {
21
- return Keychain && typeof Keychain.getGenericPassword === 'function';
22
- } catch (e) {
23
- return false;
24
- }
25
- };
26
-
27
13
  export const useConnections = () => {
14
+ const [connections, setConnections] = useState<ConnectionStatus>({});
28
15
  const [isConnecting, setIsConnecting] = useState(false);
29
16
 
30
- const getConnectionStatus = useCallback(async (): Promise<ConnectionStatus> => {
17
+ /**
18
+ * Connect a platform using OAuth or native SDK
19
+ */
20
+ const connectPlatform = useCallback(async (platform: string, username: string): Promise<boolean> => {
31
21
  try {
32
- if (isKeychainAvailable()) {
22
+ setIsConnecting(true);
23
+
24
+ // Determine if we should use native SDK or OAuth
25
+ const useNativeSDK = platform === 'youtube' || platform === 'instagram';
26
+
27
+ let success = false;
28
+
29
+ if (useNativeSDK) {
30
+ // Use native SDK
31
+ success = await initiateNativeAuth(platform, username);
32
+ } else {
33
+ // For demo purposes, we'll simulate a successful connection
34
+ await new Promise(resolve => setTimeout(() => resolve(undefined), 1000));
35
+ success = true;
36
+ }
37
+
38
+ if (success) {
39
+ // Update connections state locally
40
+ setConnections(prev => ({
41
+ ...prev,
42
+ [platform]: { userName: username, connected: true }
43
+ }));
44
+
45
+ // Update user account info via API
33
46
  try {
34
- const stored = await Keychain.getGenericPassword({
35
- service: STORAGE_KEYS.connections
47
+ const token = await AsyncStorage.getItem('auth_token');
48
+ // Get the stored Onairos username for API calls
49
+ const storedUsername = await getOnairosUsername();
50
+ const apiUsername = storedUsername || username;
51
+
52
+ console.log(`🔗 Using username for ${platform} API call:`, {
53
+ providedUsername: username,
54
+ storedUsername,
55
+ finalApiUsername: apiUsername
36
56
  });
37
- if (stored && stored.password) {
38
- const parsed = JSON.parse(stored.password);
39
- // Validate the parsed data structure
40
- if (parsed && typeof parsed === 'object') {
41
- return parsed;
42
- }
43
- }
44
- } catch (keychainError) {
45
- console.warn('Keychain access failed, using fallback:', keychainError);
46
- // Clear corrupted data
47
- try {
48
- await Keychain.resetGenericPassword({ service: STORAGE_KEYS.connections });
49
- } catch (resetError) {
50
- console.warn('Failed to reset keychain:', resetError);
57
+
58
+ if (token) {
59
+ const response = await fetch('https://api2.onairos.uk/enoch/users/update', {
60
+ method: 'POST',
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ 'Authorization': token
64
+ },
65
+ body: JSON.stringify({
66
+ UpdateType: 'connection',
67
+ updateType: 'Add',
68
+ connection: platform,
69
+ username: apiUsername // Use stored Onairos username
70
+ })
71
+ });
72
+
73
+ console.log(`Platform connection update response for ${platform}:`, response.status);
51
74
  }
75
+ } catch (apiError) {
76
+ console.warn(`Error updating user connections for ${platform}, but continuing:`, apiError);
77
+ // Continue even if the API call fails
52
78
  }
79
+
80
+ return true;
53
81
  }
54
82
 
55
- // Use in-memory mock storage if Keychain is not available or failed
56
- const mockData = mockConnectionStorage[STORAGE_KEYS.connections] || {};
57
- console.log('Using mock connection storage:', mockData);
58
- return mockData;
59
- } catch (error) {
60
- console.error('Error getting connection status:', error);
61
-
62
- // Always return empty object as safe fallback
63
- console.log('Returning empty connections due to error');
64
- return {};
65
- }
66
- }, []);
67
-
68
- const saveConnectionStatus = useCallback(async (status: ConnectionStatus) => {
69
- try {
70
- if (isKeychainAvailable()) {
71
- await Keychain.setGenericPassword(
72
- 'connections',
73
- JSON.stringify(status),
74
- { service: STORAGE_KEYS.connections }
75
- );
76
- } else {
77
- // Use in-memory mock storage if Keychain is not available
78
- mockConnectionStorage[STORAGE_KEYS.connections] = status;
79
- }
83
+ return false;
80
84
  } catch (error) {
81
- console.error('Error saving connection status:', error);
82
- // Save to mock storage as fallback
83
- mockConnectionStorage[STORAGE_KEYS.connections] = status;
85
+ console.error(`Error connecting platform ${platform}:`, error);
86
+ return false;
87
+ } finally {
88
+ setIsConnecting(false);
84
89
  }
85
90
  }, []);
86
91
 
87
- const connectPlatform = useCallback(async (platform: string) => {
88
- setIsConnecting(true);
92
+ /**
93
+ * Disconnect a platform
94
+ */
95
+ const disconnectPlatform = useCallback(async (platform: string, username?: string): Promise<boolean> => {
89
96
  try {
90
- console.log(`[Mock] Connecting to ${platform}`);
91
-
92
- // Simulate connection delay
93
- await new Promise<void>((resolve) => {
94
- setTimeout(() => resolve(), 1000);
97
+ // Update local state
98
+ setConnections(prev => {
99
+ const newConnections = { ...prev };
100
+ delete newConnections[platform];
101
+ return newConnections;
95
102
  });
96
103
 
97
- const status = await getConnectionStatus();
98
- status[platform] = {
99
- userName: `Mock User (${platform})`,
100
- connected: true
101
- };
102
- await saveConnectionStatus(status);
103
-
104
- console.log(`[Mock] Successfully connected to ${platform}`);
105
- } catch (error) {
106
- console.error(`Error connecting to ${platform}:`, error);
107
- // In development, provide mock data even on error
108
- if (__DEV__) {
109
- const status = {
110
- [platform]: {
111
- userName: `Fallback User (${platform})`,
112
- connected: true
113
- }
114
- };
115
- await saveConnectionStatus(status);
116
- } else {
117
- throw error;
118
- }
119
- } finally {
120
- setIsConnecting(false);
121
- }
122
- }, [getConnectionStatus, saveConnectionStatus]);
123
-
124
- const disconnectPlatform = useCallback(async (platform: string) => {
125
- try {
126
- const status = await getConnectionStatus();
127
- if (status && platform in status) {
128
- delete status[platform];
129
- await saveConnectionStatus(status);
130
- }
131
- } catch (error) {
132
- console.error(`Error disconnecting ${platform}:`, error);
133
- // Don't throw in development mode
134
- if (!__DEV__) {
135
- throw error;
104
+ // Update user account info via API
105
+ try {
106
+ const token = await AsyncStorage.getItem('auth_token');
107
+ // Get the stored Onairos username for API calls
108
+ const storedUsername = await getOnairosUsername();
109
+ const apiUsername = storedUsername || username || 'user';
110
+
111
+ console.log(`🔗 Using username for ${platform} disconnect API call:`, {
112
+ providedUsername: username,
113
+ storedUsername,
114
+ finalApiUsername: apiUsername
115
+ });
116
+
117
+ if (token) {
118
+ const response = await fetch('https://api2.onairos.uk/enoch/users/update', {
119
+ method: 'POST',
120
+ headers: {
121
+ 'Content-Type': 'application/json',
122
+ 'Authorization': token
123
+ },
124
+ body: JSON.stringify({
125
+ UpdateType: 'connection',
126
+ updateType: 'Remove',
127
+ connection: platform,
128
+ username: apiUsername // Use stored Onairos username
129
+ })
130
+ });
131
+
132
+ console.log(`Platform disconnection update response for ${platform}:`, response.status);
133
+ }
134
+ } catch (apiError) {
135
+ console.warn(`Error updating user connections for ${platform}, but continuing:`, apiError);
136
+ // Continue even if the API call fails
136
137
  }
137
- }
138
- }, [getConnectionStatus, saveConnectionStatus]);
139
-
140
- const handleOAuthCallback = useCallback(async (platform: string, data: any) => {
141
- try {
142
- console.log(`[Mock] Handling callback for ${platform}`);
143
- const status = await getConnectionStatus();
144
- status[platform] = {
145
- userName: data.userName || `Mock User (${platform})`,
146
- connected: true
147
- };
148
- await saveConnectionStatus(status);
138
+
149
139
  return true;
150
140
  } catch (error) {
151
- console.error('Error handling callback:', error);
141
+ console.error(`Error disconnecting platform ${platform}:`, error);
152
142
  return false;
153
143
  }
154
- }, [getConnectionStatus, saveConnectionStatus]);
144
+ }, []);
145
+
146
+ /**
147
+ * Get current connection status
148
+ */
149
+ const getConnectionStatus = useCallback(async (): Promise<ConnectionStatus> => {
150
+ // In a real app, you might fetch this from storage or API
151
+ return connections;
152
+ }, [connections]);
155
153
 
156
154
  return {
157
- isConnecting,
155
+ connections,
158
156
  connectPlatform,
159
157
  disconnectPlatform,
160
158
  getConnectionStatus,
161
- handleOAuthCallback,
159
+ isConnecting
162
160
  };
163
- };
161
+ };
@@ -0,0 +1,166 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import {
3
+ getUserConnections,
4
+ getUserConnectionsByUsername,
5
+ getUserConnectionsByUserId,
6
+ uploadProfilePicture,
7
+ Connection
8
+ } from '../services/userConnectionsService';
9
+ import { getAuthToken } from '../services/authService';
10
+ import AsyncStorage from '@react-native-async-storage/async-storage';
11
+
12
+ export interface UseUserConnectionsResult {
13
+ connections: Connection[];
14
+ isLoading: boolean;
15
+ error: string | null;
16
+ refreshConnections: () => Promise<void>;
17
+ getConnectionsByUsername: (username: string) => Promise<Connection[]>;
18
+ getConnectionsByUserId: (userId: string) => Promise<Connection[]>;
19
+ uploadUserProfilePicture: (imageData: string, fileType?: string) => Promise<boolean>;
20
+ }
21
+
22
+ export const useUserConnections = (): UseUserConnectionsResult => {
23
+ const [connections, setConnections] = useState<Connection[]>([]);
24
+ const [isLoading, setIsLoading] = useState<boolean>(true);
25
+ const [error, setError] = useState<string | null>(null);
26
+
27
+ /**
28
+ * Load connections from API with authentication validation
29
+ */
30
+ const loadConnections = useCallback(async () => {
31
+ try {
32
+ setIsLoading(true);
33
+ setError(null);
34
+
35
+ // ✅ CRITICAL: Validate authentication before making API calls
36
+ const authToken = await getAuthToken();
37
+
38
+ // Check for demo mode (reviewer bypass)
39
+ const reviewerToken = await AsyncStorage.getItem('onairos_jwt_token');
40
+ const isDemoMode = reviewerToken === 'reviewer-bypass-token';
41
+
42
+ if (!authToken && !isDemoMode) {
43
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for connections refresh');
44
+ console.warn('⚠️ [CONNECTIONS HOOK] Skipping API call to prevent unauthenticated requests');
45
+ setConnections([]);
46
+ setError('Authentication required for connections');
47
+ return;
48
+ }
49
+
50
+ if (isDemoMode) {
51
+ console.log('🎯 [DEMO MODE] Reviewer bypass detected - skipping API call for demo');
52
+ // For demo mode, return empty connections - ResultsScreen will use fallback data
53
+ setConnections([]);
54
+ setError(null);
55
+ return;
56
+ }
57
+
58
+ // At this point, authToken must be valid (not null) because we've checked both cases above
59
+ if (!authToken) {
60
+ console.error('❌ [CONNECTIONS HOOK] Unexpected null token after validation');
61
+ setConnections([]);
62
+ setError('Authentication error');
63
+ return;
64
+ }
65
+
66
+ console.log('🔄 Loading user connections with authentication...');
67
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
68
+
69
+ const fetchedConnections = await getUserConnections();
70
+
71
+ setConnections(fetchedConnections);
72
+ console.log('✅ Connections loaded:', fetchedConnections.length);
73
+
74
+ } catch (err) {
75
+ const errorMessage = err instanceof Error ? err.message : 'Failed to load connections';
76
+ console.error('❌ Error loading connections:', errorMessage);
77
+ setError(errorMessage);
78
+
79
+ // Set empty array on error - screens will handle their own fallbacks
80
+ setConnections([]);
81
+
82
+ } finally {
83
+ setIsLoading(false);
84
+ }
85
+ }, []);
86
+
87
+ /**
88
+ * Refresh connections with authentication validation
89
+ */
90
+ const refreshConnections = useCallback(async () => {
91
+ console.log('🔄 [CONNECTIONS HOOK] Refreshing connections...');
92
+ await loadConnections();
93
+ console.log('✅ [CONNECTIONS HOOK] Connections refresh completed');
94
+ }, [loadConnections]);
95
+
96
+ /**
97
+ * Get connections by username with authentication validation
98
+ */
99
+ const getConnectionsByUsername = useCallback(async (username: string): Promise<Connection[]> => {
100
+ try {
101
+ // ✅ Validate authentication before making API calls
102
+ const authToken = await getAuthToken();
103
+ if (!authToken) {
104
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for username connections');
105
+ return [];
106
+ }
107
+
108
+ console.log('🔍 Fetching connections by username:', username);
109
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
110
+ return await getUserConnectionsByUsername(username);
111
+ } catch (error) {
112
+ console.error('❌ Error fetching connections by username:', error);
113
+ return [];
114
+ }
115
+ }, []);
116
+
117
+ /**
118
+ * Get connections by user ID with authentication validation
119
+ */
120
+ const getConnectionsByUserId = useCallback(async (userId: string): Promise<Connection[]> => {
121
+ try {
122
+ // ✅ Validate authentication before making API calls
123
+ const authToken = await getAuthToken();
124
+ if (!authToken) {
125
+ console.warn('⚠️ [CONNECTIONS HOOK] No authentication token available for user ID connections');
126
+ return [];
127
+ }
128
+
129
+ console.log('🔍 Fetching connections by userId:', userId);
130
+ console.log('🔑 [CONNECTIONS HOOK] Using auth token:', `${authToken.substring(0, 20)}...`);
131
+ return await getUserConnectionsByUserId(userId);
132
+ } catch (error) {
133
+ console.error('❌ Error fetching connections by userId:', error);
134
+ return [];
135
+ }
136
+ }, []);
137
+
138
+ /**
139
+ * Upload profile picture
140
+ */
141
+ const uploadUserProfilePicture = useCallback(async (imageData: string, fileType: string = 'jpg'): Promise<boolean> => {
142
+ try {
143
+ console.log('📷 Uploading profile picture for user:');
144
+ const result = await uploadProfilePicture(imageData, fileType);
145
+ return result.success;
146
+ } catch (error) {
147
+ console.error('❌ Error uploading profile picture:', error);
148
+ return false;
149
+ }
150
+ }, []);
151
+
152
+ // Load connections on mount
153
+ useEffect(() => {
154
+ loadConnections();
155
+ }, [loadConnections]);
156
+
157
+ return {
158
+ connections,
159
+ isLoading,
160
+ error,
161
+ refreshConnections,
162
+ getConnectionsByUsername,
163
+ getConnectionsByUserId,
164
+ uploadUserProfilePicture
165
+ };
166
+ };
package/src/index.ts CHANGED
@@ -1,50 +1,95 @@
1
- /**
2
- * Onairos React Native SDK
3
- * A React Native implementation for Onairos personalized data integration
4
- *
5
- * PUBLIC API - Only expose what developers need
6
- */
7
-
8
- // Essential Types Only
9
- export type {
10
- OnairosButtonProps,
11
- OnairosProps,
12
- DataTier,
13
- OnairosConfig,
14
- TestModeOptions,
15
- } from './types';
16
-
17
- // Core Components
18
- export { OnairosButton } from './components/OnairosButton';
19
- export { Onairos } from './components/Onairos';
20
-
21
- // SDK Initialization
22
- export {
23
- initializeApiKey,
24
- ADMIN_API_KEY,
25
- extractUsernameFromJWT,
26
- extractUserDataFromJWT,
27
- decodeJWTPayload,
28
- } from './services/apiKeyService';
29
-
30
- // Authentication & PIN Management
31
- export {
32
- // storePinAfterBiometric, // TODO: Commented out temporarily - biometric functionality disabled
33
- getStoredJwtToken,
34
- clearStoredTokens,
35
- requestEmailVerification,
36
- verifyEmailCode,
37
- checkEmailVerificationStatus,
38
- } from './services/platformAuthService';
39
-
40
- // Programmatic Function (for custom buttons)
41
- export { executeOnairosFlow } from './utils/programmaticFlow';
42
-
43
- // Default export for convenience
44
- import { OnairosButton } from './components/OnairosButton';
45
- import { Onairos } from './components/Onairos';
46
-
47
- export default {
48
- OnairosButton,
49
- Onairos,
1
+ /**
2
+ * Onairos React Native SDK v4.0.0
3
+ * A React Native implementation for Onairos personalized data integration
4
+ *
5
+ * PUBLIC API - Complete redesigned UI and enhanced functionality
6
+ */
7
+
8
+ // Essential Types
9
+ export type {
10
+ OnairosButtonProps,
11
+ OnairosProps,
12
+ DataTier,
13
+ OnairosConfig,
14
+ TestModeOptions,
15
+ UniversalOnboardingProps,
16
+ ConnectionStatus,
17
+ PlatformConfig,
18
+ } from './types';
19
+
20
+ // Core Components - Redesigned UI
21
+ export { OnairosButton } from './components/OnairosButton';
22
+ export { Onairos } from './components/Onairos';
23
+ export { UniversalOnboarding } from './components/UniversalOnboarding';
24
+
25
+ // New UI Components - Complete Welcome Flow
26
+ export { default as WelcomeScreen } from './components/WelcomeScreen';
27
+ export { PrimaryButton } from './components/PrimaryButton';
28
+ export { ModalSheet } from './components/ModalSheet';
29
+ export { ModalHeader } from './components/ModalHeader';
30
+ export { BrandMark } from './components/BrandMark';
31
+ export { HeadingGroup } from './components/HeadingGroup';
32
+ export { BodyText } from './components/BodyText';
33
+ export { SignInStep } from './components/SignInStep';
34
+ export { VerificationStep } from './components/VerificationStep';
35
+ export { default as PlatformConnectorsStep } from './components/PlatformConnectorsStep';
36
+ export { PersonalizationConsentScreen } from './components/PersonalizationConsentScreen';
37
+ export { PinCreationScreen } from './components/PinCreationScreen';
38
+
39
+ // Enhanced Hooks - Temporarily commented out for build
40
+ // export { useConnections } from './hooks/useConnections';
41
+ // export { useUserConnections } from './hooks/useUserConnections';
42
+ // export { useConnectedAccounts } from './hooks/useConnectedAccounts';
43
+ // export { useAuth } from './context/AuthContext';
44
+
45
+ // Temporarily commented out components with missing dependencies
46
+ export { default as PersonaImage } from './components/PersonaImage';
47
+ // export { default as PlatformToggle } from './components/PlatformToggle';
48
+ // export { default as PersonaLoadingScreen } from './components/PersonaLoadingScreen';
49
+
50
+ // SDK Initialization & Services
51
+ export {
52
+ initializeApiKey,
53
+ ADMIN_API_KEY,
54
+ extractUsernameFromJWT,
55
+ extractUserDataFromJWT,
56
+ decodeJWTPayload,
57
+ } from './services/apiKeyService';
58
+
59
+ // Authentication & Enhanced Services - Temporarily limited for build
60
+ export {
61
+ getOnairosUsername,
62
+ } from './services/authService';
63
+
64
+ export {
65
+ initiateOAuth,
66
+ initiateNativeAuth,
67
+ hasNativeSDK,
68
+ isOAuthCallback,
69
+ } from './services/platformAuthService';
70
+
71
+ export {
72
+ updateGoogleClientIds,
73
+ } from './services/googleAuthService';
74
+
75
+ // Enhanced API Client
76
+ export { ApiClient } from './services/apiClient';
77
+
78
+ // Programmatic Function (for custom buttons) - Temporarily commented out
79
+ // export { executeOnairosFlow } from './utils/programmaticFlow';
80
+
81
+ // Context Provider - Temporarily commented out for build
82
+ // export { AuthProvider } from './context/AuthContext';
83
+
84
+ // Default export for convenience
85
+ import { OnairosButton } from './components/OnairosButton';
86
+ import { Onairos } from './components/Onairos';
87
+ import { UniversalOnboarding } from './components/UniversalOnboarding';
88
+ import WelcomeScreen from './components/WelcomeScreen';
89
+
90
+ export default {
91
+ OnairosButton,
92
+ Onairos,
93
+ UniversalOnboarding,
94
+ WelcomeScreen,
50
95
  };