@onairos/react-native 3.1.12 → 3.1.14

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 (604) hide show
  1. package/README.md +403 -374
  2. package/lib/commonjs/api/index.js +75 -1
  3. package/lib/commonjs/api/index.js.map +1 -1
  4. package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  5. package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  6. package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
  7. package/lib/commonjs/assets/icons/Gmail.png +0 -0
  8. package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
  9. package/lib/commonjs/assets/icons/Redditicon.png +0 -0
  10. package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
  11. package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
  12. package/lib/commonjs/assets/icons/farcaster.png +0 -0
  13. package/lib/commonjs/assets/icons/instagram.png +0 -0
  14. package/lib/commonjs/assets/icons/pinterest.png +0 -0
  15. package/lib/commonjs/assets/icons/swerv_logo.png +0 -0
  16. package/lib/commonjs/assets/icons/twitter.jpg +0 -0
  17. package/lib/commonjs/assets/images/Checkbox.svg +3 -0
  18. package/lib/commonjs/assets/images/EnochE.svg +19 -0
  19. package/lib/commonjs/assets/images/Enochicon1.png +0 -0
  20. package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
  21. package/lib/commonjs/assets/images/Facebookicon.png +0 -0
  22. package/lib/commonjs/assets/images/Gmail.png +0 -0
  23. package/lib/commonjs/assets/images/Googlelogo.png +0 -0
  24. package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
  25. package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
  26. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
  27. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
  28. package/lib/commonjs/assets/images/Redditicon.png +0 -0
  29. package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
  30. package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
  31. package/lib/commonjs/assets/images/arrow.svg +20 -0
  32. package/lib/commonjs/assets/images/basicproficon.svg +43 -0
  33. package/lib/commonjs/assets/images/basicprofile.svg +3 -0
  34. package/lib/commonjs/assets/images/checkmark.svg +4 -0
  35. package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
  36. package/lib/commonjs/assets/images/contenticon.svg +23 -0
  37. package/lib/commonjs/assets/images/persona1.png +0 -0
  38. package/lib/commonjs/assets/images/persona2.png +0 -0
  39. package/lib/commonjs/assets/images/persona3.png +0 -0
  40. package/lib/commonjs/assets/images/persona4.png +0 -0
  41. package/lib/commonjs/assets/images/persona5.png +0 -0
  42. package/lib/commonjs/assets/images/personalityicon.svg +18 -0
  43. package/lib/commonjs/assets/images/x-close.svg +3 -0
  44. package/lib/commonjs/components/BodyText.js +27 -0
  45. package/lib/commonjs/components/BodyText.js.map +1 -0
  46. package/lib/commonjs/components/BrandMark.js +44 -0
  47. package/lib/commonjs/components/BrandMark.js.map +1 -0
  48. package/lib/commonjs/components/CodeInput.js +30 -0
  49. package/lib/commonjs/components/CodeInput.js.map +1 -0
  50. package/lib/commonjs/components/EmailInput.js +30 -0
  51. package/lib/commonjs/components/EmailInput.js.map +1 -0
  52. package/lib/commonjs/components/ExistingUserDataConfirmation.js +474 -0
  53. package/lib/commonjs/components/ExistingUserDataConfirmation.js.map +1 -0
  54. package/lib/commonjs/components/GoogleButton.js +55 -0
  55. package/lib/commonjs/components/GoogleButton.js.map +1 -0
  56. package/lib/commonjs/components/HeadingGroup.js +43 -0
  57. package/lib/commonjs/components/HeadingGroup.js.map +1 -0
  58. package/lib/commonjs/components/ModalHeader.js +99 -0
  59. package/lib/commonjs/components/ModalHeader.js.map +1 -0
  60. package/lib/commonjs/components/ModalSheet.js +41 -0
  61. package/lib/commonjs/components/ModalSheet.js.map +1 -0
  62. package/lib/commonjs/components/Onairos.js +1 -3
  63. package/lib/commonjs/components/Onairos.js.map +1 -1
  64. package/lib/commonjs/components/OnairosButton.js +171 -190
  65. package/lib/commonjs/components/OnairosButton.js.map +1 -1
  66. package/lib/commonjs/components/OnairosSignInButton.js +169 -0
  67. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -0
  68. package/lib/commonjs/components/Overlay.js +5 -5
  69. package/lib/commonjs/components/Overlay.js.map +1 -1
  70. package/lib/commonjs/components/PersonaImage.js +60 -0
  71. package/lib/commonjs/components/PersonaImage.js.map +1 -0
  72. package/lib/commonjs/components/PersonaLoadingScreen.js +156 -0
  73. package/lib/commonjs/components/PersonaLoadingScreen.js.map +1 -0
  74. package/lib/commonjs/components/PersonalizationConsentScreen.js +316 -0
  75. package/lib/commonjs/components/PersonalizationConsentScreen.js.map +1 -0
  76. package/lib/commonjs/components/PinCreationScreen.js +393 -0
  77. package/lib/commonjs/components/PinCreationScreen.js.map +1 -0
  78. package/lib/commonjs/components/PinInput.js +282 -120
  79. package/lib/commonjs/components/PinInput.js.map +1 -1
  80. package/lib/commonjs/components/PlatformConnectorsStep.js +828 -0
  81. package/lib/commonjs/components/PlatformConnectorsStep.js.map +1 -0
  82. package/lib/commonjs/components/PlatformToggle.js +180 -0
  83. package/lib/commonjs/components/PlatformToggle.js.map +1 -0
  84. package/lib/commonjs/components/PrimaryButton.js +180 -0
  85. package/lib/commonjs/components/PrimaryButton.js.map +1 -0
  86. package/lib/commonjs/components/SignInMatchAnimation.js +197 -0
  87. package/lib/commonjs/components/SignInMatchAnimation.js.map +1 -0
  88. package/lib/commonjs/components/SignInStep.js +179 -0
  89. package/lib/commonjs/components/SignInStep.js.map +1 -0
  90. package/lib/commonjs/components/TrainingModal.js +808 -563
  91. package/lib/commonjs/components/TrainingModal.js.map +1 -1
  92. package/lib/commonjs/components/UniversalOnboarding.js +2304 -1283
  93. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
  94. package/lib/commonjs/components/VerificationStep.js +154 -0
  95. package/lib/commonjs/components/VerificationStep.js.map +1 -0
  96. package/lib/commonjs/components/WelcomeScreen.js +385 -0
  97. package/lib/commonjs/components/WelcomeScreen.js.map +1 -0
  98. package/lib/commonjs/components/icons/Basicproficon.js +37 -0
  99. package/lib/commonjs/components/icons/Basicproficon.js.map +1 -0
  100. package/lib/commonjs/components/icons/Basicprofile.js +21 -0
  101. package/lib/commonjs/components/icons/Basicprofile.js.map +1 -0
  102. package/lib/commonjs/components/icons/Checkbox.js +21 -0
  103. package/lib/commonjs/components/icons/Checkbox.js.map +1 -0
  104. package/lib/commonjs/components/icons/Checkmark.js +27 -0
  105. package/lib/commonjs/components/icons/Checkmark.js.map +1 -0
  106. package/lib/commonjs/components/icons/Contentanalysis.js +21 -0
  107. package/lib/commonjs/components/icons/Contentanalysis.js.map +1 -0
  108. package/lib/commonjs/components/icons/Contenticon.js +39 -0
  109. package/lib/commonjs/components/icons/Contenticon.js.map +1 -0
  110. package/lib/commonjs/components/icons/EnochE.js +41 -0
  111. package/lib/commonjs/components/icons/EnochE.js.map +1 -0
  112. package/lib/commonjs/components/icons/Personalityicon.js +30 -0
  113. package/lib/commonjs/components/icons/Personalityicon.js.map +1 -0
  114. package/lib/commonjs/components/icons/Personalityprofile.js +21 -0
  115. package/lib/commonjs/components/icons/Personalityprofile.js.map +1 -0
  116. package/lib/commonjs/components/icons/Personalitytraits.js +21 -0
  117. package/lib/commonjs/components/icons/Personalitytraits.js.map +1 -0
  118. package/lib/commonjs/components/icons/Userpreferences.js +21 -0
  119. package/lib/commonjs/components/icons/Userpreferences.js.map +1 -0
  120. package/lib/commonjs/components/icons/index.js +84 -0
  121. package/lib/commonjs/components/icons/index.js.map +1 -0
  122. package/lib/commonjs/components/onboarding/OAuthWebView.js +134 -743
  123. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
  124. package/lib/commonjs/config/api.js +34 -0
  125. package/lib/commonjs/config/api.js.map +1 -0
  126. package/lib/commonjs/context/AuthContext.js +345 -0
  127. package/lib/commonjs/context/AuthContext.js.map +1 -0
  128. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -0
  129. package/lib/commonjs/hooks/useConnectedAccounts.js.map +1 -0
  130. package/lib/commonjs/hooks/useConnections.js +120 -125
  131. package/lib/commonjs/hooks/useConnections.js.map +1 -1
  132. package/lib/commonjs/hooks/useUserConnections.js +148 -0
  133. package/lib/commonjs/hooks/useUserConnections.js.map +1 -0
  134. package/lib/commonjs/index.js +12 -100
  135. package/lib/commonjs/index.js.map +1 -1
  136. package/lib/commonjs/services/apiClient.js +302 -0
  137. package/lib/commonjs/services/apiClient.js.map +1 -0
  138. package/lib/commonjs/services/apiKeyService.js +8 -9
  139. package/lib/commonjs/services/apiKeyService.js.map +1 -1
  140. package/lib/commonjs/services/authService.js +935 -0
  141. package/lib/commonjs/services/authService.js.map +1 -0
  142. package/lib/commonjs/services/biometricPinService.js +184 -0
  143. package/lib/commonjs/services/biometricPinService.js.map +1 -0
  144. package/lib/commonjs/services/connectedAccountsService.js +268 -0
  145. package/lib/commonjs/services/connectedAccountsService.js.map +1 -0
  146. package/lib/commonjs/services/googleAuthService.js +268 -0
  147. package/lib/commonjs/services/googleAuthService.js.map +1 -0
  148. package/lib/commonjs/services/imageCompressionService.js +260 -0
  149. package/lib/commonjs/services/imageCompressionService.js.map +1 -0
  150. package/lib/commonjs/services/jwtStorageService.js +256 -0
  151. package/lib/commonjs/services/jwtStorageService.js.map +1 -0
  152. package/lib/commonjs/services/mobileTrainingService.js +185 -0
  153. package/lib/commonjs/services/mobileTrainingService.js.map +1 -0
  154. package/lib/commonjs/services/pinEncryptionService.js +84 -0
  155. package/lib/commonjs/services/pinEncryptionService.js.map +1 -0
  156. package/lib/commonjs/services/pinStorageUtils.js +105 -0
  157. package/lib/commonjs/services/pinStorageUtils.js.map +1 -0
  158. package/lib/commonjs/services/platformAuthService.js +956 -722
  159. package/lib/commonjs/services/platformAuthService.js.map +1 -1
  160. package/lib/commonjs/services/storageService.js +404 -0
  161. package/lib/commonjs/services/storageService.js.map +1 -0
  162. package/lib/commonjs/services/trainingApiHelpers.js +73 -0
  163. package/lib/commonjs/services/trainingApiHelpers.js.map +1 -0
  164. package/lib/commonjs/services/userConnectionsService.js +486 -0
  165. package/lib/commonjs/services/userConnectionsService.js.map +1 -0
  166. package/lib/commonjs/services/youtubeMigrationService.js +415 -0
  167. package/lib/commonjs/services/youtubeMigrationService.js.map +1 -0
  168. package/lib/commonjs/theme/index.js +249 -0
  169. package/lib/commonjs/theme/index.js.map +1 -0
  170. package/lib/commonjs/utils/eventUtils.js +288 -0
  171. package/lib/commonjs/utils/eventUtils.js.map +1 -0
  172. package/lib/commonjs/utils/haptics.js +66 -0
  173. package/lib/commonjs/utils/haptics.js.map +1 -0
  174. package/lib/commonjs/utils/imagePreloader.js +6 -0
  175. package/lib/commonjs/utils/imagePreloader.js.map +1 -0
  176. package/lib/module/api/index.js +72 -0
  177. package/lib/module/api/index.js.map +1 -1
  178. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  179. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  180. package/lib/module/assets/icons/Facebookicon.png +0 -0
  181. package/lib/module/assets/icons/Gmail.png +0 -0
  182. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  183. package/lib/module/assets/icons/Redditicon.png +0 -0
  184. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  185. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  186. package/lib/module/assets/icons/farcaster.png +0 -0
  187. package/lib/module/assets/icons/instagram.png +0 -0
  188. package/lib/module/assets/icons/pinterest.png +0 -0
  189. package/lib/module/assets/icons/swerv_logo.png +0 -0
  190. package/lib/module/assets/icons/twitter.jpg +0 -0
  191. package/lib/module/assets/images/Checkbox.svg +3 -0
  192. package/lib/module/assets/images/EnochE.svg +19 -0
  193. package/lib/module/assets/images/Enochicon1.png +0 -0
  194. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  195. package/lib/module/assets/images/Facebookicon.png +0 -0
  196. package/lib/module/assets/images/Gmail.png +0 -0
  197. package/lib/module/assets/images/Googlelogo.png +0 -0
  198. package/lib/module/assets/images/Linkedinicon.png +0 -0
  199. package/lib/module/assets/images/Onairoslogo.png +0 -0
  200. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  201. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  202. package/lib/module/assets/images/Redditicon.png +0 -0
  203. package/lib/module/assets/images/Userpreferences.svg +3 -0
  204. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  205. package/lib/module/assets/images/arrow.svg +20 -0
  206. package/lib/module/assets/images/basicproficon.svg +43 -0
  207. package/lib/module/assets/images/basicprofile.svg +3 -0
  208. package/lib/module/assets/images/checkmark.svg +4 -0
  209. package/lib/module/assets/images/contentanalysis.svg +3 -0
  210. package/lib/module/assets/images/contenticon.svg +23 -0
  211. package/lib/module/assets/images/persona1.png +0 -0
  212. package/lib/module/assets/images/persona2.png +0 -0
  213. package/lib/module/assets/images/persona3.png +0 -0
  214. package/lib/module/assets/images/persona4.png +0 -0
  215. package/lib/module/assets/images/persona5.png +0 -0
  216. package/lib/module/assets/images/personalityicon.svg +18 -0
  217. package/lib/module/assets/images/x-close.svg +3 -0
  218. package/lib/module/components/BodyText.js +20 -0
  219. package/lib/module/components/BodyText.js.map +1 -0
  220. package/lib/module/components/BrandMark.js +37 -0
  221. package/lib/module/components/BrandMark.js.map +1 -0
  222. package/lib/module/components/CodeInput.js +23 -0
  223. package/lib/module/components/CodeInput.js.map +1 -0
  224. package/lib/module/components/EmailInput.js +23 -0
  225. package/lib/module/components/EmailInput.js.map +1 -0
  226. package/lib/module/components/ExistingUserDataConfirmation.js +465 -0
  227. package/lib/module/components/ExistingUserDataConfirmation.js.map +1 -0
  228. package/lib/module/components/GoogleButton.js +48 -0
  229. package/lib/module/components/GoogleButton.js.map +1 -0
  230. package/lib/module/components/HeadingGroup.js +36 -0
  231. package/lib/module/components/HeadingGroup.js.map +1 -0
  232. package/lib/module/components/ModalHeader.js +92 -0
  233. package/lib/module/components/ModalHeader.js.map +1 -0
  234. package/lib/module/components/ModalSheet.js +34 -0
  235. package/lib/module/components/ModalSheet.js.map +1 -0
  236. package/lib/module/components/Onairos.js +1 -3
  237. package/lib/module/components/Onairos.js.map +1 -1
  238. package/lib/module/components/OnairosButton.js +172 -192
  239. package/lib/module/components/OnairosButton.js.map +1 -1
  240. package/lib/module/components/OnairosSignInButton.js +160 -0
  241. package/lib/module/components/OnairosSignInButton.js.map +1 -0
  242. package/lib/module/components/Overlay.js +5 -5
  243. package/lib/module/components/Overlay.js.map +1 -1
  244. package/lib/module/components/PersonaImage.js +53 -0
  245. package/lib/module/components/PersonaImage.js.map +1 -0
  246. package/lib/module/components/PersonaLoadingScreen.js +148 -0
  247. package/lib/module/components/PersonaLoadingScreen.js.map +1 -0
  248. package/lib/module/components/PersonalizationConsentScreen.js +309 -0
  249. package/lib/module/components/PersonalizationConsentScreen.js.map +1 -0
  250. package/lib/module/components/PinCreationScreen.js +386 -0
  251. package/lib/module/components/PinCreationScreen.js.map +1 -0
  252. package/lib/module/components/PinInput.js +283 -120
  253. package/lib/module/components/PinInput.js.map +1 -1
  254. package/lib/module/components/PlatformConnectorsStep.js +820 -0
  255. package/lib/module/components/PlatformConnectorsStep.js.map +1 -0
  256. package/lib/module/components/PlatformToggle.js +173 -0
  257. package/lib/module/components/PlatformToggle.js.map +1 -0
  258. package/lib/module/components/PrimaryButton.js +172 -0
  259. package/lib/module/components/PrimaryButton.js.map +1 -0
  260. package/lib/module/components/SignInMatchAnimation.js +189 -0
  261. package/lib/module/components/SignInMatchAnimation.js.map +1 -0
  262. package/lib/module/components/SignInStep.js +171 -0
  263. package/lib/module/components/SignInStep.js.map +1 -0
  264. package/lib/module/components/TrainingModal.js +809 -565
  265. package/lib/module/components/TrainingModal.js.map +1 -1
  266. package/lib/module/components/UniversalOnboarding.js +2307 -1284
  267. package/lib/module/components/UniversalOnboarding.js.map +1 -1
  268. package/lib/module/components/VerificationStep.js +146 -0
  269. package/lib/module/components/VerificationStep.js.map +1 -0
  270. package/lib/module/components/WelcomeScreen.js +378 -0
  271. package/lib/module/components/WelcomeScreen.js.map +1 -0
  272. package/lib/module/components/icons/Basicproficon.js +30 -0
  273. package/lib/module/components/icons/Basicproficon.js.map +1 -0
  274. package/lib/module/components/icons/Basicprofile.js +14 -0
  275. package/lib/module/components/icons/Basicprofile.js.map +1 -0
  276. package/lib/module/components/icons/Checkbox.js +14 -0
  277. package/lib/module/components/icons/Checkbox.js.map +1 -0
  278. package/lib/module/components/icons/Checkmark.js +20 -0
  279. package/lib/module/components/icons/Checkmark.js.map +1 -0
  280. package/lib/module/components/icons/Contentanalysis.js +14 -0
  281. package/lib/module/components/icons/Contentanalysis.js.map +1 -0
  282. package/lib/module/components/icons/Contenticon.js +32 -0
  283. package/lib/module/components/icons/Contenticon.js.map +1 -0
  284. package/lib/module/components/icons/EnochE.js +34 -0
  285. package/lib/module/components/icons/EnochE.js.map +1 -0
  286. package/lib/module/components/icons/Personalityicon.js +23 -0
  287. package/lib/module/components/icons/Personalityicon.js.map +1 -0
  288. package/lib/module/components/icons/Personalityprofile.js +14 -0
  289. package/lib/module/components/icons/Personalityprofile.js.map +1 -0
  290. package/lib/module/components/icons/Personalitytraits.js +14 -0
  291. package/lib/module/components/icons/Personalitytraits.js.map +1 -0
  292. package/lib/module/components/icons/Userpreferences.js +14 -0
  293. package/lib/module/components/icons/Userpreferences.js.map +1 -0
  294. package/lib/module/components/icons/index.js +13 -0
  295. package/lib/module/components/icons/index.js.map +1 -0
  296. package/lib/module/components/onboarding/OAuthWebView.js +136 -744
  297. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
  298. package/lib/module/config/api.js +26 -0
  299. package/lib/module/config/api.js.map +1 -0
  300. package/lib/module/context/AuthContext.js +335 -0
  301. package/lib/module/context/AuthContext.js.map +1 -0
  302. package/lib/module/hooks/useConnectedAccounts.js +106 -0
  303. package/lib/module/hooks/useConnectedAccounts.js.map +1 -0
  304. package/lib/module/hooks/useConnections.js +119 -125
  305. package/lib/module/hooks/useConnections.js.map +1 -1
  306. package/lib/module/hooks/useUserConnections.js +140 -0
  307. package/lib/module/hooks/useUserConnections.js.map +1 -0
  308. package/lib/module/index.js +51 -15
  309. package/lib/module/index.js.map +1 -1
  310. package/lib/module/services/apiClient.js +298 -0
  311. package/lib/module/services/apiClient.js.map +1 -0
  312. package/lib/module/services/apiKeyService.js +8 -9
  313. package/lib/module/services/apiKeyService.js.map +1 -1
  314. package/lib/module/services/authService.js +905 -0
  315. package/lib/module/services/authService.js.map +1 -0
  316. package/lib/module/services/biometricPinService.js +173 -0
  317. package/lib/module/services/biometricPinService.js.map +1 -0
  318. package/lib/module/services/connectedAccountsService.js +255 -0
  319. package/lib/module/services/connectedAccountsService.js.map +1 -0
  320. package/lib/module/services/googleAuthService.js +258 -0
  321. package/lib/module/services/googleAuthService.js.map +1 -0
  322. package/lib/module/services/imageCompressionService.js +250 -0
  323. package/lib/module/services/imageCompressionService.js.map +1 -0
  324. package/lib/module/services/jwtStorageService.js +239 -0
  325. package/lib/module/services/jwtStorageService.js.map +1 -0
  326. package/lib/module/services/mobileTrainingService.js +172 -0
  327. package/lib/module/services/mobileTrainingService.js.map +1 -0
  328. package/lib/module/services/pinEncryptionService.js +75 -0
  329. package/lib/module/services/pinEncryptionService.js.map +1 -0
  330. package/lib/module/services/pinStorageUtils.js +93 -0
  331. package/lib/module/services/pinStorageUtils.js.map +1 -0
  332. package/lib/module/services/platformAuthService.js +943 -704
  333. package/lib/module/services/platformAuthService.js.map +1 -1
  334. package/lib/module/services/storageService.js +383 -0
  335. package/lib/module/services/storageService.js.map +1 -0
  336. package/lib/module/services/trainingApiHelpers.js +67 -0
  337. package/lib/module/services/trainingApiHelpers.js.map +1 -0
  338. package/lib/module/services/userConnectionsService.js +476 -0
  339. package/lib/module/services/userConnectionsService.js.map +1 -0
  340. package/lib/module/services/youtubeMigrationService.js +404 -0
  341. package/lib/module/services/youtubeMigrationService.js.map +1 -0
  342. package/lib/module/theme/index.js +244 -0
  343. package/lib/module/theme/index.js.map +1 -0
  344. package/lib/module/utils/eventUtils.js +270 -0
  345. package/lib/module/utils/eventUtils.js.map +1 -0
  346. package/lib/module/utils/haptics.js +59 -0
  347. package/lib/module/utils/haptics.js.map +1 -0
  348. package/lib/module/utils/imagePreloader.js +3 -0
  349. package/lib/module/utils/imagePreloader.js.map +1 -0
  350. package/lib/typescript/api/index.d.ts +8 -0
  351. package/lib/typescript/api/index.d.ts.map +1 -1
  352. package/lib/typescript/components/BodyText.d.ts +10 -0
  353. package/lib/typescript/components/BodyText.d.ts.map +1 -0
  354. package/lib/typescript/components/BrandMark.d.ts +11 -0
  355. package/lib/typescript/components/BrandMark.d.ts.map +1 -0
  356. package/lib/typescript/components/CodeInput.d.ts +10 -0
  357. package/lib/typescript/components/CodeInput.d.ts.map +1 -0
  358. package/lib/typescript/components/EmailInput.d.ts +8 -0
  359. package/lib/typescript/components/EmailInput.d.ts.map +1 -0
  360. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts +12 -0
  361. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts.map +1 -0
  362. package/lib/typescript/components/GoogleButton.d.ts +11 -0
  363. package/lib/typescript/components/GoogleButton.d.ts.map +1 -0
  364. package/lib/typescript/components/HeadingGroup.d.ts +11 -0
  365. package/lib/typescript/components/HeadingGroup.d.ts.map +1 -0
  366. package/lib/typescript/components/ModalHeader.d.ts +11 -0
  367. package/lib/typescript/components/ModalHeader.d.ts.map +1 -0
  368. package/lib/typescript/components/ModalSheet.d.ts +13 -0
  369. package/lib/typescript/components/ModalSheet.d.ts.map +1 -0
  370. package/lib/typescript/components/Onairos.d.ts.map +1 -1
  371. package/lib/typescript/components/OnairosButton.d.ts +29 -4
  372. package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
  373. package/lib/typescript/components/OnairosSignInButton.d.ts +14 -0
  374. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -0
  375. package/lib/typescript/components/PersonaImage.d.ts +8 -0
  376. package/lib/typescript/components/PersonaImage.d.ts.map +1 -0
  377. package/lib/typescript/components/PersonaLoadingScreen.d.ts +10 -0
  378. package/lib/typescript/components/PersonaLoadingScreen.d.ts.map +1 -0
  379. package/lib/typescript/components/PersonalizationConsentScreen.d.ts +10 -0
  380. package/lib/typescript/components/PersonalizationConsentScreen.d.ts.map +1 -0
  381. package/lib/typescript/components/PinCreationScreen.d.ts +10 -0
  382. package/lib/typescript/components/PinCreationScreen.d.ts.map +1 -0
  383. package/lib/typescript/components/PinInput.d.ts +11 -1
  384. package/lib/typescript/components/PinInput.d.ts.map +1 -1
  385. package/lib/typescript/components/PlatformConnectorsStep.d.ts +11 -0
  386. package/lib/typescript/components/PlatformConnectorsStep.d.ts.map +1 -0
  387. package/lib/typescript/components/PlatformToggle.d.ts +20 -0
  388. package/lib/typescript/components/PlatformToggle.d.ts.map +1 -0
  389. package/lib/typescript/components/PrimaryButton.d.ts +22 -0
  390. package/lib/typescript/components/PrimaryButton.d.ts.map +1 -0
  391. package/lib/typescript/components/SignInMatchAnimation.d.ts +9 -0
  392. package/lib/typescript/components/SignInMatchAnimation.d.ts.map +1 -0
  393. package/lib/typescript/components/SignInStep.d.ts +12 -0
  394. package/lib/typescript/components/SignInStep.d.ts.map +1 -0
  395. package/lib/typescript/components/TrainingModal.d.ts +12 -1
  396. package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
  397. package/lib/typescript/components/UniversalOnboarding.d.ts +14 -1
  398. package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
  399. package/lib/typescript/components/VerificationStep.d.ts +13 -0
  400. package/lib/typescript/components/VerificationStep.d.ts.map +1 -0
  401. package/lib/typescript/components/WelcomeScreen.d.ts +9 -0
  402. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -0
  403. package/lib/typescript/components/icons/Basicproficon.d.ts +5 -0
  404. package/lib/typescript/components/icons/Basicproficon.d.ts.map +1 -0
  405. package/lib/typescript/components/icons/Basicprofile.d.ts +5 -0
  406. package/lib/typescript/components/icons/Basicprofile.d.ts.map +1 -0
  407. package/lib/typescript/components/icons/Checkbox.d.ts +5 -0
  408. package/lib/typescript/components/icons/Checkbox.d.ts.map +1 -0
  409. package/lib/typescript/components/icons/Checkmark.d.ts +5 -0
  410. package/lib/typescript/components/icons/Checkmark.d.ts.map +1 -0
  411. package/lib/typescript/components/icons/Contentanalysis.d.ts +5 -0
  412. package/lib/typescript/components/icons/Contentanalysis.d.ts.map +1 -0
  413. package/lib/typescript/components/icons/Contenticon.d.ts +5 -0
  414. package/lib/typescript/components/icons/Contenticon.d.ts.map +1 -0
  415. package/lib/typescript/components/icons/EnochE.d.ts +5 -0
  416. package/lib/typescript/components/icons/EnochE.d.ts.map +1 -0
  417. package/lib/typescript/components/icons/Personalityicon.d.ts +5 -0
  418. package/lib/typescript/components/icons/Personalityicon.d.ts.map +1 -0
  419. package/lib/typescript/components/icons/Personalityprofile.d.ts +5 -0
  420. package/lib/typescript/components/icons/Personalityprofile.d.ts.map +1 -0
  421. package/lib/typescript/components/icons/Personalitytraits.d.ts +5 -0
  422. package/lib/typescript/components/icons/Personalitytraits.d.ts.map +1 -0
  423. package/lib/typescript/components/icons/Userpreferences.d.ts +5 -0
  424. package/lib/typescript/components/icons/Userpreferences.d.ts.map +1 -0
  425. package/lib/typescript/components/icons/index.d.ts +12 -0
  426. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  427. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
  428. package/lib/typescript/config/api.d.ts +24 -0
  429. package/lib/typescript/config/api.d.ts.map +1 -0
  430. package/lib/typescript/context/AuthContext.d.ts +34 -0
  431. package/lib/typescript/context/AuthContext.d.ts.map +1 -0
  432. package/lib/typescript/hooks/useConnectedAccounts.d.ts +11 -0
  433. package/lib/typescript/hooks/useConnectedAccounts.d.ts.map +1 -0
  434. package/lib/typescript/hooks/useConnections.d.ts +10 -5
  435. package/lib/typescript/hooks/useConnections.d.ts.map +1 -1
  436. package/lib/typescript/hooks/useUserConnections.d.ts +12 -0
  437. package/lib/typescript/hooks/useUserConnections.d.ts.map +1 -0
  438. package/lib/typescript/index.d.ts +24 -6
  439. package/lib/typescript/index.d.ts.map +1 -1
  440. package/lib/typescript/services/apiClient.d.ts +91 -0
  441. package/lib/typescript/services/apiClient.d.ts.map +1 -0
  442. package/lib/typescript/services/apiKeyService.d.ts.map +1 -1
  443. package/lib/typescript/services/authService.d.ts +216 -0
  444. package/lib/typescript/services/authService.d.ts.map +1 -0
  445. package/lib/typescript/services/biometricPinService.d.ts +29 -0
  446. package/lib/typescript/services/biometricPinService.d.ts.map +1 -0
  447. package/lib/typescript/services/connectedAccountsService.d.ts +56 -0
  448. package/lib/typescript/services/connectedAccountsService.d.ts.map +1 -0
  449. package/lib/typescript/services/googleAuthService.d.ts +63 -0
  450. package/lib/typescript/services/googleAuthService.d.ts.map +1 -0
  451. package/lib/typescript/services/imageCompressionService.d.ts +37 -0
  452. package/lib/typescript/services/imageCompressionService.d.ts.map +1 -0
  453. package/lib/typescript/services/jwtStorageService.d.ts +86 -0
  454. package/lib/typescript/services/jwtStorageService.d.ts.map +1 -0
  455. package/lib/typescript/services/mobileTrainingService.d.ts +45 -0
  456. package/lib/typescript/services/mobileTrainingService.d.ts.map +1 -0
  457. package/lib/typescript/services/pinEncryptionService.d.ts +17 -0
  458. package/lib/typescript/services/pinEncryptionService.d.ts.map +1 -0
  459. package/lib/typescript/services/pinStorageUtils.d.ts +25 -0
  460. package/lib/typescript/services/pinStorageUtils.d.ts.map +1 -0
  461. package/lib/typescript/services/platformAuthService.d.ts +34 -109
  462. package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
  463. package/lib/typescript/services/storageService.d.ts +128 -0
  464. package/lib/typescript/services/storageService.d.ts.map +1 -0
  465. package/lib/typescript/services/trainingApiHelpers.d.ts +38 -0
  466. package/lib/typescript/services/trainingApiHelpers.d.ts.map +1 -0
  467. package/lib/typescript/services/userConnectionsService.d.ts +90 -0
  468. package/lib/typescript/services/userConnectionsService.d.ts.map +1 -0
  469. package/lib/typescript/services/youtubeMigrationService.d.ts +12 -0
  470. package/lib/typescript/services/youtubeMigrationService.d.ts.map +1 -0
  471. package/lib/typescript/theme/index.d.ts +416 -0
  472. package/lib/typescript/theme/index.d.ts.map +1 -0
  473. package/lib/typescript/types/index.d.ts +39 -0
  474. package/lib/typescript/types/index.d.ts.map +1 -1
  475. package/lib/typescript/utils/eventUtils.d.ts +108 -0
  476. package/lib/typescript/utils/eventUtils.d.ts.map +1 -0
  477. package/lib/typescript/utils/haptics.d.ts +11 -0
  478. package/lib/typescript/utils/haptics.d.ts.map +1 -0
  479. package/lib/typescript/utils/imagePreloader.d.ts +2 -0
  480. package/lib/typescript/utils/imagePreloader.d.ts.map +1 -0
  481. package/package.json +163 -145
  482. package/src/api/index.ts +41 -0
  483. package/src/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  484. package/src/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  485. package/src/assets/icons/Facebookicon.png +0 -0
  486. package/src/assets/icons/Gmail.png +0 -0
  487. package/src/assets/icons/Linkedinicon.png +0 -0
  488. package/src/assets/icons/Redditicon.png +0 -0
  489. package/src/assets/icons/YouTubeicon2.png +0 -0
  490. package/src/assets/icons/YouTubeicon3.png +0 -0
  491. package/src/assets/icons/farcaster.png +0 -0
  492. package/src/assets/icons/instagram.png +0 -0
  493. package/src/assets/icons/pinterest.png +0 -0
  494. package/src/assets/icons/swerv_logo.png +0 -0
  495. package/src/assets/icons/twitter.jpg +0 -0
  496. package/src/assets/images/Checkbox.svg +3 -0
  497. package/src/assets/images/EnochE.svg +19 -0
  498. package/src/assets/images/Enochicon1.png +0 -0
  499. package/src/assets/images/Face_ID_logo.png +0 -0
  500. package/src/assets/images/Facebookicon.png +0 -0
  501. package/src/assets/images/Gmail.png +0 -0
  502. package/src/assets/images/Googlelogo.png +0 -0
  503. package/src/assets/images/Linkedinicon.png +0 -0
  504. package/src/assets/images/Onairoslogo.png +0 -0
  505. package/src/assets/images/Personalityprofile.svg +3 -0
  506. package/src/assets/images/Personalitytraits.svg +3 -0
  507. package/src/assets/images/Redditicon.png +0 -0
  508. package/src/assets/images/Userpreferences.svg +3 -0
  509. package/src/assets/images/YouTubeicon3.png +0 -0
  510. package/src/assets/images/arrow.svg +20 -0
  511. package/src/assets/images/basicproficon.svg +43 -0
  512. package/src/assets/images/basicprofile.svg +3 -0
  513. package/src/assets/images/checkmark.svg +4 -0
  514. package/src/assets/images/contentanalysis.svg +3 -0
  515. package/src/assets/images/contenticon.svg +23 -0
  516. package/src/assets/images/persona1.png +0 -0
  517. package/src/assets/images/persona2.png +0 -0
  518. package/src/assets/images/persona3.png +0 -0
  519. package/src/assets/images/persona4.png +0 -0
  520. package/src/assets/images/persona5.png +0 -0
  521. package/src/assets/images/personalityicon.svg +18 -0
  522. package/src/assets/images/x-close.svg +3 -0
  523. package/src/components/BodyText.tsx +33 -0
  524. package/src/components/BrandMark.tsx +62 -0
  525. package/src/components/CodeInput.tsx +32 -0
  526. package/src/components/EmailInput.tsx +31 -0
  527. package/src/components/ExistingUserDataConfirmation.tsx +507 -0
  528. package/src/components/GoogleButton.tsx +55 -0
  529. package/src/components/HeadingGroup.tsx +49 -0
  530. package/src/components/ModalHeader.tsx +125 -0
  531. package/src/components/ModalSheet.tsx +57 -0
  532. package/src/components/Onairos.tsx +422 -424
  533. package/src/components/OnairosButton.tsx +339 -359
  534. package/src/components/OnairosSignInButton.tsx +166 -0
  535. package/src/components/Overlay.tsx +506 -506
  536. package/src/components/PersonaImage.tsx +79 -0
  537. package/src/components/PersonaLoadingScreen.tsx +201 -0
  538. package/src/components/PersonalizationConsentScreen.tsx +410 -0
  539. package/src/components/PinCreationScreen.tsx +492 -0
  540. package/src/components/PinInput.tsx +555 -343
  541. package/src/components/PlatformConnectorsStep.tsx +892 -0
  542. package/src/components/PlatformToggle.tsx +226 -0
  543. package/src/components/PrimaryButton.tsx +214 -0
  544. package/src/components/SignInMatchAnimation.tsx +225 -0
  545. package/src/components/SignInStep.tsx +217 -0
  546. package/src/components/TrainingModal.tsx +1047 -737
  547. package/src/components/UniversalOnboarding.tsx +2888 -1820
  548. package/src/components/VerificationStep.tsx +198 -0
  549. package/src/components/WelcomeScreen.tsx +473 -0
  550. package/src/components/icons/Basicproficon.tsx +30 -0
  551. package/src/components/icons/Basicprofile.tsx +17 -0
  552. package/src/components/icons/Checkbox.tsx +17 -0
  553. package/src/components/icons/Checkmark.tsx +24 -0
  554. package/src/components/icons/Contentanalysis.tsx +17 -0
  555. package/src/components/icons/Contenticon.tsx +30 -0
  556. package/src/components/icons/EnochE.tsx +39 -0
  557. package/src/components/icons/Personalityicon.tsx +22 -0
  558. package/src/components/icons/Personalityprofile.tsx +17 -0
  559. package/src/components/icons/Personalitytraits.tsx +17 -0
  560. package/src/components/icons/Userpreferences.tsx +17 -0
  561. package/src/components/icons/index.ts +12 -0
  562. package/src/components/onboarding/OAuthWebView.tsx +232 -838
  563. package/src/config/api.ts +25 -0
  564. package/src/context/AuthContext.tsx +393 -0
  565. package/src/hooks/useConnectedAccounts.ts +139 -0
  566. package/src/hooks/useConnections.ts +129 -131
  567. package/src/hooks/useUserConnections.ts +166 -0
  568. package/src/index.ts +94 -49
  569. package/src/services/apiClient.ts +337 -0
  570. package/src/services/apiKeyService.ts +9 -11
  571. package/src/services/authService.ts +1008 -0
  572. package/src/services/biometricPinService.ts +193 -0
  573. package/src/services/connectedAccountsService.ts +290 -0
  574. package/src/services/googleAuthService.ts +279 -0
  575. package/src/services/imageCompressionService.ts +303 -0
  576. package/src/services/jwtStorageService.ts +257 -0
  577. package/src/services/mobileTrainingService.ts +204 -0
  578. package/src/services/pinEncryptionService.ts +76 -0
  579. package/src/services/pinStorageUtils.ts +97 -0
  580. package/src/services/platformAuthService.ts +1346 -1113
  581. package/src/services/storageService.ts +452 -0
  582. package/src/services/trainingApiHelpers.ts +67 -0
  583. package/src/services/userConnectionsService.ts +557 -0
  584. package/src/services/youtubeMigrationService.ts +454 -0
  585. package/src/theme/index.ts +239 -0
  586. package/src/types/index.ts +265 -238
  587. package/src/utils/eventUtils.ts +303 -0
  588. package/src/utils/haptics.ts +59 -0
  589. package/src/utils/imagePreloader.ts +2 -0
  590. package/lib/commonjs/assets/images/email.png +0 -0
  591. package/lib/commonjs/assets/images/linkedin.png +0 -0
  592. package/lib/commonjs/assets/images/reddit.png +0 -0
  593. package/lib/commonjs/assets/images/youtube.png +0 -0
  594. package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
  595. package/lib/module/assets/images/email.png +0 -0
  596. package/lib/module/assets/images/linkedin.png +0 -0
  597. package/lib/module/assets/images/reddit.png +0 -0
  598. package/lib/module/assets/images/youtube.png +0 -0
  599. package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
  600. package/src/assets/images/email.png +0 -0
  601. package/src/assets/images/linkedin.png +0 -0
  602. package/src/assets/images/reddit.png +0 -0
  603. package/src/assets/images/youtube.png +0 -0
  604. package/src/components/UniversalOnboarding.tsx.new +0 -455
