@onairos/react-native 3.1.12 → 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 (604) 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/apiKeyService.js +8 -9
  138. package/lib/commonjs/services/apiKeyService.js.map +1 -1
  139. package/lib/commonjs/services/authService.js +935 -0
  140. package/lib/commonjs/services/authService.js.map +1 -0
  141. package/lib/commonjs/services/biometricPinService.js +184 -0
  142. package/lib/commonjs/services/biometricPinService.js.map +1 -0
  143. package/lib/commonjs/services/connectedAccountsService.js +268 -0
  144. package/lib/commonjs/services/connectedAccountsService.js.map +1 -0
  145. package/lib/commonjs/services/googleAuthService.js +268 -0
  146. package/lib/commonjs/services/googleAuthService.js.map +1 -0
  147. package/lib/commonjs/services/imageCompressionService.js +260 -0
  148. package/lib/commonjs/services/imageCompressionService.js.map +1 -0
  149. package/lib/commonjs/services/jwtStorageService.js +256 -0
  150. package/lib/commonjs/services/jwtStorageService.js.map +1 -0
  151. package/lib/commonjs/services/mobileTrainingService.js +185 -0
  152. package/lib/commonjs/services/mobileTrainingService.js.map +1 -0
  153. package/lib/commonjs/services/pinEncryptionService.js +84 -0
  154. package/lib/commonjs/services/pinEncryptionService.js.map +1 -0
  155. package/lib/commonjs/services/pinStorageUtils.js +105 -0
  156. package/lib/commonjs/services/pinStorageUtils.js.map +1 -0
  157. package/lib/commonjs/services/platformAuthService.js +956 -722
  158. package/lib/commonjs/services/platformAuthService.js.map +1 -1
  159. package/lib/commonjs/services/storageService.js +404 -0
  160. package/lib/commonjs/services/storageService.js.map +1 -0
  161. package/lib/commonjs/services/trainingApiHelpers.js +73 -0
  162. package/lib/commonjs/services/trainingApiHelpers.js.map +1 -0
  163. package/lib/commonjs/services/userConnectionsService.js +486 -0
  164. package/lib/commonjs/services/userConnectionsService.js.map +1 -0
  165. package/lib/commonjs/services/youtubeMigrationService.js +415 -0
  166. package/lib/commonjs/services/youtubeMigrationService.js.map +1 -0
  167. package/lib/commonjs/theme/index.js +249 -0
  168. package/lib/commonjs/theme/index.js.map +1 -0
  169. package/lib/commonjs/utils/eventUtils.js +288 -0
  170. package/lib/commonjs/utils/eventUtils.js.map +1 -0
  171. package/lib/commonjs/utils/haptics.js +66 -0
  172. package/lib/commonjs/utils/haptics.js.map +1 -0
  173. package/lib/commonjs/utils/imagePreloader.js +6 -0
  174. package/lib/commonjs/utils/imagePreloader.js.map +1 -0
  175. package/lib/module/api/index.js +72 -0
  176. package/lib/module/api/index.js.map +1 -1
  177. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  178. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  179. package/lib/module/assets/icons/Facebookicon.png +0 -0
  180. package/lib/module/assets/icons/Gmail.png +0 -0
  181. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  182. package/lib/module/assets/icons/Redditicon.png +0 -0
  183. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  184. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  185. package/lib/module/assets/icons/farcaster.png +0 -0
  186. package/lib/module/assets/icons/instagram.png +0 -0
  187. package/lib/module/assets/icons/pinterest.png +0 -0
  188. package/lib/module/assets/icons/swerv_logo.png +0 -0
  189. package/lib/module/assets/icons/twitter.jpg +0 -0
  190. package/lib/module/assets/images/Checkbox.svg +3 -0
  191. package/lib/module/assets/images/EnochE.svg +19 -0
  192. package/lib/module/assets/images/Enochicon1.png +0 -0
  193. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  194. package/lib/module/assets/images/Facebookicon.png +0 -0
  195. package/lib/module/assets/images/Gmail.png +0 -0
  196. package/lib/module/assets/images/Googlelogo.png +0 -0
  197. package/lib/module/assets/images/Linkedinicon.png +0 -0
  198. package/lib/module/assets/images/Onairoslogo.png +0 -0
  199. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  200. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  201. package/lib/module/assets/images/Redditicon.png +0 -0
  202. package/lib/module/assets/images/Userpreferences.svg +3 -0
  203. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  204. package/lib/module/assets/images/arrow.svg +20 -0
  205. package/lib/module/assets/images/basicproficon.svg +43 -0
  206. package/lib/module/assets/images/basicprofile.svg +3 -0
  207. package/lib/module/assets/images/checkmark.svg +4 -0
  208. package/lib/module/assets/images/contentanalysis.svg +3 -0
  209. package/lib/module/assets/images/contenticon.svg +23 -0
  210. package/lib/module/assets/images/persona1.png +0 -0
  211. package/lib/module/assets/images/persona2.png +0 -0
  212. package/lib/module/assets/images/persona3.png +0 -0
  213. package/lib/module/assets/images/persona4.png +0 -0
  214. package/lib/module/assets/images/persona5.png +0 -0
  215. package/lib/module/assets/images/personalityicon.svg +18 -0
  216. package/lib/module/assets/images/x-close.svg +3 -0
  217. package/lib/module/components/BodyText.js +20 -0
  218. package/lib/module/components/BodyText.js.map +1 -0
  219. package/lib/module/components/BrandMark.js +37 -0
  220. package/lib/module/components/BrandMark.js.map +1 -0
  221. package/lib/module/components/CodeInput.js +23 -0
  222. package/lib/module/components/CodeInput.js.map +1 -0
  223. package/lib/module/components/EmailInput.js +23 -0
  224. package/lib/module/components/EmailInput.js.map +1 -0
  225. package/lib/module/components/ExistingUserDataConfirmation.js +465 -0
  226. package/lib/module/components/ExistingUserDataConfirmation.js.map +1 -0
  227. package/lib/module/components/GoogleButton.js +48 -0
  228. package/lib/module/components/GoogleButton.js.map +1 -0
  229. package/lib/module/components/HeadingGroup.js +36 -0
  230. package/lib/module/components/HeadingGroup.js.map +1 -0
  231. package/lib/module/components/ModalHeader.js +92 -0
  232. package/lib/module/components/ModalHeader.js.map +1 -0
  233. package/lib/module/components/ModalSheet.js +34 -0
  234. package/lib/module/components/ModalSheet.js.map +1 -0
  235. package/lib/module/components/Onairos.js +1 -3
  236. package/lib/module/components/Onairos.js.map +1 -1
  237. package/lib/module/components/OnairosButton.js +172 -192
  238. package/lib/module/components/OnairosButton.js.map +1 -1
  239. package/lib/module/components/OnairosSignInButton.js +160 -0
  240. package/lib/module/components/OnairosSignInButton.js.map +1 -0
  241. package/lib/module/components/Overlay.js +5 -5
  242. package/lib/module/components/Overlay.js.map +1 -1
  243. package/lib/module/components/PersonaImage.js +53 -0
  244. package/lib/module/components/PersonaImage.js.map +1 -0
  245. package/lib/module/components/PersonaLoadingScreen.js +148 -0
  246. package/lib/module/components/PersonaLoadingScreen.js.map +1 -0
  247. package/lib/module/components/PersonalizationConsentScreen.js +309 -0
  248. package/lib/module/components/PersonalizationConsentScreen.js.map +1 -0
  249. package/lib/module/components/PinCreationScreen.js +386 -0
  250. package/lib/module/components/PinCreationScreen.js.map +1 -0
  251. package/lib/module/components/PinInput.js +283 -120
  252. package/lib/module/components/PinInput.js.map +1 -1
  253. package/lib/module/components/PlatformConnectorsStep.js +820 -0
  254. package/lib/module/components/PlatformConnectorsStep.js.map +1 -0
  255. package/lib/module/components/PlatformToggle.js +173 -0
  256. package/lib/module/components/PlatformToggle.js.map +1 -0
  257. package/lib/module/components/PrimaryButton.js +172 -0
  258. package/lib/module/components/PrimaryButton.js.map +1 -0
  259. package/lib/module/components/SignInMatchAnimation.js +189 -0
  260. package/lib/module/components/SignInMatchAnimation.js.map +1 -0
  261. package/lib/module/components/SignInStep.js +171 -0
  262. package/lib/module/components/SignInStep.js.map +1 -0
  263. package/lib/module/components/TrainingModal.js +809 -565
  264. package/lib/module/components/TrainingModal.js.map +1 -1
  265. package/lib/module/components/UniversalOnboarding.js +2307 -1284
  266. package/lib/module/components/UniversalOnboarding.js.map +1 -1
  267. package/lib/module/components/VerificationStep.js +146 -0
  268. package/lib/module/components/VerificationStep.js.map +1 -0
  269. package/lib/module/components/WelcomeScreen.js +378 -0
  270. package/lib/module/components/WelcomeScreen.js.map +1 -0
  271. package/lib/module/components/icons/Basicproficon.js +30 -0
  272. package/lib/module/components/icons/Basicproficon.js.map +1 -0
  273. package/lib/module/components/icons/Basicprofile.js +14 -0
  274. package/lib/module/components/icons/Basicprofile.js.map +1 -0
  275. package/lib/module/components/icons/Checkbox.js +14 -0
  276. package/lib/module/components/icons/Checkbox.js.map +1 -0
  277. package/lib/module/components/icons/Checkmark.js +20 -0
  278. package/lib/module/components/icons/Checkmark.js.map +1 -0
  279. package/lib/module/components/icons/Contentanalysis.js +14 -0
  280. package/lib/module/components/icons/Contentanalysis.js.map +1 -0
  281. package/lib/module/components/icons/Contenticon.js +32 -0
  282. package/lib/module/components/icons/Contenticon.js.map +1 -0
  283. package/lib/module/components/icons/EnochE.js +34 -0
  284. package/lib/module/components/icons/EnochE.js.map +1 -0
  285. package/lib/module/components/icons/Personalityicon.js +23 -0
  286. package/lib/module/components/icons/Personalityicon.js.map +1 -0
  287. package/lib/module/components/icons/Personalityprofile.js +14 -0
  288. package/lib/module/components/icons/Personalityprofile.js.map +1 -0
  289. package/lib/module/components/icons/Personalitytraits.js +14 -0
  290. package/lib/module/components/icons/Personalitytraits.js.map +1 -0
  291. package/lib/module/components/icons/Userpreferences.js +14 -0
  292. package/lib/module/components/icons/Userpreferences.js.map +1 -0
  293. package/lib/module/components/icons/index.js +13 -0
  294. package/lib/module/components/icons/index.js.map +1 -0
  295. package/lib/module/components/onboarding/OAuthWebView.js +136 -744
  296. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
  297. package/lib/module/config/api.js +26 -0
  298. package/lib/module/config/api.js.map +1 -0
  299. package/lib/module/context/AuthContext.js +335 -0
  300. package/lib/module/context/AuthContext.js.map +1 -0
  301. package/lib/module/hooks/useConnectedAccounts.js +106 -0
  302. package/lib/module/hooks/useConnectedAccounts.js.map +1 -0
  303. package/lib/module/hooks/useConnections.js +119 -125
  304. package/lib/module/hooks/useConnections.js.map +1 -1
  305. package/lib/module/hooks/useUserConnections.js +140 -0
  306. package/lib/module/hooks/useUserConnections.js.map +1 -0
  307. package/lib/module/index.js +51 -15
  308. package/lib/module/index.js.map +1 -1
  309. package/lib/module/services/apiClient.js +298 -0
  310. package/lib/module/services/apiClient.js.map +1 -0
  311. package/lib/module/services/apiKeyService.js +8 -9
  312. package/lib/module/services/apiKeyService.js.map +1 -1
  313. package/lib/module/services/authService.js +905 -0
  314. package/lib/module/services/authService.js.map +1 -0
  315. package/lib/module/services/biometricPinService.js +173 -0
  316. package/lib/module/services/biometricPinService.js.map +1 -0
  317. package/lib/module/services/connectedAccountsService.js +255 -0
  318. package/lib/module/services/connectedAccountsService.js.map +1 -0
  319. package/lib/module/services/googleAuthService.js +258 -0
  320. package/lib/module/services/googleAuthService.js.map +1 -0
  321. package/lib/module/services/imageCompressionService.js +250 -0
  322. package/lib/module/services/imageCompressionService.js.map +1 -0
  323. package/lib/module/services/jwtStorageService.js +239 -0
  324. package/lib/module/services/jwtStorageService.js.map +1 -0
  325. package/lib/module/services/mobileTrainingService.js +172 -0
  326. package/lib/module/services/mobileTrainingService.js.map +1 -0
  327. package/lib/module/services/pinEncryptionService.js +75 -0
  328. package/lib/module/services/pinEncryptionService.js.map +1 -0
  329. package/lib/module/services/pinStorageUtils.js +93 -0
  330. package/lib/module/services/pinStorageUtils.js.map +1 -0
  331. package/lib/module/services/platformAuthService.js +943 -704
  332. package/lib/module/services/platformAuthService.js.map +1 -1
  333. package/lib/module/services/storageService.js +383 -0
  334. package/lib/module/services/storageService.js.map +1 -0
  335. package/lib/module/services/trainingApiHelpers.js +67 -0
  336. package/lib/module/services/trainingApiHelpers.js.map +1 -0
  337. package/lib/module/services/userConnectionsService.js +476 -0
  338. package/lib/module/services/userConnectionsService.js.map +1 -0
  339. package/lib/module/services/youtubeMigrationService.js +404 -0
  340. package/lib/module/services/youtubeMigrationService.js.map +1 -0
  341. package/lib/module/theme/index.js +244 -0
  342. package/lib/module/theme/index.js.map +1 -0
  343. package/lib/module/utils/eventUtils.js +270 -0
  344. package/lib/module/utils/eventUtils.js.map +1 -0
  345. package/lib/module/utils/haptics.js +59 -0
  346. package/lib/module/utils/haptics.js.map +1 -0
  347. package/lib/module/utils/imagePreloader.js +3 -0
  348. package/lib/module/utils/imagePreloader.js.map +1 -0
  349. package/lib/typescript/api/index.d.ts +8 -0
  350. package/lib/typescript/api/index.d.ts.map +1 -1
  351. package/lib/typescript/components/BodyText.d.ts +10 -0
  352. package/lib/typescript/components/BodyText.d.ts.map +1 -0
  353. package/lib/typescript/components/BrandMark.d.ts +11 -0
  354. package/lib/typescript/components/BrandMark.d.ts.map +1 -0
  355. package/lib/typescript/components/CodeInput.d.ts +10 -0
  356. package/lib/typescript/components/CodeInput.d.ts.map +1 -0
  357. package/lib/typescript/components/EmailInput.d.ts +8 -0
  358. package/lib/typescript/components/EmailInput.d.ts.map +1 -0
  359. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts +12 -0
  360. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts.map +1 -0
  361. package/lib/typescript/components/GoogleButton.d.ts +11 -0
  362. package/lib/typescript/components/GoogleButton.d.ts.map +1 -0
  363. package/lib/typescript/components/HeadingGroup.d.ts +11 -0
  364. package/lib/typescript/components/HeadingGroup.d.ts.map +1 -0
  365. package/lib/typescript/components/ModalHeader.d.ts +11 -0
  366. package/lib/typescript/components/ModalHeader.d.ts.map +1 -0
  367. package/lib/typescript/components/ModalSheet.d.ts +13 -0
  368. package/lib/typescript/components/ModalSheet.d.ts.map +1 -0
  369. package/lib/typescript/components/Onairos.d.ts.map +1 -1
  370. package/lib/typescript/components/OnairosButton.d.ts +29 -4
  371. package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
  372. package/lib/typescript/components/OnairosSignInButton.d.ts +14 -0
  373. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -0
  374. package/lib/typescript/components/PersonaImage.d.ts +8 -0
  375. package/lib/typescript/components/PersonaImage.d.ts.map +1 -0
  376. package/lib/typescript/components/PersonaLoadingScreen.d.ts +10 -0
  377. package/lib/typescript/components/PersonaLoadingScreen.d.ts.map +1 -0
  378. package/lib/typescript/components/PersonalizationConsentScreen.d.ts +10 -0
  379. package/lib/typescript/components/PersonalizationConsentScreen.d.ts.map +1 -0
  380. package/lib/typescript/components/PinCreationScreen.d.ts +10 -0
  381. package/lib/typescript/components/PinCreationScreen.d.ts.map +1 -0
  382. package/lib/typescript/components/PinInput.d.ts +11 -1
  383. package/lib/typescript/components/PinInput.d.ts.map +1 -1
  384. package/lib/typescript/components/PlatformConnectorsStep.d.ts +11 -0
  385. package/lib/typescript/components/PlatformConnectorsStep.d.ts.map +1 -0
  386. package/lib/typescript/components/PlatformToggle.d.ts +20 -0
  387. package/lib/typescript/components/PlatformToggle.d.ts.map +1 -0
  388. package/lib/typescript/components/PrimaryButton.d.ts +22 -0
  389. package/lib/typescript/components/PrimaryButton.d.ts.map +1 -0
  390. package/lib/typescript/components/SignInMatchAnimation.d.ts +9 -0
  391. package/lib/typescript/components/SignInMatchAnimation.d.ts.map +1 -0
  392. package/lib/typescript/components/SignInStep.d.ts +12 -0
  393. package/lib/typescript/components/SignInStep.d.ts.map +1 -0
  394. package/lib/typescript/components/TrainingModal.d.ts +12 -1
  395. package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
  396. package/lib/typescript/components/UniversalOnboarding.d.ts +14 -1
  397. package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
  398. package/lib/typescript/components/VerificationStep.d.ts +13 -0
  399. package/lib/typescript/components/VerificationStep.d.ts.map +1 -0
  400. package/lib/typescript/components/WelcomeScreen.d.ts +9 -0
  401. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -0
  402. package/lib/typescript/components/icons/Basicproficon.d.ts +5 -0
  403. package/lib/typescript/components/icons/Basicproficon.d.ts.map +1 -0
  404. package/lib/typescript/components/icons/Basicprofile.d.ts +5 -0
  405. package/lib/typescript/components/icons/Basicprofile.d.ts.map +1 -0
  406. package/lib/typescript/components/icons/Checkbox.d.ts +5 -0
  407. package/lib/typescript/components/icons/Checkbox.d.ts.map +1 -0
  408. package/lib/typescript/components/icons/Checkmark.d.ts +5 -0
  409. package/lib/typescript/components/icons/Checkmark.d.ts.map +1 -0
  410. package/lib/typescript/components/icons/Contentanalysis.d.ts +5 -0
  411. package/lib/typescript/components/icons/Contentanalysis.d.ts.map +1 -0
  412. package/lib/typescript/components/icons/Contenticon.d.ts +5 -0
  413. package/lib/typescript/components/icons/Contenticon.d.ts.map +1 -0
  414. package/lib/typescript/components/icons/EnochE.d.ts +5 -0
  415. package/lib/typescript/components/icons/EnochE.d.ts.map +1 -0
  416. package/lib/typescript/components/icons/Personalityicon.d.ts +5 -0
  417. package/lib/typescript/components/icons/Personalityicon.d.ts.map +1 -0
  418. package/lib/typescript/components/icons/Personalityprofile.d.ts +5 -0
  419. package/lib/typescript/components/icons/Personalityprofile.d.ts.map +1 -0
  420. package/lib/typescript/components/icons/Personalitytraits.d.ts +5 -0
  421. package/lib/typescript/components/icons/Personalitytraits.d.ts.map +1 -0
  422. package/lib/typescript/components/icons/Userpreferences.d.ts +5 -0
  423. package/lib/typescript/components/icons/Userpreferences.d.ts.map +1 -0
  424. package/lib/typescript/components/icons/index.d.ts +12 -0
  425. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  426. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
  427. package/lib/typescript/config/api.d.ts +24 -0
  428. package/lib/typescript/config/api.d.ts.map +1 -0
  429. package/lib/typescript/context/AuthContext.d.ts +34 -0
  430. package/lib/typescript/context/AuthContext.d.ts.map +1 -0
  431. package/lib/typescript/hooks/useConnectedAccounts.d.ts +11 -0
  432. package/lib/typescript/hooks/useConnectedAccounts.d.ts.map +1 -0
  433. package/lib/typescript/hooks/useConnections.d.ts +10 -5
  434. package/lib/typescript/hooks/useConnections.d.ts.map +1 -1
  435. package/lib/typescript/hooks/useUserConnections.d.ts +12 -0
  436. package/lib/typescript/hooks/useUserConnections.d.ts.map +1 -0
  437. package/lib/typescript/index.d.ts +24 -6
  438. package/lib/typescript/index.d.ts.map +1 -1
  439. package/lib/typescript/services/apiClient.d.ts +91 -0
  440. package/lib/typescript/services/apiClient.d.ts.map +1 -0
  441. package/lib/typescript/services/apiKeyService.d.ts.map +1 -1
  442. package/lib/typescript/services/authService.d.ts +216 -0
  443. package/lib/typescript/services/authService.d.ts.map +1 -0
  444. package/lib/typescript/services/biometricPinService.d.ts +29 -0
  445. package/lib/typescript/services/biometricPinService.d.ts.map +1 -0
  446. package/lib/typescript/services/connectedAccountsService.d.ts +56 -0
  447. package/lib/typescript/services/connectedAccountsService.d.ts.map +1 -0
  448. package/lib/typescript/services/googleAuthService.d.ts +63 -0
  449. package/lib/typescript/services/googleAuthService.d.ts.map +1 -0
  450. package/lib/typescript/services/imageCompressionService.d.ts +37 -0
  451. package/lib/typescript/services/imageCompressionService.d.ts.map +1 -0
  452. package/lib/typescript/services/jwtStorageService.d.ts +86 -0
  453. package/lib/typescript/services/jwtStorageService.d.ts.map +1 -0
  454. package/lib/typescript/services/mobileTrainingService.d.ts +45 -0
  455. package/lib/typescript/services/mobileTrainingService.d.ts.map +1 -0
  456. package/lib/typescript/services/pinEncryptionService.d.ts +17 -0
  457. package/lib/typescript/services/pinEncryptionService.d.ts.map +1 -0
  458. package/lib/typescript/services/pinStorageUtils.d.ts +25 -0
  459. package/lib/typescript/services/pinStorageUtils.d.ts.map +1 -0
  460. package/lib/typescript/services/platformAuthService.d.ts +34 -109
  461. package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
  462. package/lib/typescript/services/storageService.d.ts +128 -0
  463. package/lib/typescript/services/storageService.d.ts.map +1 -0
  464. package/lib/typescript/services/trainingApiHelpers.d.ts +38 -0
  465. package/lib/typescript/services/trainingApiHelpers.d.ts.map +1 -0
  466. package/lib/typescript/services/userConnectionsService.d.ts +90 -0
  467. package/lib/typescript/services/userConnectionsService.d.ts.map +1 -0
  468. package/lib/typescript/services/youtubeMigrationService.d.ts +12 -0
  469. package/lib/typescript/services/youtubeMigrationService.d.ts.map +1 -0
  470. package/lib/typescript/theme/index.d.ts +416 -0
  471. package/lib/typescript/theme/index.d.ts.map +1 -0
  472. package/lib/typescript/types/index.d.ts +39 -0
  473. package/lib/typescript/types/index.d.ts.map +1 -1
  474. package/lib/typescript/utils/eventUtils.d.ts +108 -0
  475. package/lib/typescript/utils/eventUtils.d.ts.map +1 -0
  476. package/lib/typescript/utils/haptics.d.ts +11 -0
  477. package/lib/typescript/utils/haptics.d.ts.map +1 -0
  478. package/lib/typescript/utils/imagePreloader.d.ts +2 -0
  479. package/lib/typescript/utils/imagePreloader.d.ts.map +1 -0
  480. package/package.json +158 -145
  481. package/src/api/index.ts +41 -0
  482. package/src/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  483. package/src/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  484. package/src/assets/icons/Facebookicon.png +0 -0
  485. package/src/assets/icons/Gmail.png +0 -0
  486. package/src/assets/icons/Linkedinicon.png +0 -0
  487. package/src/assets/icons/Redditicon.png +0 -0
  488. package/src/assets/icons/YouTubeicon2.png +0 -0
  489. package/src/assets/icons/YouTubeicon3.png +0 -0
  490. package/src/assets/icons/farcaster.png +0 -0
  491. package/src/assets/icons/instagram.png +0 -0
  492. package/src/assets/icons/pinterest.png +0 -0
  493. package/src/assets/icons/swerv_logo.png +0 -0
  494. package/src/assets/icons/twitter.jpg +0 -0
  495. package/src/assets/images/Checkbox.svg +3 -0
  496. package/src/assets/images/EnochE.svg +19 -0
  497. package/src/assets/images/Enochicon1.png +0 -0
  498. package/src/assets/images/Face_ID_logo.png +0 -0
  499. package/src/assets/images/Facebookicon.png +0 -0
  500. package/src/assets/images/Gmail.png +0 -0
  501. package/src/assets/images/Googlelogo.png +0 -0
  502. package/src/assets/images/Linkedinicon.png +0 -0
  503. package/src/assets/images/Onairoslogo.png +0 -0
  504. package/src/assets/images/Personalityprofile.svg +3 -0
  505. package/src/assets/images/Personalitytraits.svg +3 -0
  506. package/src/assets/images/Redditicon.png +0 -0
  507. package/src/assets/images/Userpreferences.svg +3 -0
  508. package/src/assets/images/YouTubeicon3.png +0 -0
  509. package/src/assets/images/arrow.svg +20 -0
  510. package/src/assets/images/basicproficon.svg +43 -0
  511. package/src/assets/images/basicprofile.svg +3 -0
  512. package/src/assets/images/checkmark.svg +4 -0
  513. package/src/assets/images/contentanalysis.svg +3 -0
  514. package/src/assets/images/contenticon.svg +23 -0
  515. package/src/assets/images/persona1.png +0 -0
  516. package/src/assets/images/persona2.png +0 -0
  517. package/src/assets/images/persona3.png +0 -0
  518. package/src/assets/images/persona4.png +0 -0
  519. package/src/assets/images/persona5.png +0 -0
  520. package/src/assets/images/personalityicon.svg +18 -0
  521. package/src/assets/images/x-close.svg +3 -0
  522. package/src/components/BodyText.tsx +33 -0
  523. package/src/components/BrandMark.tsx +62 -0
  524. package/src/components/CodeInput.tsx +32 -0
  525. package/src/components/EmailInput.tsx +31 -0
  526. package/src/components/ExistingUserDataConfirmation.tsx +507 -0
  527. package/src/components/GoogleButton.tsx +55 -0
  528. package/src/components/HeadingGroup.tsx +49 -0
  529. package/src/components/ModalHeader.tsx +125 -0
  530. package/src/components/ModalSheet.tsx +57 -0
  531. package/src/components/Onairos.tsx +422 -424
  532. package/src/components/OnairosButton.tsx +339 -359
  533. package/src/components/OnairosSignInButton.tsx +166 -0
  534. package/src/components/Overlay.tsx +506 -506
  535. package/src/components/PersonaImage.tsx +79 -0
  536. package/src/components/PersonaLoadingScreen.tsx +201 -0
  537. package/src/components/PersonalizationConsentScreen.tsx +410 -0
  538. package/src/components/PinCreationScreen.tsx +492 -0
  539. package/src/components/PinInput.tsx +555 -343
  540. package/src/components/PlatformConnectorsStep.tsx +892 -0
  541. package/src/components/PlatformToggle.tsx +226 -0
  542. package/src/components/PrimaryButton.tsx +214 -0
  543. package/src/components/SignInMatchAnimation.tsx +225 -0
  544. package/src/components/SignInStep.tsx +217 -0
  545. package/src/components/TrainingModal.tsx +1047 -737
  546. package/src/components/UniversalOnboarding.tsx +2888 -1820
  547. package/src/components/VerificationStep.tsx +198 -0
  548. package/src/components/WelcomeScreen.tsx +473 -0
  549. package/src/components/icons/Basicproficon.tsx +30 -0
  550. package/src/components/icons/Basicprofile.tsx +17 -0
  551. package/src/components/icons/Checkbox.tsx +17 -0
  552. package/src/components/icons/Checkmark.tsx +24 -0
  553. package/src/components/icons/Contentanalysis.tsx +17 -0
  554. package/src/components/icons/Contenticon.tsx +30 -0
  555. package/src/components/icons/EnochE.tsx +39 -0
  556. package/src/components/icons/Personalityicon.tsx +22 -0
  557. package/src/components/icons/Personalityprofile.tsx +17 -0
  558. package/src/components/icons/Personalitytraits.tsx +17 -0
  559. package/src/components/icons/Userpreferences.tsx +17 -0
  560. package/src/components/icons/index.ts +12 -0
  561. package/src/components/onboarding/OAuthWebView.tsx +232 -838
  562. package/src/config/api.ts +25 -0
  563. package/src/context/AuthContext.tsx +393 -0
  564. package/src/hooks/useConnectedAccounts.ts +139 -0
  565. package/src/hooks/useConnections.ts +129 -131
  566. package/src/hooks/useUserConnections.ts +166 -0
  567. package/src/index.ts +94 -49
  568. package/src/services/apiClient.ts +337 -0
  569. package/src/services/apiKeyService.ts +9 -11
  570. package/src/services/authService.ts +1008 -0
  571. package/src/services/biometricPinService.ts +193 -0
  572. package/src/services/connectedAccountsService.ts +290 -0
  573. package/src/services/googleAuthService.ts +279 -0
  574. package/src/services/imageCompressionService.ts +303 -0
  575. package/src/services/jwtStorageService.ts +257 -0
  576. package/src/services/mobileTrainingService.ts +204 -0
  577. package/src/services/pinEncryptionService.ts +76 -0
  578. package/src/services/pinStorageUtils.ts +97 -0
  579. package/src/services/platformAuthService.ts +1346 -1113
  580. package/src/services/storageService.ts +452 -0
  581. package/src/services/trainingApiHelpers.ts +67 -0
  582. package/src/services/userConnectionsService.ts +557 -0
  583. package/src/services/youtubeMigrationService.ts +454 -0
  584. package/src/theme/index.ts +239 -0
  585. package/src/types/index.ts +265 -238
  586. package/src/utils/eventUtils.ts +303 -0
  587. package/src/utils/haptics.ts +59 -0
  588. package/src/utils/imagePreloader.ts +2 -0
  589. package/README.md +0 -375
  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,257 @@
1
+ import AsyncStorage from '@react-native-async-storage/async-storage';
2
+ import { Buffer } from 'buffer';
3
+
4
+ /**
5
+ * JWT Token Storage Service - CORRECTED APPROACH
6
+ * Manages 3 DISTINCT JWT token types for different route families
7
+ *
8
+ * TOKEN TYPES:
9
+ * 1. Enoch JWT (enoch_token) - For /enoch/*, /api/auth/*, /mobile-training/enoch
10
+ * 2. Onairos JWT (onairos_jwt_token) - For /youtube/*, /gmail/*, social connections
11
+ * 3. Auth Token (auth_token) - For context-specific auth flows
12
+ */
13
+
14
+ export enum TokenType {
15
+ ENOCH = 'enoch_token',
16
+ ONAIROS = 'onairos_jwt_token',
17
+ AUTH = 'auth_token'
18
+ }
19
+
20
+ /**
21
+ * Route-based token mapping
22
+ * Determines which token type to use for which routes
23
+ */
24
+ export const getTokenTypeForRoute = (route: string): TokenType => {
25
+ const cleanRoute = route.toLowerCase();
26
+
27
+ // Enoch routes - use Enoch JWT
28
+ if (cleanRoute.includes('/enoch/') ||
29
+ cleanRoute.includes('/api/auth/') ||
30
+ cleanRoute.includes('/mobile-training/enoch')) {
31
+ return TokenType.ENOCH;
32
+ }
33
+
34
+ // Onairos routes - use Onairos JWT
35
+ if (cleanRoute.includes('/youtube/') ||
36
+ cleanRoute.includes('/gmail/') ||
37
+ cleanRoute.includes('/connectedaccounts') ||
38
+ cleanRoute.includes('/social/')) {
39
+ return TokenType.ONAIROS;
40
+ }
41
+
42
+ // Default to auth token for other routes
43
+ return TokenType.AUTH;
44
+ };
45
+
46
+ /**
47
+ * Store JWT token of specific type
48
+ * @param tokenType - Type of token to store
49
+ * @param token - JWT token to store
50
+ * @returns Promise<boolean> - Success status
51
+ */
52
+ export const storeJWT = async (tokenType: TokenType, token: string): Promise<boolean> => {
53
+ try {
54
+ if (!token || token.trim() === '') {
55
+ console.warn(`⚠️ [JWT Storage] Attempted to store empty/null ${tokenType} token`);
56
+ return false;
57
+ }
58
+
59
+ // Validate JWT format (should have 3 parts separated by dots)
60
+ const parts = token.split('.');
61
+ if (parts.length !== 3) {
62
+ console.warn(`⚠️ [JWT Storage] Invalid JWT format for ${tokenType} - token should have 3 parts`);
63
+ return false;
64
+ }
65
+
66
+ await AsyncStorage.setItem(tokenType, token);
67
+ console.log(`✅ [JWT Storage] ${tokenType} token stored successfully`);
68
+ return true;
69
+ } catch (error) {
70
+ console.error(`❌ [JWT Storage] Failed to store ${tokenType} token:`, error);
71
+ return false;
72
+ }
73
+ };
74
+
75
+ /**
76
+ * Retrieve JWT token of specific type
77
+ * @param tokenType - Type of token to retrieve
78
+ * @returns Promise<string | null> - JWT token or null if not found
79
+ */
80
+ export const getJWT = async (tokenType: TokenType): Promise<string | null> => {
81
+ try {
82
+ const token = await AsyncStorage.getItem(tokenType);
83
+
84
+ if (!token) {
85
+ console.log(`📭 [JWT Storage] No ${tokenType} token found in storage`);
86
+ return null;
87
+ }
88
+
89
+ // Validate JWT format
90
+ if (!isValidJWTFormat(token)) {
91
+ console.warn(`⚠️ [JWT Storage] Invalid JWT format found for ${tokenType}, removing`);
92
+ await clearJWT(tokenType);
93
+ return null;
94
+ }
95
+
96
+ console.log(`🔐 [JWT Storage] ${tokenType} token retrieved successfully`);
97
+ return token;
98
+ } catch (error) {
99
+ console.error(`❌ [JWT Storage] Failed to retrieve ${tokenType} token:`, error);
100
+ return null;
101
+ }
102
+ };
103
+
104
+ /**
105
+ * Get JWT token for specific route
106
+ * @param route - API route to get token for
107
+ * @returns Promise<string | null> - Appropriate JWT token or null
108
+ */
109
+ export const getJWTForRoute = async (route: string): Promise<string | null> => {
110
+ const tokenType = getTokenTypeForRoute(route);
111
+ const token = await getJWT(tokenType);
112
+
113
+ if (token) {
114
+ console.log(`🎯 [JWT Storage] Using ${tokenType} token for route: ${route}`);
115
+ } else {
116
+ console.warn(`⚠️ [JWT Storage] No ${tokenType} token available for route: ${route}`);
117
+ }
118
+
119
+ return token;
120
+ };
121
+
122
+ /**
123
+ * Clear JWT token of specific type
124
+ * @param tokenType - Type of token to clear
125
+ * @returns Promise<boolean> - Success status
126
+ */
127
+ export const clearJWT = async (tokenType: TokenType): Promise<boolean> => {
128
+ try {
129
+ await AsyncStorage.removeItem(tokenType);
130
+ console.log(`✅ [JWT Storage] ${tokenType} token cleared successfully`);
131
+ return true;
132
+ } catch (error) {
133
+ console.error(`❌ [JWT Storage] Failed to clear ${tokenType} token:`, error);
134
+ return false;
135
+ }
136
+ };
137
+
138
+ /**
139
+ * Clear all JWT tokens
140
+ * @returns Promise<boolean> - Success status
141
+ */
142
+ export const clearAllJWT = async (): Promise<boolean> => {
143
+ try {
144
+ await Promise.all([
145
+ clearJWT(TokenType.ENOCH),
146
+ clearJWT(TokenType.ONAIROS),
147
+ clearJWT(TokenType.AUTH)
148
+ ]);
149
+ console.log('✅ [JWT Storage] All JWT tokens cleared successfully');
150
+ return true;
151
+ } catch (error) {
152
+ console.error('❌ [JWT Storage] Failed to clear all JWT tokens:', error);
153
+ return false;
154
+ }
155
+ };
156
+
157
+ /**
158
+ * Replace JWT token after verification - route-aware
159
+ * @param tokenType - Type of token being replaced
160
+ * @param newToken - New JWT token from verification response
161
+ * @returns Promise<boolean> - Success status
162
+ */
163
+ export const replaceJWTAfterVerification = async (tokenType: TokenType, newToken: string): Promise<boolean> => {
164
+ try {
165
+ console.log(`🔄 [JWT Storage] Replacing ${tokenType} token after verification`);
166
+
167
+ if (!newToken || !isValidJWTFormat(newToken)) {
168
+ console.error(`❌ [JWT Storage] Invalid ${tokenType} token provided for replacement`);
169
+ return false;
170
+ }
171
+
172
+ // Clear old token first, then store new one
173
+ await clearJWT(tokenType);
174
+ const stored = await storeJWT(tokenType, newToken);
175
+
176
+ if (stored) {
177
+ console.log(`✅ [JWT Storage] ${tokenType} token successfully replaced after verification`);
178
+ }
179
+
180
+ return stored;
181
+ } catch (error) {
182
+ console.error(`❌ [JWT Storage] Failed to replace ${tokenType} token after verification:`, error);
183
+ return false;
184
+ }
185
+ };
186
+
187
+ /**
188
+ * Store Enoch JWT token (from email verification)
189
+ * @param token - Enoch JWT token
190
+ * @returns Promise<boolean> - Success status
191
+ */
192
+ export const storeEnochJWT = async (token: string): Promise<boolean> => {
193
+ return await storeJWT(TokenType.ENOCH, token);
194
+ };
195
+
196
+ /**
197
+ * Store Onairos JWT token (from sign-in/registration)
198
+ * @param token - Onairos JWT token
199
+ * @returns Promise<boolean> - Success status
200
+ */
201
+ export const storeOnairosJWT = async (token: string): Promise<boolean> => {
202
+ return await storeJWT(TokenType.ONAIROS, token);
203
+ };
204
+
205
+ /**
206
+ * Store Auth token (for context-specific flows)
207
+ * @param token - Auth token
208
+ * @returns Promise<boolean> - Success status
209
+ */
210
+ export const storeAuthToken = async (token: string): Promise<boolean> => {
211
+ return await storeJWT(TokenType.AUTH, token);
212
+ };
213
+
214
+ /**
215
+ * Validate JWT format
216
+ * @param token - Token to validate
217
+ * @returns boolean - True if valid JWT format
218
+ */
219
+ const isValidJWTFormat = (token: string): boolean => {
220
+ if (!token || token.length < 20) return false;
221
+
222
+ // Check if it's an email address (invalid JWT)
223
+ if (token.includes('@') && token.includes('.') && !token.includes('Bearer') && token.length < 100) {
224
+ return false;
225
+ }
226
+
227
+ // Check if it has JWT structure (3 parts separated by dots)
228
+ const tokenParts = token.split('.');
229
+ if (tokenParts.length !== 3) return false;
230
+
231
+ // Additional validation - JWT should be longer than 50 characters typically
232
+ if (token.length < 50) return false;
233
+
234
+ return true;
235
+ };
236
+
237
+ /**
238
+ * Check if JWT token of specific type exists and is valid
239
+ * @param tokenType - Type of token to check
240
+ * @returns Promise<boolean> - True if valid token exists
241
+ */
242
+ export const hasValidJWT = async (tokenType: TokenType): Promise<boolean> => {
243
+ const token = await getJWT(tokenType);
244
+ return token !== null;
245
+ };
246
+
247
+ /**
248
+ * Get all available tokens (for debugging)
249
+ * @returns Promise<Record<TokenType, string | null>> - All tokens
250
+ */
251
+ export const getAllTokens = async (): Promise<Record<TokenType, string | null>> => {
252
+ return {
253
+ [TokenType.ENOCH]: await getJWT(TokenType.ENOCH),
254
+ [TokenType.ONAIROS]: await getJWT(TokenType.ONAIROS),
255
+ [TokenType.AUTH]: await getJWT(TokenType.AUTH)
256
+ };
257
+ };
@@ -0,0 +1,204 @@
1
+ import { getAuthToken } from './authService';
2
+ // Migration functions no longer needed - backend handles all YouTube cases automatically
3
+ // import { checkAndFixYouTubeConnection, getYouTubeConnectionStatus, shouldShowYouTubeMigrationWarning } from './youtubeMigrationService';
4
+
5
+ const API_BASE_URL = 'https://api2.onairos.uk';
6
+
7
+ /**
8
+ * Mobile Training API Service
9
+ * Implements the updated training spec routes
10
+ */
11
+
12
+ // Training Status Route
13
+ export const getTrainingStatus = async (username: string) => {
14
+ try {
15
+ const authToken = await getAuthToken();
16
+ if (!authToken) {
17
+ throw new Error('No authentication token available');
18
+ }
19
+
20
+ const response = await fetch(`${API_BASE_URL}/mobile-training/status/${username}`, {
21
+ method: 'GET',
22
+ headers: {
23
+ 'Authorization': authToken,
24
+ 'Content-Type': 'application/json'
25
+ }
26
+ });
27
+
28
+ if (!response.ok) {
29
+ const errorData = await response.json();
30
+ throw new Error(errorData.error || `HTTP ${response.status}`);
31
+ }
32
+
33
+ return await response.json();
34
+ } catch (error) {
35
+ console.error('❌ Failed to get training status:', error);
36
+ throw error;
37
+ }
38
+ };
39
+
40
+ // Model Info Route
41
+ export const getModelInfo = async () => {
42
+ try {
43
+ const authToken = await getAuthToken();
44
+ if (!authToken) {
45
+ throw new Error('No authentication token available');
46
+ }
47
+
48
+ const response = await fetch(`${API_BASE_URL}/mobile-training/model-info`, {
49
+ method: 'GET',
50
+ headers: {
51
+ 'Authorization': authToken,
52
+ 'Content-Type': 'application/json'
53
+ }
54
+ });
55
+
56
+ if (!response.ok) {
57
+ const errorData = await response.json();
58
+ throw new Error(errorData.error || `HTTP ${response.status}`);
59
+ }
60
+
61
+ return await response.json();
62
+ } catch (error) {
63
+ console.error('❌ Failed to get model info:', error);
64
+ throw error;
65
+ }
66
+ };
67
+
68
+ // Health Check Route
69
+ export const getHealthCheck = async () => {
70
+ try {
71
+ const response = await fetch(`${API_BASE_URL}/mobile-training/health`, {
72
+ method: 'GET',
73
+ headers: {
74
+ 'Content-Type': 'application/json'
75
+ }
76
+ });
77
+
78
+ if (!response.ok) {
79
+ const errorData = await response.json();
80
+ throw new Error(errorData.error || `HTTP ${response.status}`);
81
+ }
82
+
83
+ return await response.json();
84
+ } catch (error) {
85
+ console.error('❌ Failed to get health check:', error);
86
+ throw error;
87
+ }
88
+ };
89
+
90
+ /**
91
+ * Start Enoch Training - Simplified Version
92
+ * Backend now handles all YouTube connection cases automatically (temporary mode, refresh tokens, etc.)
93
+ * No frontend migration checks needed anymore
94
+ */
95
+ export const startEnochTrainingWithYouTubeCheck = async (trainingData: {
96
+ socketId: string;
97
+ username: string;
98
+ email?: string | null;
99
+ modelKey?: string | null;
100
+ connectedPlatforms?: string[];
101
+ platformConnections?: any;
102
+ encryptedPin?: string;
103
+ hasPinData?: boolean;
104
+ }) => {
105
+ try {
106
+ console.log('🚀 Starting Enoch training for user:', trainingData.username, '(backend auto-handles YouTube)');
107
+
108
+ // ✅ SIMPLIFIED: Backend handles all YouTube connection cases automatically
109
+ console.log('🚀 [TRAINING] Starting training - backend handles all YouTube cases automatically');
110
+ console.log('ℹ️ [TRAINING] No migration checks needed:');
111
+ console.log(' - Temporary mode connections: Work automatically ✅');
112
+ console.log(' - Full refresh tokens: Auto-refresh when expired ✅');
113
+ console.log(' - Backend validation: Handles all edge cases ✅');
114
+
115
+ // ✅ Proceed with training - backend handles YouTube automatically
116
+ return await startEnochTraining(trainingData);
117
+
118
+ } catch (error) {
119
+ console.error('❌ Training error:', error);
120
+ throw error;
121
+ }
122
+ };
123
+
124
+ /**
125
+ * Start Enoch Training
126
+ * Updated to use the new /mobile-training/enoch endpoint with proper error handling
127
+ */
128
+ export const startEnochTraining = async (trainingData: {
129
+ socketId: string;
130
+ username: string;
131
+ email?: string | null;
132
+ modelKey?: string | null;
133
+ connectedPlatforms?: string[];
134
+ platformConnections?: any;
135
+ encryptedPin?: string;
136
+ hasPinData?: boolean;
137
+ }) => {
138
+ try {
139
+ const authToken = await getAuthToken();
140
+ if (!authToken) {
141
+ throw new Error('No authentication token available');
142
+ }
143
+
144
+ console.log('📤 Sending training data to /mobile-training/enoch:', trainingData);
145
+
146
+ const response = await fetch(`${API_BASE_URL}/mobile-training/enoch`, {
147
+ method: 'POST',
148
+ headers: {
149
+ 'Content-Type': 'application/json',
150
+ 'Authorization': authToken
151
+ },
152
+ body: JSON.stringify(trainingData)
153
+ });
154
+
155
+ console.log('📡 Training API response status:', response.status);
156
+
157
+ if (!response.ok) {
158
+ const errorText = await response.text();
159
+ console.error('❌ Training API failed with status:', response.status, 'Error:', errorText);
160
+
161
+ // Try to parse error response
162
+ try {
163
+ const errorData = JSON.parse(errorText);
164
+ throw new Error(errorData.error || `HTTP ${response.status}`);
165
+ } catch (parseError) {
166
+ throw new Error(`Training API failed: ${response.status} - ${errorText}`);
167
+ }
168
+ }
169
+
170
+ const result = await response.json();
171
+ console.log('📡 Training API response:', result);
172
+
173
+ return result;
174
+ } catch (error) {
175
+ console.error('❌ Training start error:', error);
176
+ throw error;
177
+ }
178
+ };
179
+
180
+ /**
181
+ * Helper function to check if training is in progress
182
+ */
183
+ export const isTrainingInProgress = async (username: string): Promise<boolean> => {
184
+ try {
185
+ const status = await getTrainingStatus(username);
186
+ return status.success && status.isTraining;
187
+ } catch (error) {
188
+ console.warn('⚠️ Could not check training status:', error);
189
+ return false;
190
+ }
191
+ };
192
+
193
+ /**
194
+ * Helper function to get training features info
195
+ */
196
+ export const getTrainingFeatures = async () => {
197
+ try {
198
+ const health = await getHealthCheck();
199
+ return health.features;
200
+ } catch (error) {
201
+ console.warn('⚠️ Could not get training features:', error);
202
+ return null;
203
+ }
204
+ };
@@ -0,0 +1,76 @@
1
+ const CryptoJS = require('react-native-crypto-js');
2
+ import { getTemporaryPin } from './pinStorageUtils';
3
+
4
+ /**
5
+ * Service for encrypting PIN data before sending to APIs
6
+ */
7
+
8
+ // Encryption key - in production, this should come from a secure source
9
+ const ENCRYPTION_KEY = 'onairos-pin-encryption-key-2024';
10
+
11
+ /**
12
+ * Encrypt PIN using AES encryption
13
+ */
14
+ export const encryptPin = (pin: string): string => {
15
+ try {
16
+ const encrypted = CryptoJS.AES.encrypt(pin, ENCRYPTION_KEY).toString();
17
+ console.log('🔐 PIN encrypted successfully');
18
+ return encrypted;
19
+ } catch (error) {
20
+ console.error('❌ Error encrypting PIN:', error);
21
+ throw error;
22
+ }
23
+ };
24
+
25
+ /**
26
+ * Decrypt PIN (for verification purposes)
27
+ */
28
+ export const decryptPin = (encryptedPin: string): string => {
29
+ try {
30
+ const decrypted = CryptoJS.AES.decrypt(encryptedPin, ENCRYPTION_KEY);
31
+ const pin = decrypted.toString(CryptoJS.enc.Utf8);
32
+ console.log('🔓 PIN decrypted successfully');
33
+ return pin;
34
+ } catch (error) {
35
+ console.error('❌ Error decrypting PIN:', error);
36
+ throw error;
37
+ }
38
+ };
39
+
40
+ /**
41
+ * Get encrypted PIN for API transmission
42
+ */
43
+ export const getEncryptedPinForAPI = async (): Promise<string | null> => {
44
+ try {
45
+ // Get the temporary PIN from memory
46
+ const pin = getTemporaryPin();
47
+
48
+ if (!pin) {
49
+ console.log('⚠️ No temporary PIN available for encryption');
50
+ return null;
51
+ }
52
+
53
+ // Encrypt the PIN
54
+ const encryptedPin = encryptPin(pin);
55
+ console.log('✅ PIN encrypted for API transmission');
56
+
57
+ return encryptedPin;
58
+ } catch (error) {
59
+ console.error('❌ Error getting encrypted PIN for API:', error);
60
+ return null;
61
+ }
62
+ };
63
+
64
+ /**
65
+ * Hash PIN for verification (one-way hash)
66
+ */
67
+ export const hashPin = (pin: string): string => {
68
+ try {
69
+ const hash = CryptoJS.SHA256(pin + ENCRYPTION_KEY).toString();
70
+ console.log('🔒 PIN hashed successfully');
71
+ return hash;
72
+ } catch (error) {
73
+ console.error('❌ Error hashing PIN:', error);
74
+ throw error;
75
+ }
76
+ };
@@ -0,0 +1,97 @@
1
+ import { biometricPinService } from './biometricPinService';
2
+
3
+ /**
4
+ * Utility functions for PIN storage management
5
+ */
6
+
7
+ /**
8
+ * Get the stored PIN for training/authentication purposes
9
+ * This will prompt for biometric authentication
10
+ */
11
+ export const getStoredPinForTraining = async (): Promise<string | null> => {
12
+ try {
13
+ console.log('🔓 Retrieving stored PIN for training...');
14
+
15
+ // Check if PIN is stored
16
+ const pinStored = await biometricPinService.isPinStored();
17
+ if (!pinStored) {
18
+ console.log('⚠️ No PIN stored in secure storage');
19
+ return null;
20
+ }
21
+
22
+ // Retrieve PIN with biometric authentication
23
+ const pin = await biometricPinService.retrievePinWithBiometric();
24
+
25
+ if (pin) {
26
+ console.log('✅ PIN retrieved successfully for training');
27
+ return pin;
28
+ } else {
29
+ console.log('❌ Failed to retrieve PIN or user cancelled authentication');
30
+ return null;
31
+ }
32
+
33
+ } catch (error) {
34
+ console.error('❌ Error retrieving stored PIN:', error);
35
+ return null;
36
+ }
37
+ };
38
+
39
+ /**
40
+ * Check if user has a PIN stored securely
41
+ */
42
+ export const hasStoredPin = async (): Promise<boolean> => {
43
+ try {
44
+ return await biometricPinService.isPinStored();
45
+ } catch (error) {
46
+ console.error('❌ Error checking PIN storage:', error);
47
+ return false;
48
+ }
49
+ };
50
+
51
+ /**
52
+ * Remove stored PIN (for logout/reset purposes)
53
+ */
54
+ export const clearStoredPin = async (): Promise<boolean> => {
55
+ try {
56
+ console.log('🗑️ Clearing stored PIN...');
57
+ return await biometricPinService.removePinFromStorage();
58
+ } catch (error) {
59
+ console.error('❌ Error clearing stored PIN:', error);
60
+ return false;
61
+ }
62
+ };
63
+
64
+ /**
65
+ * Get PIN for passing to training component
66
+ * This function can be called from the onboarding flow
67
+ */
68
+ export const getPinForTraining = async (tempPin?: string): Promise<string | null> => {
69
+ // If a temporary PIN is provided (from the PIN input), use it
70
+ if (tempPin) {
71
+ console.log('📝 Using temporary PIN for training');
72
+ return tempPin;
73
+ }
74
+
75
+ // Otherwise, try to retrieve stored PIN
76
+ return await getStoredPinForTraining();
77
+ };
78
+
79
+ /**
80
+ * Store PIN temporarily in memory for training component
81
+ * This is used when PIN is entered but not yet stored biometrically
82
+ */
83
+ let temporaryPin: string | null = null;
84
+
85
+ export const setTemporaryPin = (pin: string): void => {
86
+ temporaryPin = pin;
87
+ console.log('📝 Temporary PIN set for training');
88
+ };
89
+
90
+ export const getTemporaryPin = (): string | null => {
91
+ return temporaryPin;
92
+ };
93
+
94
+ export const clearTemporaryPin = (): void => {
95
+ temporaryPin = null;
96
+ console.log('🗑️ Temporary PIN cleared');
97
+ };