@@ -0,0 +1,828 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _theme = require("../theme");
10
+ var _haptics = require("../utils/haptics");
11
+ var _PlatformToggle = _interopRequireDefault(require("./PlatformToggle"));
12
+ var _PersonaImage = _interopRequireDefault(require("./PersonaImage"));
13
+ var _PrimaryButton = _interopRequireDefault(require("./PrimaryButton"));
14
+ var _PersonalizationConsentScreen = _interopRequireDefault(require("./PersonalizationConsentScreen"));
15
+ var _PinCreationScreen = _interopRequireDefault(require("./PinCreationScreen"));
16
+ var _PersonaLoadingScreen = _interopRequireDefault(require("./PersonaLoadingScreen"));
17
+ var _useConnections = require("../hooks/useConnections");
18
+ var _connectedAccountsService = require("../services/connectedAccountsService");
19
+ var _platformAuthService = require("../services/platformAuthService");
20
+ var _OAuthWebView = require("./onboarding/OAuthWebView");
21
+ var _AuthContext = require("../context/AuthContext");
22
+ var _mobileTrainingService = require("../services/mobileTrainingService");
23
+ var _authService = require("../services/authService");
24
+ var _pinEncryptionService = require("../services/pinEncryptionService");
25
+ var _pinStorageUtils = require("../services/pinStorageUtils");
26
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
27
+ var _socket = require("socket.io-client");
28
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
29
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
30
+ const PlatformConnectorsStep = ({
31
+ onUpdate,
32
+ onSkip,
33
+ loading = false,
34
+ onPinComplete,
35
+ onReviewerBypass
36
+ }) => {
37
+ const [connectedPlatforms, setConnectedPlatforms] = (0, _react.useState)(new Set());
38
+ const [showConsentScreen, setShowConsentScreen] = (0, _react.useState)(false);
39
+ const [showPinScreen, setShowPinScreen] = (0, _react.useState)(false);
40
+ const [showLoadingScreen, setShowLoadingScreen] = (0, _react.useState)(false);
41
+ const [createdPin, setCreatedPin] = (0, _react.useState)('');
42
+ const [connectionStatuses, setConnectionStatuses] = (0, _react.useState)({});
43
+ const [showOAuthWebView, setShowOAuthWebView] = (0, _react.useState)(false);
44
+ const [oauthUrl, setOauthUrl] = (0, _react.useState)('');
45
+ const [currentPlatform, setCurrentPlatform] = (0, _react.useState)('');
46
+ const [longPressTimer, setLongPressTimer] = (0, _react.useState)(null);
47
+
48
+ // EXACT same training state variables as UniversalOnboarding
49
+ const [username, setUsername] = (0, _react.useState)('');
50
+ const [personaProgress, setPersonaProgress] = (0, _react.useState)(0);
51
+ const [personaStatus, setPersonaStatus] = (0, _react.useState)('Initializing...');
52
+ const [isPersonaComplete, setIsPersonaComplete] = (0, _react.useState)(false);
53
+ const [socketConnected, setSocketConnected] = (0, _react.useState)(false);
54
+ const [hasError, setHasError] = (0, _react.useState)(false);
55
+ const [userTraits, setUserTraits] = (0, _react.useState)(null);
56
+ const [inferenceResults, setInferenceResults] = (0, _react.useState)(null);
57
+ const [userToken, setUserToken] = (0, _react.useState)(null);
58
+ const [userInfo, setUserInfo] = (0, _react.useState)(null);
59
+ const socketRef = (0, _react.useRef)(null);
60
+
61
+ // EXACT same background training state as UniversalOnboarding
62
+ const [isBackgroundTrainingStarted, setIsBackgroundTrainingStarted] = (0, _react.useState)(false);
63
+ const [backgroundTrainingProgress, setBackgroundTrainingProgress] = (0, _react.useState)('');
64
+ const [backgroundSocketId, setBackgroundSocketId] = (0, _react.useState)(null);
65
+
66
+ // Use the real platform connection hook
67
+ const {
68
+ connectPlatform,
69
+ disconnectPlatform,
70
+ isConnecting
71
+ } = (0, _useConnections.useConnections)();
72
+
73
+ // Get the authenticated user from auth context
74
+ const {
75
+ user
76
+ } = (0, _AuthContext.useAuth)();
77
+
78
+ // Initialize username on mount
79
+ (0, _react.useEffect)(() => {
80
+ const initializeUsername = async () => {
81
+ try {
82
+ // First try to get stored username
83
+ const storedUsername = await _asyncStorage.default.getItem('onairos_username');
84
+ if (storedUsername && !username) {
85
+ console.log('📝 [USERNAME] Using stored username:', storedUsername);
86
+ setUsername(storedUsername);
87
+ return;
88
+ }
89
+
90
+ // If no stored username, generate from user data
91
+ if (user && !username) {
92
+ var _user$email;
93
+ const initialUsername = (user === null || user === void 0 || (_user$email = user.email) === null || _user$email === void 0 ? void 0 : _user$email.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || `user_${Math.floor(Math.random() * 10000)}`;
94
+ console.log('📝 [USERNAME] Generated username from user data:', initialUsername);
95
+ setUsername(initialUsername);
96
+ // Store it for future use
97
+ await _asyncStorage.default.setItem('onairos_username', initialUsername);
98
+ return;
99
+ }
100
+
101
+ // If no user data and no stored username, create a fallback
102
+ if (!username) {
103
+ const fallbackUsername = `mobile_user_${Math.floor(Math.random() * 10000)}`;
104
+ console.log('📝 [USERNAME] Using fallback username:', fallbackUsername);
105
+ setUsername(fallbackUsername);
106
+ await _asyncStorage.default.setItem('onairos_username', fallbackUsername);
107
+ }
108
+ } catch (error) {
109
+ console.error('❌ [USERNAME] Error initializing username:', error);
110
+ // Fallback to simple username
111
+ const fallbackUsername = `user_${Math.floor(Math.random() * 10000)}`;
112
+ setUsername(fallbackUsername);
113
+ }
114
+ };
115
+ initializeUsername();
116
+ }, [user, username]);
117
+
118
+ // EXACT same ensureAuthToken function from UniversalOnboarding
119
+ const ensureAuthToken = async () => {
120
+ try {
121
+ var _user$name, _onairosResponseData$;
122
+ let existingToken = (await _asyncStorage.default.getItem('onairos_jwt_token')) || (await _asyncStorage.default.getItem('enoch_token')) || (await _asyncStorage.default.getItem('auth_token'));
123
+ if (existingToken && existingToken.trim().length > 20) {
124
+ console.log('✅ Authentication token already exists:', `${existingToken.substring(0, 20)}...`);
125
+ return existingToken;
126
+ }
127
+ console.log('🔐 Creating Enoch authentication token...');
128
+ console.log('🔍 [ENSURE AUTH] Current username state:', username);
129
+ console.log('🔍 [ENSURE AUTH] Current user state:', user);
130
+ const fallbackEmail = (user === null || user === void 0 ? void 0 : user.email) || `${username || 'user'}@onairos.temp`;
131
+ const fallbackUsername = username || (user === null || user === void 0 || (_user$name = user.name) === null || _user$name === void 0 ? void 0 : _user$name.split('@')[0]) || 'mobile_user';
132
+ console.log('🔍 [ENSURE AUTH] Using fallback email:', fallbackEmail);
133
+ console.log('🔍 [ENSURE AUTH] Using fallback username:', fallbackUsername);
134
+
135
+ // Create Enoch user
136
+ try {
137
+ await fetch('https://api2.onairos.uk/enoch/users/register', {
138
+ method: 'POST',
139
+ headers: {
140
+ 'Content-Type': 'application/json'
141
+ },
142
+ body: JSON.stringify({
143
+ email: fallbackEmail,
144
+ name: fallbackUsername,
145
+ photoUrl: ''
146
+ })
147
+ });
148
+ } catch (enochError) {
149
+ console.warn('⚠️ Enoch user creation failed (continuing):', enochError);
150
+ }
151
+
152
+ // Create Onairos account to get JWT token
153
+ const onairosSignupResponse = await fetch('https://api2.onairos.uk/register/enoch', {
154
+ method: 'POST',
155
+ headers: {
156
+ 'Content-Type': 'application/json'
157
+ },
158
+ body: JSON.stringify({
159
+ email: fallbackEmail,
160
+ username: fallbackUsername,
161
+ name: fallbackUsername
162
+ })
163
+ });
164
+ if (!onairosSignupResponse.ok) {
165
+ const errorText = await onairosSignupResponse.text();
166
+ throw new Error(`Onairos signup failed: ${onairosSignupResponse.status} ${errorText}`);
167
+ }
168
+ const onairosResponseData = await onairosSignupResponse.json();
169
+ let authToken = onairosResponseData.token || ((_onairosResponseData$ = onairosResponseData.data) === null || _onairosResponseData$ === void 0 ? void 0 : _onairosResponseData$.token) || onairosResponseData.jwt;
170
+ if (!authToken) {
171
+ throw new Error('No authentication token returned from server');
172
+ }
173
+
174
+ // Store the token
175
+ await _asyncStorage.default.setItem('onairos_jwt_token', authToken);
176
+ await _asyncStorage.default.setItem('auth_token', authToken);
177
+ await _asyncStorage.default.setItem('enoch_token', authToken);
178
+ await _asyncStorage.default.setItem('onairos_username', onairosResponseData.username || fallbackUsername);
179
+ console.log('✅ Successfully stored authentication tokens');
180
+ return authToken;
181
+ } catch (error) {
182
+ console.error('❌ Error ensuring authentication token:', error);
183
+ throw error;
184
+ }
185
+ };
186
+
187
+ // EXACT same background training function from UniversalOnboarding
188
+ const startBackgroundTraining = (0, _react.useCallback)(async () => {
189
+ try {
190
+ console.log('🚀 [BACKGROUND] Starting background training optimization...');
191
+ setBackgroundTrainingProgress('Connecting...');
192
+ const authToken = await ensureAuthToken();
193
+ if (!authToken) {
194
+ throw new Error('Failed to create authentication token for background training');
195
+ }
196
+ console.log('✅ [BACKGROUND] Auth token ready:', `${authToken.substring(0, 20)}...`);
197
+ setUserToken(authToken);
198
+
199
+ // Set up user info if not available
200
+ if (!userInfo) {
201
+ var _user$email2;
202
+ const storedUsername = await (0, _authService.getOnairosUsername)();
203
+ const fallbackUsername = storedUsername || (user === null || user === void 0 || (_user$email2 = user.email) === null || _user$email2 === void 0 ? void 0 : _user$email2.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || 'mobile_user';
204
+ const newUserInfo = {
205
+ username: fallbackUsername,
206
+ email: (user === null || user === void 0 ? void 0 : user.email) || null,
207
+ id: null
208
+ };
209
+ setUserInfo(newUserInfo);
210
+ setUsername(fallbackUsername);
211
+ console.log('🧑‍💻 [BACKGROUND] User info set:', newUserInfo);
212
+ }
213
+ console.log('🔌 [BACKGROUND] Setting up socket for background training...');
214
+ setBackgroundTrainingProgress('Initializing data collection...');
215
+ const backgroundSocket = (0, _socket.io)('https://api2.onairos.uk', {
216
+ transports: ['websocket', 'polling'],
217
+ autoConnect: false,
218
+ timeout: 15000,
219
+ reconnection: true,
220
+ reconnectionAttempts: 3,
221
+ reconnectionDelay: 1000,
222
+ forceNew: true
223
+ });
224
+ backgroundSocket.on('connect', async () => {
225
+ console.log('✅ [BACKGROUND] Socket connected, starting background data collection...');
226
+ const socketId = backgroundSocket.id;
227
+ setBackgroundSocketId(socketId || null);
228
+ setBackgroundTrainingProgress('Collecting your data...');
229
+ if (socketId) {
230
+ // Step 4: Start background training WITHOUT PIN (per backend instructions)
231
+ await startBackgroundEnochTraining(socketId, authToken);
232
+ }
233
+ });
234
+ backgroundSocket.on('trainingUpdate', data => {
235
+ console.log('🔥 [SOCKET] Received trainingUpdate event:', data);
236
+ if (data.progress) {
237
+ setBackgroundTrainingProgress(data.status || 'Processing...');
238
+ setPersonaProgress(data.progress);
239
+ setPersonaStatus(data.status || 'Training in progress');
240
+ console.log('📊 [BACKGROUND] Training progress:', data.progress, '%');
241
+ } else {
242
+ console.log('⚠️ [SOCKET] trainingUpdate event has no progress data:', data);
243
+ }
244
+ });
245
+ backgroundSocket.on('disconnect', () => {
246
+ console.log('❌ [BACKGROUND] Socket disconnected');
247
+ });
248
+ backgroundSocket.on('trainingCompleted', data => {
249
+ console.log('🔥 [SOCKET] Received trainingCompleted event:', data);
250
+ console.log('✅ [BACKGROUND] Training Complete:', data);
251
+ setPersonaStatus('Running test inference');
252
+ setPersonaProgress(60);
253
+ });
254
+ backgroundSocket.on('inferenceCompleted', data => {
255
+ console.log('🔥 [SOCKET] Received inferenceCompleted event:', data);
256
+ console.log('🧠 [BACKGROUND] Inference Complete:', data);
257
+ setPersonaStatus('Uploading to S3');
258
+ setPersonaProgress(80);
259
+ });
260
+ backgroundSocket.on('modelStandby', data => {
261
+ console.log('🔥 [SOCKET] Received modelStandby event:', data);
262
+ console.log('🎉 [BACKGROUND] All Complete:', data);
263
+ setIsPersonaComplete(true);
264
+ setPersonaStatus('Complete!');
265
+ setPersonaProgress(100);
266
+ });
267
+ backgroundSocket.on('connect_error', error => {
268
+ console.error('❌ [BACKGROUND] Socket connection error:', error);
269
+ setBackgroundTrainingProgress('Connection failed');
270
+ setPersonaStatus('Connection error');
271
+ setPersonaProgress(0);
272
+ });
273
+
274
+ // Store socket reference for later use
275
+ socketRef.current = backgroundSocket;
276
+
277
+ // Connect the socket to start background training
278
+ backgroundSocket.connect();
279
+ console.log('✅ [BACKGROUND] Background training initiated successfully');
280
+ } catch (error) {
281
+ console.error('❌ [BACKGROUND] Error starting background training:', error);
282
+ setBackgroundTrainingProgress('Failed to start training');
283
+ setPersonaStatus('Training failed');
284
+ setPersonaProgress(0);
285
+ }
286
+ }, [userInfo, username, user, connectedPlatforms]);
287
+
288
+ // EXACT same background training API call from UniversalOnboarding
289
+ const startBackgroundEnochTraining = async (socketId, authToken) => {
290
+ try {
291
+ console.log('🚀 [BACKGROUND] Starting background training with socketId:', socketId);
292
+ console.log('🔑 Using auth token:', `${authToken.substring(0, 20)}...`);
293
+
294
+ // Prepare background training data - EXACT same as UniversalOnboarding
295
+ const backgroundData = {
296
+ socketId,
297
+ username: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.username) || (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || username || 'mobile_user',
298
+ email: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.email) || null,
299
+ modelKey: null,
300
+ connectedPlatforms: [],
301
+ // No connected platforms for background training
302
+ platformConnections: {} // No platform connections for background training
303
+ // No encrypted PIN for background training
304
+ };
305
+ console.log('📤 Sending background training data to /mobile-training/enoch:', backgroundData);
306
+
307
+ // Use the new training function that includes YouTube migration check
308
+ const backgroundResult = await (0, _mobileTrainingService.startEnochTrainingWithYouTubeCheck)(backgroundData);
309
+ console.log('📡 Background training API response:', backgroundResult);
310
+
311
+ // Handle CONNECTIONS_REQUIRED scenario (pre-training validation)
312
+ if (backgroundResult.requiresConnections || backgroundResult.code === 'CONNECTIONS_REQUIRED') {
313
+ console.log('🔗 Connections required detected from background training');
314
+ setPersonaStatus('Connections required');
315
+ setHasError(true);
316
+ setBackgroundTrainingProgress('');
317
+ return;
318
+ }
319
+ if (backgroundResult.success) {
320
+ console.log('✅ [BACKGROUND] Training started successfully');
321
+ console.log('🔍 [BACKGROUND] Setting isBackgroundTrainingStarted to true');
322
+ setIsBackgroundTrainingStarted(true);
323
+ setBackgroundTrainingProgress('Training model...');
324
+ setPersonaStatus('Training model...');
325
+ setPersonaProgress(25);
326
+ console.log('🔍 [BACKGROUND] Background training state updated:', {
327
+ isBackgroundTrainingStarted: true,
328
+ backgroundSocketId: socketId
329
+ });
330
+ } else {
331
+ console.error('❌ Background training start failed:', backgroundResult.error);
332
+ setPersonaStatus(`Error: ${backgroundResult.error || 'Background training failed to start'}`);
333
+ setHasError(true);
334
+ setBackgroundTrainingProgress('');
335
+ throw new Error(backgroundResult.error || 'Background training failed to start');
336
+ }
337
+ } catch (error) {
338
+ console.error('❌ [BACKGROUND] Background training error:', error);
339
+ setPersonaStatus('Training failed to start');
340
+ setHasError(true);
341
+ setBackgroundTrainingProgress('');
342
+ throw error;
343
+ }
344
+ };
345
+
346
+ // EXACT same continue training function from UniversalOnboarding
347
+ const continueBackgroundTrainingWithPin = async userPin => {
348
+ try {
349
+ var _socketRef$current, _socketRef$current2;
350
+ console.log('🔐 [BACKGROUND] Continuing existing background training with PIN validation');
351
+ console.log('🔑 Using auth token:', `${userToken === null || userToken === void 0 ? void 0 : userToken.substring(0, 20)}...`);
352
+ if (!backgroundSocketId) {
353
+ throw new Error('No background training socket available');
354
+ }
355
+ const encryptedPin = await (0, _pinEncryptionService.getEncryptedPinForAPI)().catch(() => null);
356
+ if (!encryptedPin) {
357
+ console.warn('⚠️ No encrypted PIN available, continuing without PIN validation');
358
+ }
359
+ console.log('📤 [BACKGROUND] Sending PIN validation to continue training...');
360
+ setPersonaStatus('Validating PIN and continuing training');
361
+ setPersonaProgress(30);
362
+
363
+ // Check socket connection status after PIN submission
364
+ console.log('🔍 [SOCKET] Socket connection status after PIN:', {
365
+ socketId: backgroundSocketId,
366
+ isConnected: (_socketRef$current = socketRef.current) === null || _socketRef$current === void 0 ? void 0 : _socketRef$current.connected,
367
+ socketExists: !!socketRef.current,
368
+ socketId_current: (_socketRef$current2 = socketRef.current) === null || _socketRef$current2 === void 0 ? void 0 : _socketRef$current2.id
369
+ });
370
+ } catch (error) {
371
+ console.error('❌ [BACKGROUND] Failed to continue training with PIN:', error);
372
+ throw error;
373
+ }
374
+ };
375
+
376
+ // Cleanup socket on unmount
377
+ (0, _react.useEffect)(() => {
378
+ return () => {
379
+ if (socketRef.current) {
380
+ socketRef.current.disconnect();
381
+ }
382
+ };
383
+ }, []);
384
+
385
+ // Real platforms that can be connected (from UniversalOnboarding)
386
+ const platforms = [{
387
+ id: 'pinterest',
388
+ name: 'Pinterest',
389
+ icon: (0, _connectedAccountsService.getPlatformIcon)('pinterest'),
390
+ description: 'We analyze your pins, boards, and interests to understand your style and preferences.'
391
+ }, {
392
+ id: 'youtube',
393
+ name: 'YouTube',
394
+ icon: (0, _connectedAccountsService.getPlatformIcon)('youtube'),
395
+ description: 'We analyze your watch history, likes, and subscriptions to understand your interests.'
396
+ }, {
397
+ id: 'linkedin',
398
+ name: 'LinkedIn',
399
+ icon: (0, _connectedAccountsService.getPlatformIcon)('linkedin'),
400
+ description: 'We analyze your professional network and career interests.'
401
+ }, {
402
+ id: 'reddit',
403
+ name: 'Reddit',
404
+ icon: (0, _connectedAccountsService.getPlatformIcon)('reddit'),
405
+ description: 'We analyze your posts and comments to understand your interests.'
406
+ }, {
407
+ id: 'gmail',
408
+ name: 'Gmail',
409
+ icon: (0, _connectedAccountsService.getPlatformIcon)('gmail'),
410
+ description: 'We analyze your email patterns to understand your communication style.'
411
+ }];
412
+ const handlePlatformToggle = async (platformId, enabled) => {
413
+ console.log(`🔄 [PLATFORM TOGGLE] ${platformId} - enabled: ${enabled}, username: "${username}", user:`, user);
414
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
415
+ try {
416
+ if (enabled) {
417
+ // Ensure we have a valid username before proceeding
418
+ let validUsername = username;
419
+ if (!validUsername || validUsername.trim() === '') {
420
+ console.log('⚠️ [PLATFORM TOGGLE] No username available, generating one...');
421
+
422
+ // Try to get stored username first
423
+ const storedUsername = await _asyncStorage.default.getItem('onairos_username');
424
+ if (storedUsername) {
425
+ validUsername = storedUsername;
426
+ setUsername(validUsername);
427
+ } else {
428
+ var _user$email3;
429
+ // Generate username from user data or fallback
430
+ validUsername = (user === null || user === void 0 || (_user$email3 = user.email) === null || _user$email3 === void 0 ? void 0 : _user$email3.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || `mobile_user_${Math.floor(Math.random() * 10000)}`;
431
+ setUsername(validUsername);
432
+ await _asyncStorage.default.setItem('onairos_username', validUsername);
433
+ }
434
+ console.log(`📝 [PLATFORM TOGGLE] Using username: "${validUsername}"`);
435
+ }
436
+
437
+ // Check if the platform has a native SDK
438
+ if ((0, _platformAuthService.hasNativeSDK)(platformId)) {
439
+ console.log(`🔧 [PLATFORM TOGGLE] ${platformId} has native SDK`);
440
+ // Use native SDK authentication (YouTube)
441
+ setCurrentPlatform(platformId);
442
+ setConnectionStatuses(prev => ({
443
+ ...prev,
444
+ [platformId]: 'connecting'
445
+ }));
446
+ const success = await (0, _platformAuthService.initiateNativeAuth)(platformId, validUsername);
447
+ if (success) {
448
+ const newConnected = new Set(connectedPlatforms);
449
+ newConnected.add(platformId);
450
+ setConnectedPlatforms(newConnected);
451
+ setConnectionStatuses(prev => ({
452
+ ...prev,
453
+ [platformId]: 'connected'
454
+ }));
455
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
456
+ } else {
457
+ setConnectionStatuses(prev => ({
458
+ ...prev,
459
+ [platformId]: 'error'
460
+ }));
461
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
462
+ }
463
+ } else {
464
+ console.log(`🌐 [PLATFORM TOGGLE] ${platformId} using OAuth WebView with username: "${validUsername}"`);
465
+ // For platforms like Pinterest, use OAuth WebView
466
+ setCurrentPlatform(platformId);
467
+ setConnectionStatuses(prev => ({
468
+ ...prev,
469
+ [platformId]: 'connecting'
470
+ }));
471
+ console.log(`🚀 [PLATFORM TOGGLE] Calling initiateOAuth for ${platformId}...`);
472
+ const oauthUrl = await (0, _platformAuthService.initiateOAuth)(platformId, validUsername);
473
+ console.log(`📡 [PLATFORM TOGGLE] OAuth URL received for ${platformId}:`, oauthUrl);
474
+ if (oauthUrl) {
475
+ console.log(`✅ [PLATFORM TOGGLE] Setting OAuth URL and showing WebView for ${platformId}`);
476
+ setOauthUrl(oauthUrl);
477
+ setShowOAuthWebView(true);
478
+ } else {
479
+ console.log(`❌ [PLATFORM TOGGLE] No OAuth URL received for ${platformId}`);
480
+ setConnectionStatuses(prev => ({
481
+ ...prev,
482
+ [platformId]: 'error'
483
+ }));
484
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
485
+ }
486
+ }
487
+ } else {
488
+ // Disconnect the platform
489
+ await disconnectPlatform(platformId);
490
+ const newConnected = new Set(connectedPlatforms);
491
+ newConnected.delete(platformId);
492
+ setConnectedPlatforms(newConnected);
493
+ setConnectionStatuses(prev => ({
494
+ ...prev,
495
+ [platformId]: 'disconnected'
496
+ }));
497
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
498
+ }
499
+ } catch (error) {
500
+ console.error(`Error toggling platform ${platformId}:`, error);
501
+ setConnectionStatuses(prev => ({
502
+ ...prev,
503
+ [platformId]: 'error'
504
+ }));
505
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
506
+ }
507
+ };
508
+ const handleUpdate = () => {
509
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
510
+
511
+ // EXACT same logic as UniversalOnboarding handleProceed
512
+ console.log('🚀 [TRANSITION] Starting background training during connect → pin transition');
513
+ startBackgroundTraining().catch(error => {
514
+ console.error('❌ [TRANSITION] Background training failed during transition:', error);
515
+ // Continue to PIN screen even if training fails
516
+ });
517
+ setShowPinScreen(true);
518
+ };
519
+ const handleConsentAccept = () => {
520
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
521
+ if (onPinComplete) {
522
+ onPinComplete(createdPin);
523
+ } else {
524
+ onUpdate(Array.from(connectedPlatforms));
525
+ }
526
+ };
527
+ const handleConsentDecline = () => {
528
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
529
+ setShowConsentScreen(false);
530
+ };
531
+ const handleSkip = () => {
532
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
533
+ onSkip();
534
+ };
535
+ const handlePinComplete = async pin => {
536
+ setCreatedPin(pin);
537
+
538
+ // Store PIN temporarily for training component access (EXACT same as UniversalOnboarding)
539
+ (0, _pinStorageUtils.setTemporaryPin)(pin);
540
+ console.log('🔐 [PIN SUBMIT] PIN submitted, checking for background training...');
541
+ console.log('🔍 [PIN SUBMIT] Background training state:', {
542
+ isBackgroundTrainingStarted,
543
+ backgroundSocketId,
544
+ hasBackgroundSocket: !!backgroundSocketId,
545
+ userToken: !!userToken,
546
+ userInfo: !!userInfo
547
+ });
548
+
549
+ // EXACT same logic as UniversalOnboarding handlePinSubmit
550
+ if (isBackgroundTrainingStarted && backgroundSocketId) {
551
+ console.log('✅ [PIN SUBMIT] Background training detected, continuing with PIN validation...');
552
+
553
+ // Continue with existing training by sending PIN validation
554
+ try {
555
+ await continueBackgroundTrainingWithPin(pin);
556
+ setShowPinScreen(false);
557
+ setShowLoadingScreen(true); // Move to loading screen to show training progress
558
+ } catch (error) {
559
+ console.error('❌ [PIN SUBMIT] Failed to continue background training:', error);
560
+ setPersonaStatus('Error: Failed to continue training');
561
+ setHasError(true);
562
+ setShowPinScreen(false);
563
+ setShowLoadingScreen(true);
564
+ }
565
+ } else {
566
+ console.log('ℹ️ [PIN SUBMIT] No background training detected');
567
+ setPersonaStatus('No training in progress. Please restart the flow.');
568
+ setHasError(true);
569
+ setShowPinScreen(false);
570
+ setShowLoadingScreen(true);
571
+ }
572
+ console.log('🔐 [PIN SUBMIT] PIN stored securely, moved to loading screen');
573
+ };
574
+ const handleLoadingComplete = () => {
575
+ setShowLoadingScreen(false);
576
+ setShowConsentScreen(true);
577
+ };
578
+ const handleOAuthSuccess = code => {
579
+ console.log(`OAuth success for ${currentPlatform} with code:`, code);
580
+ if (currentPlatform) {
581
+ // Update connected platforms
582
+ const newConnected = new Set(connectedPlatforms);
583
+ newConnected.add(currentPlatform);
584
+ setConnectedPlatforms(newConnected);
585
+ setConnectionStatuses(prev => ({
586
+ ...prev,
587
+ [currentPlatform]: 'connected'
588
+ }));
589
+ (0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
590
+ }
591
+
592
+ // Close the OAuth window
593
+ setShowOAuthWebView(false);
594
+ setOauthUrl('');
595
+ setCurrentPlatform('');
596
+ };
597
+ const handleOAuthClose = () => {
598
+ setShowOAuthWebView(false);
599
+ setOauthUrl('');
600
+ if (currentPlatform) {
601
+ setConnectionStatuses(prev => ({
602
+ ...prev,
603
+ [currentPlatform]: 'disconnected'
604
+ }));
605
+ }
606
+ setCurrentPlatform('');
607
+ };
608
+ const handlePinBack = () => {
609
+ setShowPinScreen(false);
610
+ };
611
+ const handleReviewerBypass = () => {
612
+ console.log('🔍 Reviewer bypass activated in new UI');
613
+ if (onReviewerBypass) {
614
+ onReviewerBypass();
615
+ }
616
+ };
617
+ const handleSkipLongPress = () => {
618
+ console.log('🔍 Skip button long press detected, starting reviewer bypass timer');
619
+
620
+ // Start a timer for haptic feedback at 2 seconds
621
+ const hapticTimer = setTimeout(() => {
622
+ // Provide haptic feedback
623
+ _reactNative.Vibration.vibrate(100);
624
+ }, 2000);
625
+
626
+ // Start a timer for 4 seconds for the bypass
627
+ const bypassTimer = setTimeout(() => {
628
+ handleReviewerBypass();
629
+ }, 4000);
630
+
631
+ // Store the timer
632
+ setLongPressTimer(bypassTimer);
633
+ };
634
+ const handleSkipPressOut = () => {
635
+ console.log('🔍 Skip button press released, clearing reviewer bypass timer');
636
+
637
+ // Clear the timer if the press is released before 4 seconds
638
+ if (longPressTimer) {
639
+ clearTimeout(longPressTimer);
640
+ setLongPressTimer(null);
641
+ }
642
+ };
643
+
644
+ // Calculate persona level based on connected platforms (1-5)
645
+ const personaLevel = Math.min(5, Math.max(1, connectedPlatforms.size + 1));
646
+
647
+ // Show PIN screen if triggered
648
+ if (showPinScreen) {
649
+ return /*#__PURE__*/_react.default.createElement(_PinCreationScreen.default, {
650
+ visible: showPinScreen,
651
+ onComplete: handlePinComplete,
652
+ onBack: handlePinBack
653
+ });
654
+ }
655
+
656
+ // Show loading screen if triggered
657
+ if (showLoadingScreen) {
658
+ return /*#__PURE__*/_react.default.createElement(_PersonaLoadingScreen.default, {
659
+ visible: showLoadingScreen,
660
+ onComplete: handleLoadingComplete,
661
+ progress: personaProgress,
662
+ status: personaStatus
663
+ });
664
+ }
665
+
666
+ // Show OAuth WebView if triggered
667
+ if (showOAuthWebView && oauthUrl) {
668
+ return /*#__PURE__*/_react.default.createElement(_OAuthWebView.OAuthWebView, {
669
+ url: oauthUrl,
670
+ platform: currentPlatform,
671
+ onClose: handleOAuthClose,
672
+ onSuccess: handleOAuthSuccess,
673
+ onComplete: handleOAuthClose
674
+ });
675
+ }
676
+
677
+ // Show consent screen if triggered
678
+ if (showConsentScreen) {
679
+ return /*#__PURE__*/_react.default.createElement(_PersonalizationConsentScreen.default, {
680
+ visible: showConsentScreen,
681
+ onAccept: handleConsentAccept,
682
+ onDecline: handleConsentDecline
683
+ });
684
+ }
685
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
686
+ style: styles.container
687
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
688
+ style: styles.fixedHeaderSection
689
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
690
+ style: styles.headingContainer
691
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
692
+ style: styles.title
693
+ }, "Connect platforms"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
694
+ style: styles.subtitle
695
+ }, "More connections, smarter personalization.")), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
696
+ style: styles.personaContainer
697
+ }, /*#__PURE__*/_react.default.createElement(_PersonaImage.default, {
698
+ level: personaLevel,
699
+ style: styles.largePersona
700
+ }))), /*#__PURE__*/_react.default.createElement(_reactNative.KeyboardAvoidingView, {
701
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height',
702
+ style: styles.scrollableSection
703
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
704
+ style: styles.scrollView,
705
+ showsVerticalScrollIndicator: false,
706
+ contentContainerStyle: styles.scrollContent
707
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
708
+ style: styles.platformsContainer
709
+ }, platforms.map((platform, index) => /*#__PURE__*/_react.default.createElement(_PlatformToggle.default, {
710
+ key: platform.id,
711
+ platform: platform,
712
+ isEnabled: connectedPlatforms.has(platform.id),
713
+ onToggle: handlePlatformToggle,
714
+ fullWidth: true,
715
+ isLast: index === platforms.length - 1,
716
+ customIconSize: platform.id === 'youtube' ? 36 : undefined
717
+ }))))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
718
+ style: styles.bottomContainer
719
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
720
+ style: styles.buttonContainer
721
+ }, /*#__PURE__*/_react.default.createElement(_PrimaryButton.default, {
722
+ label: "Continue",
723
+ onPress: handleUpdate,
724
+ disabled: loading || connectedPlatforms.size === 0 || isConnecting,
725
+ loading: loading || isConnecting
726
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
727
+ style: styles.skipContainer
728
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
729
+ onPress: handleSkip,
730
+ onLongPress: handleSkipLongPress,
731
+ onPressOut: handleSkipPressOut,
732
+ activeOpacity: 0.7
733
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
734
+ style: styles.skipButton
735
+ }, "Skip")))));
736
+ };
737
+ const styles = _reactNative.StyleSheet.create({
738
+ container: {
739
+ flex: 1,
740
+ backgroundColor: _theme.COLORS.surface
741
+ },
742
+ fixedHeaderSection: {
743
+ paddingTop: 8,
744
+ paddingHorizontal: 0,
745
+ backgroundColor: _theme.COLORS.surface,
746
+ maxHeight: '50%',
747
+ // Limit fixed section to 50% of screen
748
+ overflow: 'hidden' // Hide any overflow
749
+ },
750
+ scrollableSection: {
751
+ flex: 1
752
+ },
753
+ scrollView: {
754
+ flex: 1
755
+ },
756
+ scrollContent: {
757
+ paddingTop: 0 // Ensure scroll starts at the top
758
+ },
759
+ headingContainer: {
760
+ width: '100%',
761
+ marginBottom: 0,
762
+ // Remove margin to make persona very close
763
+ paddingHorizontal: 0
764
+ },
765
+ title: {
766
+ fontFamily: 'IBM Plex Sans',
767
+ fontWeight: '700',
768
+ fontSize: 24,
769
+ lineHeight: 32,
770
+ color: _theme.COLORS.grey800,
771
+ textAlign: 'left',
772
+ marginBottom: 2
773
+ },
774
+ subtitle: {
775
+ fontFamily: 'Inter',
776
+ fontWeight: '400',
777
+ fontSize: 16,
778
+ lineHeight: 24,
779
+ color: _theme.COLORS.grey600,
780
+ textAlign: 'left',
781
+ marginBottom: 0 // Remove bottom margin to bring persona closer
782
+ },
783
+ personaContainer: {
784
+ alignItems: 'center',
785
+ marginTop: -110,
786
+ // Negative margin to pull persona up into header space
787
+ marginBottom: 0 // Remove bottom margin
788
+ },
789
+ largePersona: {
790
+ width: 650,
791
+ // Make it bigger than default 200x200
792
+ height: 650,
793
+ marginTop: -20,
794
+ // Additional negative margin to override internal spacing
795
+ marginBottom: -20 // Pull content below up as well
796
+ },
797
+ platformsContainer: {
798
+ paddingHorizontal: 0,
799
+ paddingTop: 8,
800
+ // Reduced from 20 to minimize space at top of scroll area
801
+ paddingBottom: 120 // More space to account for fixed buttons at bottom
802
+ },
803
+ bottomContainer: {
804
+ position: 'absolute',
805
+ bottom: -40,
806
+ // Position 40px from bottom of screen
807
+ left: 0,
808
+ right: 0,
809
+ paddingHorizontal: 0,
810
+ paddingBottom: _theme.SPACING.xl,
811
+ backgroundColor: _theme.COLORS.surface
812
+ },
813
+ buttonContainer: {
814
+ marginBottom: 16
815
+ },
816
+ skipContainer: {
817
+ alignItems: 'center'
818
+ },
819
+ skipButton: {
820
+ fontSize: 16,
821
+ fontFamily: 'Inter',
822
+ fontWeight: '500',
823
+ color: _theme.COLORS.grey600,
824
+ textAlign: 'center'
825
+ }
826
+ });
827
+ var _default = exports.default = PlatformConnectorsStep;
828
+ //# sourceMappingURL=PlatformConnectorsStep.js.map