@onairos/react-native 3.1.11 → 3.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/lib/commonjs/api/index.js +75 -1
  2. package/lib/commonjs/api/index.js.map +1 -1
  3. package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  4. package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  5. package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
  6. package/lib/commonjs/assets/icons/Gmail.png +0 -0
  7. package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
  8. package/lib/commonjs/assets/icons/Redditicon.png +0 -0
  9. package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
  10. package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
  11. package/lib/commonjs/assets/icons/farcaster.png +0 -0
  12. package/lib/commonjs/assets/icons/instagram.png +0 -0
  13. package/lib/commonjs/assets/icons/pinterest.png +0 -0
  14. package/lib/commonjs/assets/icons/swerv_logo.png +0 -0
  15. package/lib/commonjs/assets/icons/twitter.jpg +0 -0
  16. package/lib/commonjs/assets/images/Checkbox.svg +3 -0
  17. package/lib/commonjs/assets/images/EnochE.svg +19 -0
  18. package/lib/commonjs/assets/images/Enochicon1.png +0 -0
  19. package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
  20. package/lib/commonjs/assets/images/Facebookicon.png +0 -0
  21. package/lib/commonjs/assets/images/Gmail.png +0 -0
  22. package/lib/commonjs/assets/images/Googlelogo.png +0 -0
  23. package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
  24. package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
  25. package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
  26. package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
  27. package/lib/commonjs/assets/images/Redditicon.png +0 -0
  28. package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
  29. package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
  30. package/lib/commonjs/assets/images/arrow.svg +20 -0
  31. package/lib/commonjs/assets/images/basicproficon.svg +43 -0
  32. package/lib/commonjs/assets/images/basicprofile.svg +3 -0
  33. package/lib/commonjs/assets/images/checkmark.svg +4 -0
  34. package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
  35. package/lib/commonjs/assets/images/contenticon.svg +23 -0
  36. package/lib/commonjs/assets/images/persona1.png +0 -0
  37. package/lib/commonjs/assets/images/persona2.png +0 -0
  38. package/lib/commonjs/assets/images/persona3.png +0 -0
  39. package/lib/commonjs/assets/images/persona4.png +0 -0
  40. package/lib/commonjs/assets/images/persona5.png +0 -0
  41. package/lib/commonjs/assets/images/personalityicon.svg +18 -0
  42. package/lib/commonjs/assets/images/x-close.svg +3 -0
  43. package/lib/commonjs/components/BodyText.js +27 -0
  44. package/lib/commonjs/components/BodyText.js.map +1 -0
  45. package/lib/commonjs/components/BrandMark.js +44 -0
  46. package/lib/commonjs/components/BrandMark.js.map +1 -0
  47. package/lib/commonjs/components/CodeInput.js +30 -0
  48. package/lib/commonjs/components/CodeInput.js.map +1 -0
  49. package/lib/commonjs/components/EmailInput.js +30 -0
  50. package/lib/commonjs/components/EmailInput.js.map +1 -0
  51. package/lib/commonjs/components/ExistingUserDataConfirmation.js +474 -0
  52. package/lib/commonjs/components/ExistingUserDataConfirmation.js.map +1 -0
  53. package/lib/commonjs/components/GoogleButton.js +55 -0
  54. package/lib/commonjs/components/GoogleButton.js.map +1 -0
  55. package/lib/commonjs/components/HeadingGroup.js +43 -0
  56. package/lib/commonjs/components/HeadingGroup.js.map +1 -0
  57. package/lib/commonjs/components/ModalHeader.js +99 -0
  58. package/lib/commonjs/components/ModalHeader.js.map +1 -0
  59. package/lib/commonjs/components/ModalSheet.js +41 -0
  60. package/lib/commonjs/components/ModalSheet.js.map +1 -0
  61. package/lib/commonjs/components/Onairos.js +1 -3
  62. package/lib/commonjs/components/Onairos.js.map +1 -1
  63. package/lib/commonjs/components/OnairosButton.js +171 -190
  64. package/lib/commonjs/components/OnairosButton.js.map +1 -1
  65. package/lib/commonjs/components/OnairosSignInButton.js +169 -0
  66. package/lib/commonjs/components/OnairosSignInButton.js.map +1 -0
  67. package/lib/commonjs/components/Overlay.js +5 -5
  68. package/lib/commonjs/components/Overlay.js.map +1 -1
  69. package/lib/commonjs/components/PersonaImage.js +60 -0
  70. package/lib/commonjs/components/PersonaImage.js.map +1 -0
  71. package/lib/commonjs/components/PersonaLoadingScreen.js +156 -0
  72. package/lib/commonjs/components/PersonaLoadingScreen.js.map +1 -0
  73. package/lib/commonjs/components/PersonalizationConsentScreen.js +316 -0
  74. package/lib/commonjs/components/PersonalizationConsentScreen.js.map +1 -0
  75. package/lib/commonjs/components/PinCreationScreen.js +393 -0
  76. package/lib/commonjs/components/PinCreationScreen.js.map +1 -0
  77. package/lib/commonjs/components/PinInput.js +282 -120
  78. package/lib/commonjs/components/PinInput.js.map +1 -1
  79. package/lib/commonjs/components/PlatformConnectorsStep.js +828 -0
  80. package/lib/commonjs/components/PlatformConnectorsStep.js.map +1 -0
  81. package/lib/commonjs/components/PlatformToggle.js +180 -0
  82. package/lib/commonjs/components/PlatformToggle.js.map +1 -0
  83. package/lib/commonjs/components/PrimaryButton.js +180 -0
  84. package/lib/commonjs/components/PrimaryButton.js.map +1 -0
  85. package/lib/commonjs/components/SignInMatchAnimation.js +197 -0
  86. package/lib/commonjs/components/SignInMatchAnimation.js.map +1 -0
  87. package/lib/commonjs/components/SignInStep.js +179 -0
  88. package/lib/commonjs/components/SignInStep.js.map +1 -0
  89. package/lib/commonjs/components/TrainingModal.js +808 -563
  90. package/lib/commonjs/components/TrainingModal.js.map +1 -1
  91. package/lib/commonjs/components/UniversalOnboarding.js +2304 -1283
  92. package/lib/commonjs/components/UniversalOnboarding.js.map +1 -1
  93. package/lib/commonjs/components/VerificationStep.js +154 -0
  94. package/lib/commonjs/components/VerificationStep.js.map +1 -0
  95. package/lib/commonjs/components/WelcomeScreen.js +385 -0
  96. package/lib/commonjs/components/WelcomeScreen.js.map +1 -0
  97. package/lib/commonjs/components/icons/Basicproficon.js +37 -0
  98. package/lib/commonjs/components/icons/Basicproficon.js.map +1 -0
  99. package/lib/commonjs/components/icons/Basicprofile.js +21 -0
  100. package/lib/commonjs/components/icons/Basicprofile.js.map +1 -0
  101. package/lib/commonjs/components/icons/Checkbox.js +21 -0
  102. package/lib/commonjs/components/icons/Checkbox.js.map +1 -0
  103. package/lib/commonjs/components/icons/Checkmark.js +27 -0
  104. package/lib/commonjs/components/icons/Checkmark.js.map +1 -0
  105. package/lib/commonjs/components/icons/Contentanalysis.js +21 -0
  106. package/lib/commonjs/components/icons/Contentanalysis.js.map +1 -0
  107. package/lib/commonjs/components/icons/Contenticon.js +39 -0
  108. package/lib/commonjs/components/icons/Contenticon.js.map +1 -0
  109. package/lib/commonjs/components/icons/EnochE.js +41 -0
  110. package/lib/commonjs/components/icons/EnochE.js.map +1 -0
  111. package/lib/commonjs/components/icons/Personalityicon.js +30 -0
  112. package/lib/commonjs/components/icons/Personalityicon.js.map +1 -0
  113. package/lib/commonjs/components/icons/Personalityprofile.js +21 -0
  114. package/lib/commonjs/components/icons/Personalityprofile.js.map +1 -0
  115. package/lib/commonjs/components/icons/Personalitytraits.js +21 -0
  116. package/lib/commonjs/components/icons/Personalitytraits.js.map +1 -0
  117. package/lib/commonjs/components/icons/Userpreferences.js +21 -0
  118. package/lib/commonjs/components/icons/Userpreferences.js.map +1 -0
  119. package/lib/commonjs/components/icons/index.js +84 -0
  120. package/lib/commonjs/components/icons/index.js.map +1 -0
  121. package/lib/commonjs/components/onboarding/OAuthWebView.js +134 -743
  122. package/lib/commonjs/components/onboarding/OAuthWebView.js.map +1 -1
  123. package/lib/commonjs/config/api.js +34 -0
  124. package/lib/commonjs/config/api.js.map +1 -0
  125. package/lib/commonjs/context/AuthContext.js +345 -0
  126. package/lib/commonjs/context/AuthContext.js.map +1 -0
  127. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -0
  128. package/lib/commonjs/hooks/useConnectedAccounts.js.map +1 -0
  129. package/lib/commonjs/hooks/useConnections.js +120 -125
  130. package/lib/commonjs/hooks/useConnections.js.map +1 -1
  131. package/lib/commonjs/hooks/useUserConnections.js +148 -0
  132. package/lib/commonjs/hooks/useUserConnections.js.map +1 -0
  133. package/lib/commonjs/index.js +149 -27
  134. package/lib/commonjs/index.js.map +1 -1
  135. package/lib/commonjs/services/apiClient.js +302 -0
  136. package/lib/commonjs/services/apiClient.js.map +1 -0
  137. package/lib/commonjs/services/authService.js +935 -0
  138. package/lib/commonjs/services/authService.js.map +1 -0
  139. package/lib/commonjs/services/biometricPinService.js +184 -0
  140. package/lib/commonjs/services/biometricPinService.js.map +1 -0
  141. package/lib/commonjs/services/connectedAccountsService.js +268 -0
  142. package/lib/commonjs/services/connectedAccountsService.js.map +1 -0
  143. package/lib/commonjs/services/googleAuthService.js +268 -0
  144. package/lib/commonjs/services/googleAuthService.js.map +1 -0
  145. package/lib/commonjs/services/imageCompressionService.js +260 -0
  146. package/lib/commonjs/services/imageCompressionService.js.map +1 -0
  147. package/lib/commonjs/services/jwtStorageService.js +256 -0
  148. package/lib/commonjs/services/jwtStorageService.js.map +1 -0
  149. package/lib/commonjs/services/mobileTrainingService.js +185 -0
  150. package/lib/commonjs/services/mobileTrainingService.js.map +1 -0
  151. package/lib/commonjs/services/pinEncryptionService.js +84 -0
  152. package/lib/commonjs/services/pinEncryptionService.js.map +1 -0
  153. package/lib/commonjs/services/pinStorageUtils.js +105 -0
  154. package/lib/commonjs/services/pinStorageUtils.js.map +1 -0
  155. package/lib/commonjs/services/platformAuthService.js +956 -722
  156. package/lib/commonjs/services/platformAuthService.js.map +1 -1
  157. package/lib/commonjs/services/storageService.js +404 -0
  158. package/lib/commonjs/services/storageService.js.map +1 -0
  159. package/lib/commonjs/services/trainingApiHelpers.js +73 -0
  160. package/lib/commonjs/services/trainingApiHelpers.js.map +1 -0
  161. package/lib/commonjs/services/userConnectionsService.js +486 -0
  162. package/lib/commonjs/services/userConnectionsService.js.map +1 -0
  163. package/lib/commonjs/services/youtubeMigrationService.js +415 -0
  164. package/lib/commonjs/services/youtubeMigrationService.js.map +1 -0
  165. package/lib/commonjs/theme/index.js +249 -0
  166. package/lib/commonjs/theme/index.js.map +1 -0
  167. package/lib/commonjs/utils/eventUtils.js +288 -0
  168. package/lib/commonjs/utils/eventUtils.js.map +1 -0
  169. package/lib/commonjs/utils/haptics.js +66 -0
  170. package/lib/commonjs/utils/haptics.js.map +1 -0
  171. package/lib/commonjs/utils/imagePreloader.js +6 -0
  172. package/lib/commonjs/utils/imagePreloader.js.map +1 -0
  173. package/lib/module/api/index.js +72 -0
  174. package/lib/module/api/index.js.map +1 -1
  175. package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  176. package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  177. package/lib/module/assets/icons/Facebookicon.png +0 -0
  178. package/lib/module/assets/icons/Gmail.png +0 -0
  179. package/lib/module/assets/icons/Linkedinicon.png +0 -0
  180. package/lib/module/assets/icons/Redditicon.png +0 -0
  181. package/lib/module/assets/icons/YouTubeicon2.png +0 -0
  182. package/lib/module/assets/icons/YouTubeicon3.png +0 -0
  183. package/lib/module/assets/icons/farcaster.png +0 -0
  184. package/lib/module/assets/icons/instagram.png +0 -0
  185. package/lib/module/assets/icons/pinterest.png +0 -0
  186. package/lib/module/assets/icons/swerv_logo.png +0 -0
  187. package/lib/module/assets/icons/twitter.jpg +0 -0
  188. package/lib/module/assets/images/Checkbox.svg +3 -0
  189. package/lib/module/assets/images/EnochE.svg +19 -0
  190. package/lib/module/assets/images/Enochicon1.png +0 -0
  191. package/lib/module/assets/images/Face_ID_logo.png +0 -0
  192. package/lib/module/assets/images/Facebookicon.png +0 -0
  193. package/lib/module/assets/images/Gmail.png +0 -0
  194. package/lib/module/assets/images/Googlelogo.png +0 -0
  195. package/lib/module/assets/images/Linkedinicon.png +0 -0
  196. package/lib/module/assets/images/Onairoslogo.png +0 -0
  197. package/lib/module/assets/images/Personalityprofile.svg +3 -0
  198. package/lib/module/assets/images/Personalitytraits.svg +3 -0
  199. package/lib/module/assets/images/Redditicon.png +0 -0
  200. package/lib/module/assets/images/Userpreferences.svg +3 -0
  201. package/lib/module/assets/images/YouTubeicon3.png +0 -0
  202. package/lib/module/assets/images/arrow.svg +20 -0
  203. package/lib/module/assets/images/basicproficon.svg +43 -0
  204. package/lib/module/assets/images/basicprofile.svg +3 -0
  205. package/lib/module/assets/images/checkmark.svg +4 -0
  206. package/lib/module/assets/images/contentanalysis.svg +3 -0
  207. package/lib/module/assets/images/contenticon.svg +23 -0
  208. package/lib/module/assets/images/persona1.png +0 -0
  209. package/lib/module/assets/images/persona2.png +0 -0
  210. package/lib/module/assets/images/persona3.png +0 -0
  211. package/lib/module/assets/images/persona4.png +0 -0
  212. package/lib/module/assets/images/persona5.png +0 -0
  213. package/lib/module/assets/images/personalityicon.svg +18 -0
  214. package/lib/module/assets/images/x-close.svg +3 -0
  215. package/lib/module/components/BodyText.js +20 -0
  216. package/lib/module/components/BodyText.js.map +1 -0
  217. package/lib/module/components/BrandMark.js +37 -0
  218. package/lib/module/components/BrandMark.js.map +1 -0
  219. package/lib/module/components/CodeInput.js +23 -0
  220. package/lib/module/components/CodeInput.js.map +1 -0
  221. package/lib/module/components/EmailInput.js +23 -0
  222. package/lib/module/components/EmailInput.js.map +1 -0
  223. package/lib/module/components/ExistingUserDataConfirmation.js +465 -0
  224. package/lib/module/components/ExistingUserDataConfirmation.js.map +1 -0
  225. package/lib/module/components/GoogleButton.js +48 -0
  226. package/lib/module/components/GoogleButton.js.map +1 -0
  227. package/lib/module/components/HeadingGroup.js +36 -0
  228. package/lib/module/components/HeadingGroup.js.map +1 -0
  229. package/lib/module/components/ModalHeader.js +92 -0
  230. package/lib/module/components/ModalHeader.js.map +1 -0
  231. package/lib/module/components/ModalSheet.js +34 -0
  232. package/lib/module/components/ModalSheet.js.map +1 -0
  233. package/lib/module/components/Onairos.js +1 -3
  234. package/lib/module/components/Onairos.js.map +1 -1
  235. package/lib/module/components/OnairosButton.js +172 -192
  236. package/lib/module/components/OnairosButton.js.map +1 -1
  237. package/lib/module/components/OnairosSignInButton.js +160 -0
  238. package/lib/module/components/OnairosSignInButton.js.map +1 -0
  239. package/lib/module/components/Overlay.js +5 -5
  240. package/lib/module/components/Overlay.js.map +1 -1
  241. package/lib/module/components/PersonaImage.js +53 -0
  242. package/lib/module/components/PersonaImage.js.map +1 -0
  243. package/lib/module/components/PersonaLoadingScreen.js +148 -0
  244. package/lib/module/components/PersonaLoadingScreen.js.map +1 -0
  245. package/lib/module/components/PersonalizationConsentScreen.js +309 -0
  246. package/lib/module/components/PersonalizationConsentScreen.js.map +1 -0
  247. package/lib/module/components/PinCreationScreen.js +386 -0
  248. package/lib/module/components/PinCreationScreen.js.map +1 -0
  249. package/lib/module/components/PinInput.js +283 -120
  250. package/lib/module/components/PinInput.js.map +1 -1
  251. package/lib/module/components/PlatformConnectorsStep.js +820 -0
  252. package/lib/module/components/PlatformConnectorsStep.js.map +1 -0
  253. package/lib/module/components/PlatformToggle.js +173 -0
  254. package/lib/module/components/PlatformToggle.js.map +1 -0
  255. package/lib/module/components/PrimaryButton.js +172 -0
  256. package/lib/module/components/PrimaryButton.js.map +1 -0
  257. package/lib/module/components/SignInMatchAnimation.js +189 -0
  258. package/lib/module/components/SignInMatchAnimation.js.map +1 -0
  259. package/lib/module/components/SignInStep.js +171 -0
  260. package/lib/module/components/SignInStep.js.map +1 -0
  261. package/lib/module/components/TrainingModal.js +809 -565
  262. package/lib/module/components/TrainingModal.js.map +1 -1
  263. package/lib/module/components/UniversalOnboarding.js +2307 -1284
  264. package/lib/module/components/UniversalOnboarding.js.map +1 -1
  265. package/lib/module/components/VerificationStep.js +146 -0
  266. package/lib/module/components/VerificationStep.js.map +1 -0
  267. package/lib/module/components/WelcomeScreen.js +378 -0
  268. package/lib/module/components/WelcomeScreen.js.map +1 -0
  269. package/lib/module/components/icons/Basicproficon.js +30 -0
  270. package/lib/module/components/icons/Basicproficon.js.map +1 -0
  271. package/lib/module/components/icons/Basicprofile.js +14 -0
  272. package/lib/module/components/icons/Basicprofile.js.map +1 -0
  273. package/lib/module/components/icons/Checkbox.js +14 -0
  274. package/lib/module/components/icons/Checkbox.js.map +1 -0
  275. package/lib/module/components/icons/Checkmark.js +20 -0
  276. package/lib/module/components/icons/Checkmark.js.map +1 -0
  277. package/lib/module/components/icons/Contentanalysis.js +14 -0
  278. package/lib/module/components/icons/Contentanalysis.js.map +1 -0
  279. package/lib/module/components/icons/Contenticon.js +32 -0
  280. package/lib/module/components/icons/Contenticon.js.map +1 -0
  281. package/lib/module/components/icons/EnochE.js +34 -0
  282. package/lib/module/components/icons/EnochE.js.map +1 -0
  283. package/lib/module/components/icons/Personalityicon.js +23 -0
  284. package/lib/module/components/icons/Personalityicon.js.map +1 -0
  285. package/lib/module/components/icons/Personalityprofile.js +14 -0
  286. package/lib/module/components/icons/Personalityprofile.js.map +1 -0
  287. package/lib/module/components/icons/Personalitytraits.js +14 -0
  288. package/lib/module/components/icons/Personalitytraits.js.map +1 -0
  289. package/lib/module/components/icons/Userpreferences.js +14 -0
  290. package/lib/module/components/icons/Userpreferences.js.map +1 -0
  291. package/lib/module/components/icons/index.js +13 -0
  292. package/lib/module/components/icons/index.js.map +1 -0
  293. package/lib/module/components/onboarding/OAuthWebView.js +136 -744
  294. package/lib/module/components/onboarding/OAuthWebView.js.map +1 -1
  295. package/lib/module/config/api.js +26 -0
  296. package/lib/module/config/api.js.map +1 -0
  297. package/lib/module/context/AuthContext.js +335 -0
  298. package/lib/module/context/AuthContext.js.map +1 -0
  299. package/lib/module/hooks/useConnectedAccounts.js +106 -0
  300. package/lib/module/hooks/useConnectedAccounts.js.map +1 -0
  301. package/lib/module/hooks/useConnections.js +119 -125
  302. package/lib/module/hooks/useConnections.js.map +1 -1
  303. package/lib/module/hooks/useUserConnections.js +140 -0
  304. package/lib/module/hooks/useUserConnections.js.map +1 -0
  305. package/lib/module/index.js +51 -15
  306. package/lib/module/index.js.map +1 -1
  307. package/lib/module/services/apiClient.js +298 -0
  308. package/lib/module/services/apiClient.js.map +1 -0
  309. package/lib/module/services/authService.js +905 -0
  310. package/lib/module/services/authService.js.map +1 -0
  311. package/lib/module/services/biometricPinService.js +173 -0
  312. package/lib/module/services/biometricPinService.js.map +1 -0
  313. package/lib/module/services/connectedAccountsService.js +255 -0
  314. package/lib/module/services/connectedAccountsService.js.map +1 -0
  315. package/lib/module/services/googleAuthService.js +258 -0
  316. package/lib/module/services/googleAuthService.js.map +1 -0
  317. package/lib/module/services/imageCompressionService.js +250 -0
  318. package/lib/module/services/imageCompressionService.js.map +1 -0
  319. package/lib/module/services/jwtStorageService.js +239 -0
  320. package/lib/module/services/jwtStorageService.js.map +1 -0
  321. package/lib/module/services/mobileTrainingService.js +172 -0
  322. package/lib/module/services/mobileTrainingService.js.map +1 -0
  323. package/lib/module/services/pinEncryptionService.js +75 -0
  324. package/lib/module/services/pinEncryptionService.js.map +1 -0
  325. package/lib/module/services/pinStorageUtils.js +93 -0
  326. package/lib/module/services/pinStorageUtils.js.map +1 -0
  327. package/lib/module/services/platformAuthService.js +943 -704
  328. package/lib/module/services/platformAuthService.js.map +1 -1
  329. package/lib/module/services/storageService.js +383 -0
  330. package/lib/module/services/storageService.js.map +1 -0
  331. package/lib/module/services/trainingApiHelpers.js +67 -0
  332. package/lib/module/services/trainingApiHelpers.js.map +1 -0
  333. package/lib/module/services/userConnectionsService.js +476 -0
  334. package/lib/module/services/userConnectionsService.js.map +1 -0
  335. package/lib/module/services/youtubeMigrationService.js +404 -0
  336. package/lib/module/services/youtubeMigrationService.js.map +1 -0
  337. package/lib/module/theme/index.js +244 -0
  338. package/lib/module/theme/index.js.map +1 -0
  339. package/lib/module/utils/eventUtils.js +270 -0
  340. package/lib/module/utils/eventUtils.js.map +1 -0
  341. package/lib/module/utils/haptics.js +59 -0
  342. package/lib/module/utils/haptics.js.map +1 -0
  343. package/lib/module/utils/imagePreloader.js +3 -0
  344. package/lib/module/utils/imagePreloader.js.map +1 -0
  345. package/lib/typescript/api/index.d.ts +8 -0
  346. package/lib/typescript/api/index.d.ts.map +1 -1
  347. package/lib/typescript/components/BodyText.d.ts +10 -0
  348. package/lib/typescript/components/BodyText.d.ts.map +1 -0
  349. package/lib/typescript/components/BrandMark.d.ts +11 -0
  350. package/lib/typescript/components/BrandMark.d.ts.map +1 -0
  351. package/lib/typescript/components/CodeInput.d.ts +10 -0
  352. package/lib/typescript/components/CodeInput.d.ts.map +1 -0
  353. package/lib/typescript/components/EmailInput.d.ts +8 -0
  354. package/lib/typescript/components/EmailInput.d.ts.map +1 -0
  355. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts +12 -0
  356. package/lib/typescript/components/ExistingUserDataConfirmation.d.ts.map +1 -0
  357. package/lib/typescript/components/GoogleButton.d.ts +11 -0
  358. package/lib/typescript/components/GoogleButton.d.ts.map +1 -0
  359. package/lib/typescript/components/HeadingGroup.d.ts +11 -0
  360. package/lib/typescript/components/HeadingGroup.d.ts.map +1 -0
  361. package/lib/typescript/components/ModalHeader.d.ts +11 -0
  362. package/lib/typescript/components/ModalHeader.d.ts.map +1 -0
  363. package/lib/typescript/components/ModalSheet.d.ts +13 -0
  364. package/lib/typescript/components/ModalSheet.d.ts.map +1 -0
  365. package/lib/typescript/components/Onairos.d.ts.map +1 -1
  366. package/lib/typescript/components/OnairosButton.d.ts +29 -4
  367. package/lib/typescript/components/OnairosButton.d.ts.map +1 -1
  368. package/lib/typescript/components/OnairosSignInButton.d.ts +14 -0
  369. package/lib/typescript/components/OnairosSignInButton.d.ts.map +1 -0
  370. package/lib/typescript/components/PersonaImage.d.ts +8 -0
  371. package/lib/typescript/components/PersonaImage.d.ts.map +1 -0
  372. package/lib/typescript/components/PersonaLoadingScreen.d.ts +10 -0
  373. package/lib/typescript/components/PersonaLoadingScreen.d.ts.map +1 -0
  374. package/lib/typescript/components/PersonalizationConsentScreen.d.ts +10 -0
  375. package/lib/typescript/components/PersonalizationConsentScreen.d.ts.map +1 -0
  376. package/lib/typescript/components/PinCreationScreen.d.ts +10 -0
  377. package/lib/typescript/components/PinCreationScreen.d.ts.map +1 -0
  378. package/lib/typescript/components/PinInput.d.ts +11 -1
  379. package/lib/typescript/components/PinInput.d.ts.map +1 -1
  380. package/lib/typescript/components/PlatformConnectorsStep.d.ts +11 -0
  381. package/lib/typescript/components/PlatformConnectorsStep.d.ts.map +1 -0
  382. package/lib/typescript/components/PlatformToggle.d.ts +20 -0
  383. package/lib/typescript/components/PlatformToggle.d.ts.map +1 -0
  384. package/lib/typescript/components/PrimaryButton.d.ts +22 -0
  385. package/lib/typescript/components/PrimaryButton.d.ts.map +1 -0
  386. package/lib/typescript/components/SignInMatchAnimation.d.ts +9 -0
  387. package/lib/typescript/components/SignInMatchAnimation.d.ts.map +1 -0
  388. package/lib/typescript/components/SignInStep.d.ts +12 -0
  389. package/lib/typescript/components/SignInStep.d.ts.map +1 -0
  390. package/lib/typescript/components/TrainingModal.d.ts +12 -1
  391. package/lib/typescript/components/TrainingModal.d.ts.map +1 -1
  392. package/lib/typescript/components/UniversalOnboarding.d.ts +14 -1
  393. package/lib/typescript/components/UniversalOnboarding.d.ts.map +1 -1
  394. package/lib/typescript/components/VerificationStep.d.ts +13 -0
  395. package/lib/typescript/components/VerificationStep.d.ts.map +1 -0
  396. package/lib/typescript/components/WelcomeScreen.d.ts +9 -0
  397. package/lib/typescript/components/WelcomeScreen.d.ts.map +1 -0
  398. package/lib/typescript/components/icons/Basicproficon.d.ts +5 -0
  399. package/lib/typescript/components/icons/Basicproficon.d.ts.map +1 -0
  400. package/lib/typescript/components/icons/Basicprofile.d.ts +5 -0
  401. package/lib/typescript/components/icons/Basicprofile.d.ts.map +1 -0
  402. package/lib/typescript/components/icons/Checkbox.d.ts +5 -0
  403. package/lib/typescript/components/icons/Checkbox.d.ts.map +1 -0
  404. package/lib/typescript/components/icons/Checkmark.d.ts +5 -0
  405. package/lib/typescript/components/icons/Checkmark.d.ts.map +1 -0
  406. package/lib/typescript/components/icons/Contentanalysis.d.ts +5 -0
  407. package/lib/typescript/components/icons/Contentanalysis.d.ts.map +1 -0
  408. package/lib/typescript/components/icons/Contenticon.d.ts +5 -0
  409. package/lib/typescript/components/icons/Contenticon.d.ts.map +1 -0
  410. package/lib/typescript/components/icons/EnochE.d.ts +5 -0
  411. package/lib/typescript/components/icons/EnochE.d.ts.map +1 -0
  412. package/lib/typescript/components/icons/Personalityicon.d.ts +5 -0
  413. package/lib/typescript/components/icons/Personalityicon.d.ts.map +1 -0
  414. package/lib/typescript/components/icons/Personalityprofile.d.ts +5 -0
  415. package/lib/typescript/components/icons/Personalityprofile.d.ts.map +1 -0
  416. package/lib/typescript/components/icons/Personalitytraits.d.ts +5 -0
  417. package/lib/typescript/components/icons/Personalitytraits.d.ts.map +1 -0
  418. package/lib/typescript/components/icons/Userpreferences.d.ts +5 -0
  419. package/lib/typescript/components/icons/Userpreferences.d.ts.map +1 -0
  420. package/lib/typescript/components/icons/index.d.ts +12 -0
  421. package/lib/typescript/components/icons/index.d.ts.map +1 -0
  422. package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +1 -1
  423. package/lib/typescript/config/api.d.ts +24 -0
  424. package/lib/typescript/config/api.d.ts.map +1 -0
  425. package/lib/typescript/context/AuthContext.d.ts +34 -0
  426. package/lib/typescript/context/AuthContext.d.ts.map +1 -0
  427. package/lib/typescript/hooks/useConnectedAccounts.d.ts +11 -0
  428. package/lib/typescript/hooks/useConnectedAccounts.d.ts.map +1 -0
  429. package/lib/typescript/hooks/useConnections.d.ts +10 -5
  430. package/lib/typescript/hooks/useConnections.d.ts.map +1 -1
  431. package/lib/typescript/hooks/useUserConnections.d.ts +12 -0
  432. package/lib/typescript/hooks/useUserConnections.d.ts.map +1 -0
  433. package/lib/typescript/index.d.ts +24 -6
  434. package/lib/typescript/index.d.ts.map +1 -1
  435. package/lib/typescript/services/apiClient.d.ts +91 -0
  436. package/lib/typescript/services/apiClient.d.ts.map +1 -0
  437. package/lib/typescript/services/authService.d.ts +216 -0
  438. package/lib/typescript/services/authService.d.ts.map +1 -0
  439. package/lib/typescript/services/biometricPinService.d.ts +29 -0
  440. package/lib/typescript/services/biometricPinService.d.ts.map +1 -0
  441. package/lib/typescript/services/connectedAccountsService.d.ts +56 -0
  442. package/lib/typescript/services/connectedAccountsService.d.ts.map +1 -0
  443. package/lib/typescript/services/googleAuthService.d.ts +63 -0
  444. package/lib/typescript/services/googleAuthService.d.ts.map +1 -0
  445. package/lib/typescript/services/imageCompressionService.d.ts +37 -0
  446. package/lib/typescript/services/imageCompressionService.d.ts.map +1 -0
  447. package/lib/typescript/services/jwtStorageService.d.ts +86 -0
  448. package/lib/typescript/services/jwtStorageService.d.ts.map +1 -0
  449. package/lib/typescript/services/mobileTrainingService.d.ts +45 -0
  450. package/lib/typescript/services/mobileTrainingService.d.ts.map +1 -0
  451. package/lib/typescript/services/pinEncryptionService.d.ts +17 -0
  452. package/lib/typescript/services/pinEncryptionService.d.ts.map +1 -0
  453. package/lib/typescript/services/pinStorageUtils.d.ts +25 -0
  454. package/lib/typescript/services/pinStorageUtils.d.ts.map +1 -0
  455. package/lib/typescript/services/platformAuthService.d.ts +34 -109
  456. package/lib/typescript/services/platformAuthService.d.ts.map +1 -1
  457. package/lib/typescript/services/storageService.d.ts +128 -0
  458. package/lib/typescript/services/storageService.d.ts.map +1 -0
  459. package/lib/typescript/services/trainingApiHelpers.d.ts +38 -0
  460. package/lib/typescript/services/trainingApiHelpers.d.ts.map +1 -0
  461. package/lib/typescript/services/userConnectionsService.d.ts +90 -0
  462. package/lib/typescript/services/userConnectionsService.d.ts.map +1 -0
  463. package/lib/typescript/services/youtubeMigrationService.d.ts +12 -0
  464. package/lib/typescript/services/youtubeMigrationService.d.ts.map +1 -0
  465. package/lib/typescript/theme/index.d.ts +416 -0
  466. package/lib/typescript/theme/index.d.ts.map +1 -0
  467. package/lib/typescript/types/index.d.ts +39 -0
  468. package/lib/typescript/types/index.d.ts.map +1 -1
  469. package/lib/typescript/utils/eventUtils.d.ts +108 -0
  470. package/lib/typescript/utils/eventUtils.d.ts.map +1 -0
  471. package/lib/typescript/utils/haptics.d.ts +11 -0
  472. package/lib/typescript/utils/haptics.d.ts.map +1 -0
  473. package/lib/typescript/utils/imagePreloader.d.ts +2 -0
  474. package/lib/typescript/utils/imagePreloader.d.ts.map +1 -0
  475. package/package.json +158 -145
  476. package/src/api/index.ts +41 -0
  477. package/src/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
  478. package/src/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  479. package/src/assets/icons/Facebookicon.png +0 -0
  480. package/src/assets/icons/Gmail.png +0 -0
  481. package/src/assets/icons/Linkedinicon.png +0 -0
  482. package/src/assets/icons/Redditicon.png +0 -0
  483. package/src/assets/icons/YouTubeicon2.png +0 -0
  484. package/src/assets/icons/YouTubeicon3.png +0 -0
  485. package/src/assets/icons/farcaster.png +0 -0
  486. package/src/assets/icons/instagram.png +0 -0
  487. package/src/assets/icons/pinterest.png +0 -0
  488. package/src/assets/icons/swerv_logo.png +0 -0
  489. package/src/assets/icons/twitter.jpg +0 -0
  490. package/src/assets/images/Checkbox.svg +3 -0
  491. package/src/assets/images/EnochE.svg +19 -0
  492. package/src/assets/images/Enochicon1.png +0 -0
  493. package/src/assets/images/Face_ID_logo.png +0 -0
  494. package/src/assets/images/Facebookicon.png +0 -0
  495. package/src/assets/images/Gmail.png +0 -0
  496. package/src/assets/images/Googlelogo.png +0 -0
  497. package/src/assets/images/Linkedinicon.png +0 -0
  498. package/src/assets/images/Onairoslogo.png +0 -0
  499. package/src/assets/images/Personalityprofile.svg +3 -0
  500. package/src/assets/images/Personalitytraits.svg +3 -0
  501. package/src/assets/images/Redditicon.png +0 -0
  502. package/src/assets/images/Userpreferences.svg +3 -0
  503. package/src/assets/images/YouTubeicon3.png +0 -0
  504. package/src/assets/images/arrow.svg +20 -0
  505. package/src/assets/images/basicproficon.svg +43 -0
  506. package/src/assets/images/basicprofile.svg +3 -0
  507. package/src/assets/images/checkmark.svg +4 -0
  508. package/src/assets/images/contentanalysis.svg +3 -0
  509. package/src/assets/images/contenticon.svg +23 -0
  510. package/src/assets/images/persona1.png +0 -0
  511. package/src/assets/images/persona2.png +0 -0
  512. package/src/assets/images/persona3.png +0 -0
  513. package/src/assets/images/persona4.png +0 -0
  514. package/src/assets/images/persona5.png +0 -0
  515. package/src/assets/images/personalityicon.svg +18 -0
  516. package/src/assets/images/x-close.svg +3 -0
  517. package/src/components/BodyText.tsx +33 -0
  518. package/src/components/BrandMark.tsx +62 -0
  519. package/src/components/CodeInput.tsx +32 -0
  520. package/src/components/EmailInput.tsx +31 -0
  521. package/src/components/ExistingUserDataConfirmation.tsx +507 -0
  522. package/src/components/GoogleButton.tsx +55 -0
  523. package/src/components/HeadingGroup.tsx +49 -0
  524. package/src/components/ModalHeader.tsx +125 -0
  525. package/src/components/ModalSheet.tsx +57 -0
  526. package/src/components/Onairos.tsx +422 -424
  527. package/src/components/OnairosButton.tsx +339 -359
  528. package/src/components/OnairosSignInButton.tsx +166 -0
  529. package/src/components/Overlay.tsx +506 -506
  530. package/src/components/PersonaImage.tsx +79 -0
  531. package/src/components/PersonaLoadingScreen.tsx +201 -0
  532. package/src/components/PersonalizationConsentScreen.tsx +410 -0
  533. package/src/components/PinCreationScreen.tsx +492 -0
  534. package/src/components/PinInput.tsx +555 -343
  535. package/src/components/PlatformConnectorsStep.tsx +892 -0
  536. package/src/components/PlatformToggle.tsx +226 -0
  537. package/src/components/PrimaryButton.tsx +214 -0
  538. package/src/components/SignInMatchAnimation.tsx +225 -0
  539. package/src/components/SignInStep.tsx +217 -0
  540. package/src/components/TrainingModal.tsx +1047 -737
  541. package/src/components/UniversalOnboarding.tsx +2888 -1820
  542. package/src/components/VerificationStep.tsx +198 -0
  543. package/src/components/WelcomeScreen.tsx +473 -0
  544. package/src/components/icons/Basicproficon.tsx +30 -0
  545. package/src/components/icons/Basicprofile.tsx +17 -0
  546. package/src/components/icons/Checkbox.tsx +17 -0
  547. package/src/components/icons/Checkmark.tsx +24 -0
  548. package/src/components/icons/Contentanalysis.tsx +17 -0
  549. package/src/components/icons/Contenticon.tsx +30 -0
  550. package/src/components/icons/EnochE.tsx +39 -0
  551. package/src/components/icons/Personalityicon.tsx +22 -0
  552. package/src/components/icons/Personalityprofile.tsx +17 -0
  553. package/src/components/icons/Personalitytraits.tsx +17 -0
  554. package/src/components/icons/Userpreferences.tsx +17 -0
  555. package/src/components/icons/index.ts +12 -0
  556. package/src/components/onboarding/OAuthWebView.tsx +232 -838
  557. package/src/config/api.ts +25 -0
  558. package/src/context/AuthContext.tsx +393 -0
  559. package/src/hooks/useConnectedAccounts.ts +139 -0
  560. package/src/hooks/useConnections.ts +129 -131
  561. package/src/hooks/useUserConnections.ts +166 -0
  562. package/src/index.ts +94 -49
  563. package/src/services/apiClient.ts +337 -0
  564. package/src/services/authService.ts +1008 -0
  565. package/src/services/biometricPinService.ts +193 -0
  566. package/src/services/connectedAccountsService.ts +290 -0
  567. package/src/services/googleAuthService.ts +279 -0
  568. package/src/services/imageCompressionService.ts +303 -0
  569. package/src/services/jwtStorageService.ts +257 -0
  570. package/src/services/mobileTrainingService.ts +204 -0
  571. package/src/services/pinEncryptionService.ts +76 -0
  572. package/src/services/pinStorageUtils.ts +97 -0
  573. package/src/services/platformAuthService.ts +1346 -1113
  574. package/src/services/storageService.ts +452 -0
  575. package/src/services/trainingApiHelpers.ts +67 -0
  576. package/src/services/userConnectionsService.ts +557 -0
  577. package/src/services/youtubeMigrationService.ts +454 -0
  578. package/src/theme/index.ts +239 -0
  579. package/src/types/index.ts +265 -238
  580. package/src/utils/eventUtils.ts +303 -0
  581. package/src/utils/haptics.ts +59 -0
  582. package/src/utils/imagePreloader.ts +2 -0
  583. package/README.md +0 -375
  584. package/lib/commonjs/assets/images/email.png +0 -0
  585. package/lib/commonjs/assets/images/linkedin.png +0 -0
  586. package/lib/commonjs/assets/images/reddit.png +0 -0
  587. package/lib/commonjs/assets/images/youtube.png +0 -0
  588. package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
  589. package/lib/module/assets/images/email.png +0 -0
  590. package/lib/module/assets/images/linkedin.png +0 -0
  591. package/lib/module/assets/images/reddit.png +0 -0
  592. package/lib/module/assets/images/youtube.png +0 -0
  593. package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
  594. package/src/assets/images/email.png +0 -0
  595. package/src/assets/images/linkedin.png +0 -0
  596. package/src/assets/images/reddit.png +0 -0
  597. package/src/assets/images/youtube.png +0 -0
  598. package/src/components/UniversalOnboarding.tsx.new +0 -455
@@ -1,8 +1,6 @@
1
- import React, { useState, useRef } from 'react';
2
- import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, SafeAreaView, Dimensions, Linking } from 'react-native';
1
+ import React, { useState } from 'react';
2
+ import { View, Text, StyleSheet, TouchableOpacity, ActivityIndicator, SafeAreaView, Dimensions } from 'react-native';
3
3
  import { WebView } from 'react-native-webview';
4
- import Icon from 'react-native-vector-icons/MaterialIcons';
5
- import { COLORS } from '../../constants';
6
4
  const {
7
5
  width,
8
6
  height
@@ -14,805 +12,199 @@ export const OAuthWebView = ({
14
12
  platform = 'platform',
15
13
  onComplete
16
14
  }) => {
17
- var _url$split$, _url$split$2;
18
15
  const [isLoading, setIsLoading] = useState(true);
19
- const [error, setError] = useState(null);
20
- const [errorMessage, setErrorMessage] = useState('');
21
- const [isRetryable, setIsRetryable] = useState(true);
22
- const [retryCount, setRetryCount] = useState(0);
23
- const webViewRef = useRef(null);
24
- const timeoutRef = useRef(null);
25
- console.log('🌐 Opening OAuth WebView with URL:', url);
26
- console.log('🔗 Platform:', platform);
27
- console.log('📱 URL Components:', {
28
- protocol: url.split('://')[0],
29
- domain: (_url$split$ = url.split('://')[1]) === null || _url$split$ === void 0 ? void 0 : _url$split$.split('/')[0],
30
- path: (_url$split$2 = url.split('://')[1]) === null || _url$split$2 === void 0 ? void 0 : _url$split$2.split('/').slice(1).join('/')
31
- });
16
+ const [timeoutReached, setTimeoutReached] = useState(false);
17
+ console.log('Opening OAuth WebView with URL:', url);
32
18
 
33
- // Set up timeout for OAuth flow
19
+ // Set up a timeout to prevent infinite waiting
34
20
  React.useEffect(() => {
35
- // Clear any existing timeout
36
- if (timeoutRef.current) {
37
- clearTimeout(timeoutRef.current);
38
- }
39
-
40
- // Set a 60-second timeout for OAuth completion
41
- timeoutRef.current = setTimeout(() => {
42
- console.log('OAuth flow timeout - no completion detected');
43
- setError('OAuth flow is taking too long. Please try again or use the browser option.');
44
- setIsLoading(false);
45
- }, 60000);
46
- return () => {
47
- if (timeoutRef.current) {
48
- clearTimeout(timeoutRef.current);
49
- }
50
- };
51
- }, [url]);
52
-
53
- // Clear timeout when component unmounts or OAuth completes
54
- React.useEffect(() => {
55
- return () => {
56
- if (timeoutRef.current) {
57
- clearTimeout(timeoutRef.current);
58
- }
59
- };
60
- }, []);
61
- const onNavigationStateChange = navState => {
62
- const currentUrl = navState.url;
63
- console.log('🌐 Navigation state changed:', {
64
- url: currentUrl,
65
- canGoBack: navState.canGoBack,
66
- canGoForward: navState.canGoForward,
67
- loading: navState.loading,
68
- title: navState.title
69
- });
70
-
71
- // Don't process if still loading
72
- if (navState.loading) {
73
- return;
74
- }
75
-
76
- // Check if this URL indicates OAuth completion
77
- if (isOAuthComplete(currentUrl)) {
78
- console.log('🎉 OAuth completion detected!');
79
-
80
- // Extract the result
81
- const result = extractOAuthResult(currentUrl);
82
- if (result.success) {
83
- console.log('✅ OAuth completed successfully:', result);
84
-
85
- // Clear timeout
86
- if (timeoutRef.current) {
87
- clearTimeout(timeoutRef.current);
88
- timeoutRef.current = null;
89
- }
90
-
91
- // Call success callback
92
- if (onSuccess && result.code) {
93
- onSuccess(result.code);
94
- }
95
-
96
- // Close the WebView
21
+ const timeout = setTimeout(() => {
22
+ console.log(`⏰ OAuth timeout reached for ${platform} after 1 minutes`);
23
+ setTimeoutReached(true);
24
+ }, 60000); // 1 minutes timeout
25
+
26
+ return () => clearTimeout(timeout);
27
+ }, [platform]);
28
+ const handleNavigationStateChange = navState => {
29
+ console.log(`Navigation state changed for ${platform}:`, navState.url);
30
+
31
+ // Check for the final redirect to onairos.uk domain (this means backend callback completed)
32
+ const isFinalRedirect = navState.url.includes('onairos.uk/Home') || navState.url.includes('onairos.uk/home') || navState.url.includes('onairos.uk/success') || navState.url.startsWith('https://onairos.uk/Home') || navState.url.startsWith('https://onairos.uk/home');
33
+
34
+ // For all platforms, we need to wait for the backend callback to complete
35
+ // The backend processes the OAuth callback and then redirects to onairos.uk/Home
36
+ if (isFinalRedirect) {
37
+ console.log(`${platform} OAuth completed - backend callback finished and redirected to Home`);
38
+ onSuccess('success');
39
+
40
+ // Close the OAuth window after a small delay to ensure redirect is processed
41
+ setTimeout(() => {
97
42
  if (onComplete) {
43
+ console.log(`Closing ${platform} OAuth window after callback completion`);
98
44
  onComplete();
99
45
  }
100
- } else {
101
- console.error('❌ OAuth failed:', result.error);
102
-
103
- // Clear timeout
104
- if (timeoutRef.current) {
105
- clearTimeout(timeoutRef.current);
106
- timeoutRef.current = null;
107
- }
108
-
109
- // Set error state
110
- setError('OAuth authentication failed');
111
- setErrorMessage(result.error || 'Authentication failed');
112
- setIsRetryable(true);
113
- }
114
- }
115
-
116
- // Additional check for Gmail specific patterns
117
- if (platform === 'email' || platform === 'gmail') {
118
- const gmailPatterns = ['onairos.uk/Home', 'onairos.uk/home', 'https://onairos.uk/Home', 'https://onairos.uk/home'];
119
- for (const pattern of gmailPatterns) {
120
- if (currentUrl.includes(pattern)) {
121
- console.log('✅ Gmail OAuth success detected via home page redirect');
122
-
123
- // Clear timeout
124
- if (timeoutRef.current) {
125
- clearTimeout(timeoutRef.current);
126
- timeoutRef.current = null;
127
- }
128
-
129
- // Call success callback with Gmail-specific code
130
- if (onSuccess) {
131
- onSuccess('gmail_success');
132
- }
133
-
134
- // Close the WebView
135
- if (onComplete) {
136
- onComplete();
137
- }
138
- return;
139
- }
140
- }
141
- }
142
-
143
- // Check for error URLs
144
- const errorPatterns = ['error=', 'error_description=', 'access_denied', 'user_cancelled', 'cancelled', 'denied'];
145
- for (const pattern of errorPatterns) {
146
- if (currentUrl.includes(pattern)) {
147
- console.log('❌ OAuth error detected in URL:', pattern);
148
-
149
- // Clear timeout
150
- if (timeoutRef.current) {
151
- clearTimeout(timeoutRef.current);
152
- timeoutRef.current = null;
153
- }
154
-
155
- // Parse error details
156
- try {
157
- const urlObj = new URL(currentUrl);
158
- const params = new URLSearchParams(urlObj.search);
159
- const errorDescription = params.get('error_description') || params.get('error') || 'Authentication failed';
160
- setError('OAuth authentication failed');
161
- setErrorMessage(errorDescription);
162
- setIsRetryable(true);
163
- } catch (parseError) {
164
- setError('OAuth authentication failed');
165
- setErrorMessage('Authentication failed');
166
- setIsRetryable(true);
167
- }
168
- return;
169
- }
170
- }
171
- };
172
- const handleLoadEnd = () => {
173
- setIsLoading(false);
174
- setError(null);
175
- setErrorMessage('');
176
- };
177
- const handleError = syntheticEvent => {
178
- const {
179
- nativeEvent
180
- } = syntheticEvent;
181
- console.error('🚨 WebView error details:', {
182
- description: nativeEvent.description,
183
- code: nativeEvent.code,
184
- domain: nativeEvent.domain,
185
- url: nativeEvent.url,
186
- canGoBack: nativeEvent.canGoBack,
187
- canGoForward: nativeEvent.canGoForward,
188
- loading: nativeEvent.loading,
189
- target: nativeEvent.target,
190
- title: nativeEvent.title
191
- });
192
-
193
- // Check for specific NSURLErrorDomain codes
194
- let errorMessage = 'Failed to load OAuth page.';
195
- let isRetryable = true;
196
- if (nativeEvent.domain === 'NSURLErrorDomain') {
197
- switch (nativeEvent.code) {
198
- case -1009:
199
- // NSURLErrorNotConnectedToInternet
200
- errorMessage = 'No internet connection. Please check your network and try again.';
201
- isRetryable = true;
202
- break;
203
- case -1003:
204
- // NSURLErrorCannotFindHost
205
- errorMessage = 'Cannot reach authentication server. Please check your internet connection.';
206
- isRetryable = true;
207
- break;
208
- case -1001:
209
- // NSURLErrorTimedOut
210
- errorMessage = 'Connection timed out. Please try again.';
211
- isRetryable = true;
212
- break;
213
- case -1200:
214
- // NSURLErrorSecureConnectionFailed
215
- errorMessage = 'Secure connection failed. Please try again.';
216
- isRetryable = true;
217
- break;
218
- case -1022:
219
- // NSURLErrorAppTransportSecurityRequiresSecureConnection
220
- errorMessage = 'App Transport Security error. Connection must be secure.';
221
- isRetryable = false;
222
- break;
223
- case -1004:
224
- // NSURLErrorCannotConnectToHost
225
- errorMessage = 'Cannot connect to authentication server. Please try again later.';
226
- isRetryable = true;
227
- break;
228
- case -1005:
229
- // NSURLErrorNetworkConnectionLost
230
- errorMessage = 'Network connection lost. Please check your connection and try again.';
231
- isRetryable = true;
232
- break;
233
- case -1020:
234
- // NSURLErrorDataNotAllowed
235
- errorMessage = 'Data not allowed. Please check your cellular data settings.';
236
- isRetryable = true;
237
- break;
238
- default:
239
- errorMessage = `Network error (${nativeEvent.code}): ${nativeEvent.description || 'Please check your connection and try again.'}`;
240
- isRetryable = true;
241
- }
242
- } else if (nativeEvent.domain === 'WebKitErrorDomain') {
243
- switch (nativeEvent.code) {
244
- case 102:
245
- // WebKitErrorFrameLoadInterruptedByPolicyChange
246
- errorMessage = 'Page load was interrupted. Please try again.';
247
- isRetryable = true;
248
- break;
249
- case 204:
250
- // WebKitErrorPlugInLoadFailed
251
- errorMessage = 'Plugin failed to load. Please try again.';
252
- isRetryable = true;
253
- break;
254
- default:
255
- errorMessage = `WebKit error (${nativeEvent.code}): ${nativeEvent.description || 'Please try again.'}`;
256
- isRetryable = true;
257
- }
258
- }
259
- console.error('🔴 OAuth WebView Error:', errorMessage);
260
-
261
- // Implement smart retry logic
262
- if (isRetryable && retryCount < 3) {
263
- console.log(`🔄 Auto-retrying OAuth load (attempt ${retryCount + 1}/3) in 3 seconds...`);
264
- setRetryCount(prev => prev + 1);
265
- setIsLoading(true);
266
- setError(null);
267
-
268
- // Retry after a delay with exponential backoff
269
- const retryDelay = 3000 * Math.pow(2, retryCount); // 3s, 6s, 12s
270
- setTimeout(() => {
271
- if (webViewRef.current) {
272
- console.log(`🔄 Attempting retry ${retryCount + 1}...`);
273
- webViewRef.current.reload();
274
- }
275
- }, retryDelay);
276
- } else {
277
- setError(errorMessage);
278
- setIsLoading(false);
279
-
280
- // Show additional help for persistent errors
281
- if (retryCount >= 3) {
282
- console.log('❌ Maximum retries reached, showing error to user');
283
- }
284
- }
285
- };
286
- const handleOpenInBrowser = () => {
287
- console.log('Opening OAuth URL in external browser:', url);
288
- Linking.openURL(url).catch(err => {
289
- console.error('Failed to open URL in browser:', err);
290
- setError('Unable to open browser. Please check your device settings.');
291
- });
292
- };
293
- const handleRetry = () => {
294
- console.log('Manual retry requested');
295
- setError(null);
296
- setErrorMessage('');
297
- setIsRetryable(true);
298
- setIsLoading(true);
299
- setRetryCount(0);
300
- if (webViewRef.current) {
301
- webViewRef.current.reload();
302
- }
303
- };
304
-
305
- /**
306
- * Get platform-specific icon
307
- */
308
- const getPlatformIcon = platform => {
309
- switch (platform) {
310
- case 'instagram':
311
- return 'photo-camera';
312
- case 'youtube':
313
- return 'smart-display';
314
- case 'pinterest':
315
- return 'push-pin';
316
- case 'reddit':
317
- return 'forum';
318
- case 'email':
319
- return 'email';
320
- default:
321
- return 'link';
322
- }
323
- };
324
-
325
- /**
326
- * Get platform-specific color
327
- */
328
- const getPlatformColor = platform => {
329
- switch (platform) {
330
- case 'instagram':
331
- return '#E1306C';
332
- case 'youtube':
333
- return '#FF0000';
334
- case 'pinterest':
335
- return '#E60023';
336
- case 'reddit':
337
- return '#FF4500';
338
- case 'email':
339
- return '#4285F4';
340
- default:
341
- return COLORS.primary;
342
- }
343
- };
344
-
345
- // Check if URL indicates OAuth completion
346
- const isOAuthComplete = url => {
347
- // Gmail OAuth completion patterns
348
- const gmailSuccessPatterns = ['https://onairos.uk/Home', 'https://onairos.uk/home', 'onairos.uk/Home', 'onairos.uk/home', process.env.APP_HOME_URL].filter(Boolean);
349
-
350
- // Check for success redirect patterns
351
- for (const pattern of gmailSuccessPatterns) {
352
- if (url.includes(pattern)) {
353
- console.log('✅ OAuth success detected via redirect to:', pattern);
354
- return true;
355
- }
46
+ }, 1000); // Increased delay to ensure backend processing completes
47
+ return; // Exit early to avoid other triggers
356
48
  }
357
49
 
358
- // Check for traditional OAuth callback patterns (more specific)
359
- // Only match actual query parameters, not just any occurrence in the URL
360
- const callbackPatterns = ['code=', 'access_token=', 'oauth_token=', 'authorization_code=', 'auth_code=', 'token='];
361
- for (const pattern of callbackPatterns) {
362
- if (url.includes(pattern)) {
363
- console.log('✅ OAuth success detected via callback parameter:', pattern);
364
- return true;
365
- }
366
- }
367
-
368
- // Check for specific callback URLs (more targeted than generic words)
369
- const callbackUrlPatterns = ['/callback', '/oauth/callback', '/auth/callback', 'redirect_uri', 'onairos.uk/callback', 'onairos.uk/oauth'];
370
- for (const pattern of callbackUrlPatterns) {
371
- if (url.includes(pattern)) {
372
- console.log('✅ OAuth success detected via callback URL pattern:', pattern);
373
- return true;
374
- }
375
- }
376
-
377
- // Check for error patterns
378
- const errorPatterns = ['error=', 'error_description=', 'oauth_error=', 'auth_error=', 'access_denied', 'user_cancelled', 'cancelled', 'denied'];
379
- for (const pattern of errorPatterns) {
380
- if (url.includes(pattern)) {
381
- console.log('❌ OAuth error detected via pattern:', pattern);
382
- return false;
383
- }
384
- }
385
- return false;
386
- };
387
-
388
- // Extract OAuth result from URL
389
- const extractOAuthResult = url => {
390
- try {
391
- const urlObj = new URL(url);
392
- const params = new URLSearchParams(urlObj.search);
393
-
394
- // Check for error first
395
- const error = params.get('error') || params.get('error_description') || params.get('oauth_error');
396
- if (error) {
397
- return {
398
- success: false,
399
- error
400
- };
401
- }
402
-
403
- // Check for success indicators
404
- const code = params.get('code') || params.get('authorization_code') || params.get('auth_code');
405
- const accessToken = params.get('access_token') || params.get('oauth_token') || params.get('token');
406
- if (code || accessToken) {
407
- return {
408
- success: true,
409
- code: code || accessToken
410
- };
411
- }
50
+ // Log intermediate callback URLs for debugging but don't close yet
51
+ const isIntermediateCallback = navState.url.includes('/callback') || navState.url.includes('code=') || navState.url.includes('token=') || navState.url.includes('access_token=');
52
+ if (isIntermediateCallback && !isFinalRedirect) {
53
+ console.log(`Detected intermediate callback URL for ${platform}:`, navState.url);
54
+ console.log('Waiting for backend processing to complete and final redirect...');
412
55
 
413
- // Check for success redirect to home page (Gmail pattern)
414
- const gmailSuccessPatterns = ['https://onairos.uk/Home', 'https://onairos.uk/home', 'onairos.uk/Home', 'onairos.uk/home'];
415
- for (const pattern of gmailSuccessPatterns) {
416
- if (url.includes(pattern)) {
417
- console.log('✅ Gmail OAuth success detected via home page redirect');
418
- return {
419
- success: true,
420
- code: 'gmail_home_redirect'
421
- };
422
- }
56
+ // Extract authorization code for logging purposes
57
+ const codeMatch = navState.url.match(/code=([^&]+)/);
58
+ if (codeMatch && codeMatch[1]) {
59
+ console.log('OAuth code detected:', codeMatch[1]);
423
60
  }
424
61
 
425
- // If we reached here and isOAuthComplete returned true, assume success
426
- if (isOAuthComplete(url)) {
427
- return {
428
- success: true,
429
- code: 'oauth_complete'
430
- };
431
- }
432
- return {
433
- success: false,
434
- error: 'OAuth completion not detected'
435
- };
436
- } catch (error) {
437
- console.error('Error parsing OAuth URL:', error);
438
- return {
439
- success: false,
440
- error: 'Invalid OAuth callback URL'
441
- };
62
+ // Don't close yet - wait for the backend to process and redirect
63
+ return;
442
64
  }
443
65
  };
444
- if (error) {
445
- return /*#__PURE__*/React.createElement(SafeAreaView, {
446
- style: styles.container
447
- }, /*#__PURE__*/React.createElement(View, {
448
- style: styles.header
449
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
450
- onPress: onClose,
451
- style: styles.closeButton
452
- }, /*#__PURE__*/React.createElement(Icon, {
453
- name: "close",
454
- size: 24,
455
- color: "#000"
456
- })), /*#__PURE__*/React.createElement(View, {
457
- style: styles.titleContainer
458
- }, /*#__PURE__*/React.createElement(Icon, {
459
- name: getPlatformIcon(platform),
460
- size: 20,
461
- color: getPlatformColor(platform)
462
- }), /*#__PURE__*/React.createElement(Text, {
463
- style: styles.titleText
464
- }, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth"))), /*#__PURE__*/React.createElement(View, {
465
- style: styles.errorContainer
466
- }, /*#__PURE__*/React.createElement(Icon, {
467
- name: "error-outline",
468
- size: 48,
469
- color: "#FF6B6B"
470
- }), /*#__PURE__*/React.createElement(Text, {
471
- style: styles.errorTitle
472
- }, "Connection Error"), /*#__PURE__*/React.createElement(Text, {
473
- style: styles.errorMessage
474
- }, errorMessage || error), error.includes('internet') || error.includes('network') ? /*#__PURE__*/React.createElement(View, {
475
- style: styles.helpContainer
476
- }, /*#__PURE__*/React.createElement(Text, {
477
- style: styles.helpTitle
478
- }, "\uD83D\uDCA1 Troubleshooting Steps:"), /*#__PURE__*/React.createElement(Text, {
479
- style: styles.helpText
480
- }, "\u2022 Check your Wi-Fi or cellular connection"), /*#__PURE__*/React.createElement(Text, {
481
- style: styles.helpText
482
- }, "\u2022 Try switching between Wi-Fi and cellular"), /*#__PURE__*/React.createElement(Text, {
483
- style: styles.helpText
484
- }, "\u2022 Ensure you're not using a VPN that blocks OAuth"), /*#__PURE__*/React.createElement(Text, {
485
- style: styles.helpText
486
- }, "\u2022 Close other apps that might be using bandwidth")) : error.includes('timeout') ? /*#__PURE__*/React.createElement(View, {
487
- style: styles.helpContainer
488
- }, /*#__PURE__*/React.createElement(Text, {
489
- style: styles.helpTitle
490
- }, "\u23F1\uFE0F Connection Timeout:"), /*#__PURE__*/React.createElement(Text, {
491
- style: styles.helpText
492
- }, "\u2022 Your connection might be slow"), /*#__PURE__*/React.createElement(Text, {
493
- style: styles.helpText
494
- }, "\u2022 Try again when you have a stronger signal"), /*#__PURE__*/React.createElement(Text, {
495
- style: styles.helpText
496
- }, "\u2022 Use \"Open in Browser\" for better reliability")) : error.includes('secure') || error.includes('SSL') ? /*#__PURE__*/React.createElement(View, {
497
- style: styles.helpContainer
498
- }, /*#__PURE__*/React.createElement(Text, {
499
- style: styles.helpTitle
500
- }, "\uD83D\uDD12 Security Error:"), /*#__PURE__*/React.createElement(Text, {
501
- style: styles.helpText
502
- }, "\u2022 Check your device's date and time settings"), /*#__PURE__*/React.createElement(Text, {
503
- style: styles.helpText
504
- }, "\u2022 Update your device's operating system"), /*#__PURE__*/React.createElement(Text, {
505
- style: styles.helpText
506
- }, "\u2022 Try \"Open in Browser\" as an alternative")) : /*#__PURE__*/React.createElement(View, {
507
- style: styles.helpContainer
508
- }, /*#__PURE__*/React.createElement(Text, {
509
- style: styles.helpTitle
510
- }, "\uD83D\uDD27 General Solutions:"), /*#__PURE__*/React.createElement(Text, {
511
- style: styles.helpText
512
- }, "\u2022 Close and reopen the app"), /*#__PURE__*/React.createElement(Text, {
513
- style: styles.helpText
514
- }, "\u2022 Check your internet connection"), /*#__PURE__*/React.createElement(Text, {
515
- style: styles.helpText
516
- }, "\u2022 Use \"Open in Browser\" for better reliability")), /*#__PURE__*/React.createElement(View, {
517
- style: styles.buttonContainer
518
- }, isRetryable && /*#__PURE__*/React.createElement(TouchableOpacity, {
519
- style: styles.retryButton,
520
- onPress: handleRetry
521
- }, /*#__PURE__*/React.createElement(Icon, {
522
- name: "refresh",
523
- size: 20,
524
- color: "#fff",
525
- style: styles.buttonIcon
526
- }), /*#__PURE__*/React.createElement(Text, {
527
- style: styles.retryButtonText
528
- }, "Retry")), /*#__PURE__*/React.createElement(TouchableOpacity, {
529
- style: styles.browserButton,
530
- onPress: handleOpenInBrowser
531
- }, /*#__PURE__*/React.createElement(Icon, {
532
- name: "open-in-browser",
533
- size: 20,
534
- color: "#666",
535
- style: styles.buttonIcon
536
- }), /*#__PURE__*/React.createElement(Text, {
537
- style: styles.browserButtonText
538
- }, "Open in Browser"))), retryCount >= 3 && /*#__PURE__*/React.createElement(View, {
539
- style: styles.persistentErrorContainer
540
- }, /*#__PURE__*/React.createElement(Text, {
541
- style: styles.persistentErrorText
542
- }, "Still having trouble? Try these steps:"), /*#__PURE__*/React.createElement(Text, {
543
- style: styles.persistentErrorStep
544
- }, "1. Use \"Open in Browser\" for more reliable authentication"), /*#__PURE__*/React.createElement(Text, {
545
- style: styles.persistentErrorStep
546
- }, "2. Check if other apps can access the internet"), /*#__PURE__*/React.createElement(Text, {
547
- style: styles.persistentErrorStep
548
- }, "3. Restart your device if the problem persists"))));
549
- }
550
- return /*#__PURE__*/React.createElement(SafeAreaView, {
66
+ return /*#__PURE__*/React.createElement(View, {
67
+ style: styles.modalContainer
68
+ }, /*#__PURE__*/React.createElement(SafeAreaView, {
551
69
  style: styles.container
552
70
  }, /*#__PURE__*/React.createElement(View, {
553
71
  style: styles.header
554
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
72
+ }, /*#__PURE__*/React.createElement(Text, {
73
+ style: styles.title
74
+ }, "Connect ", platform.charAt(0).toUpperCase() + platform.slice(1)), timeoutReached && /*#__PURE__*/React.createElement(Text, {
75
+ style: styles.timeoutText
76
+ }, "Taking longer than expected..."), /*#__PURE__*/React.createElement(TouchableOpacity, {
555
77
  onPress: onClose,
556
78
  style: styles.closeButton
557
- }, /*#__PURE__*/React.createElement(Icon, {
558
- name: "close",
559
- size: 24,
560
- color: "#000"
561
- })), /*#__PURE__*/React.createElement(View, {
562
- style: styles.titleContainer
563
- }, /*#__PURE__*/React.createElement(Icon, {
564
- name: getPlatformIcon(platform),
565
- size: 20,
566
- color: getPlatformColor(platform)
79
+ }, /*#__PURE__*/React.createElement(Text, {
80
+ style: styles.closeButtonText
81
+ }, "\u2715"))), /*#__PURE__*/React.createElement(View, {
82
+ style: styles.webViewContainer
83
+ }, isLoading && /*#__PURE__*/React.createElement(View, {
84
+ style: styles.loadingContainer
85
+ }, /*#__PURE__*/React.createElement(ActivityIndicator, {
86
+ size: "large",
87
+ color: "#1BA9D4"
567
88
  }), /*#__PURE__*/React.createElement(Text, {
568
- style: styles.titleText
569
- }, platform.charAt(0).toUpperCase() + platform.slice(1), " OAuth")), /*#__PURE__*/React.createElement(TouchableOpacity, {
570
- onPress: handleOpenInBrowser,
571
- style: styles.browserButton
572
- }, /*#__PURE__*/React.createElement(Icon, {
573
- name: "open-in-browser",
574
- size: 20,
575
- color: "#666"
576
- }))), /*#__PURE__*/React.createElement(WebView, {
577
- ref: webViewRef,
89
+ style: styles.loadingText
90
+ }, "Loading...")), /*#__PURE__*/React.createElement(WebView, {
578
91
  source: {
579
92
  uri: url
580
93
  },
581
- onNavigationStateChange: onNavigationStateChange,
582
- onLoadEnd: handleLoadEnd,
583
- onError: handleError,
584
- onHttpError: syntheticEvent => {
585
- const {
586
- nativeEvent
587
- } = syntheticEvent;
588
- console.error('WebView HTTP error:', nativeEvent);
589
- setError('Failed to load OAuth page. Please check your internet connection.');
590
- setIsLoading(false);
591
- },
94
+ onNavigationStateChange: handleNavigationStateChange,
95
+ onLoadStart: () => setIsLoading(true),
96
+ onLoadEnd: () => setIsLoading(false),
592
97
  style: styles.webView,
593
98
  javaScriptEnabled: true,
594
99
  domStorageEnabled: true,
595
- startInLoadingState: true,
596
- scalesPageToFit: true,
597
- allowsInlineMediaPlayback: true,
598
- mediaPlaybackRequiresUserAction: false,
599
- mixedContentMode: "compatibility",
100
+ cacheEnabled: true // Enable cache to remember previous logins
101
+ ,
102
+ incognito: false // Disable incognito mode to remember previous logins
103
+ ,
600
104
  thirdPartyCookiesEnabled: true,
601
- sharedCookiesEnabled: true,
602
- cacheEnabled: true,
603
- allowsBackForwardNavigationGestures: true,
604
- allowsLinkPreview: false,
605
- userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1",
606
- onShouldStartLoadWithRequest: request => {
607
- console.log('WebView attempting to load:', request.url);
608
-
609
- // Block about:srcdoc and other problematic URLs
610
- if (request.url.startsWith('about:') || request.url.startsWith('data:') || request.url === 'about:blank') {
611
- console.log('Blocking problematic URL:', request.url);
612
- return false;
613
- }
614
-
615
- // Allow all other requests
616
- return true;
617
- },
618
- onLoadStart: syntheticEvent => {
105
+ sharedCookiesEnabled: true // Enable shared cookies for Google sign-in
106
+ ,
107
+ userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1",
108
+ onError: syntheticEvent => {
619
109
  const {
620
110
  nativeEvent
621
111
  } = syntheticEvent;
622
- console.log('WebView load started:', nativeEvent.url);
623
- setIsLoading(true);
112
+ console.error(`WebView error for ${platform}:`, nativeEvent);
113
+ // Don't automatically close on error - let user retry or manually close
624
114
  },
625
- onLoadProgress: syntheticEvent => {
115
+ onHttpError: syntheticEvent => {
626
116
  const {
627
117
  nativeEvent
628
118
  } = syntheticEvent;
629
- console.log('WebView load progress:', nativeEvent.progress);
630
- },
631
- renderError: errorName => /*#__PURE__*/React.createElement(View, {
632
- style: styles.errorContainer
633
- }, /*#__PURE__*/React.createElement(Icon, {
634
- name: "error-outline",
635
- size: 48,
636
- color: "#FF6B6B"
637
- }), /*#__PURE__*/React.createElement(Text, {
638
- style: styles.errorTitle
639
- }, "WebView Error"), /*#__PURE__*/React.createElement(Text, {
640
- style: styles.errorMessage
641
- }, "Failed to load the authentication page. Error: ", errorName), /*#__PURE__*/React.createElement(TouchableOpacity, {
642
- style: styles.retryButton,
643
- onPress: handleRetry
644
- }, /*#__PURE__*/React.createElement(Text, {
645
- style: styles.retryButtonText
646
- }, "Retry"))),
647
- renderLoading: () => /*#__PURE__*/React.createElement(View, {
648
- style: styles.loadingContainer
649
- }, /*#__PURE__*/React.createElement(ActivityIndicator, {
650
- size: "large",
651
- color: COLORS.primary
652
- }), /*#__PURE__*/React.createElement(Text, {
653
- style: styles.loadingText
654
- }, "Loading ", platform, "...")),
655
- injectedJavaScript: `
656
- // Prevent white screen issues
657
- window.addEventListener('error', function(e) {
658
- console.log('JavaScript error:', e.message);
659
- });
660
-
661
- // Handle OAuth redirects
662
- window.addEventListener('beforeunload', function(e) {
663
- console.log('Page unloading:', window.location.href);
664
- });
665
-
666
- // Monitor for OAuth completion
667
- setInterval(function() {
668
- if (window.location.href.includes('code=') ||
669
- window.location.href.includes('access_token=') ||
670
- window.location.href.includes('oauth_token=') ||
671
- window.location.href.includes('api2.onairos.uk')) {
672
- console.log('OAuth completion detected:', window.location.href);
673
- }
674
- }, 1000);
675
-
676
- true; // Required for injected JavaScript
677
- `
678
- }));
119
+ console.error(`WebView HTTP error for ${platform}: ${nativeEvent.statusCode}`, nativeEvent.url);
120
+
121
+ // If we get a 404 or similar error on the final redirect, it might still be successful
122
+ if (nativeEvent.url && nativeEvent.url.includes('onairos.uk')) {
123
+ console.log('HTTP error on onairos.uk domain - treating as potential success');
124
+ onSuccess('success');
125
+ if (onComplete) {
126
+ setTimeout(() => onComplete(), 1000);
127
+ }
128
+ }
129
+ }
130
+ }))));
679
131
  };
680
132
  const styles = StyleSheet.create({
133
+ modalContainer: {
134
+ position: 'absolute',
135
+ top: 0,
136
+ left: 0,
137
+ right: 0,
138
+ bottom: 0,
139
+ width: width,
140
+ height: height,
141
+ backgroundColor: '#fff',
142
+ zIndex: 9999
143
+ },
681
144
  container: {
682
145
  flex: 1,
683
- backgroundColor: '#fff'
146
+ backgroundColor: '#fff',
147
+ width: width,
148
+ height: height,
149
+ position: 'absolute',
150
+ top: 0,
151
+ left: 0,
152
+ right: 0,
153
+ bottom: 0,
154
+ zIndex: 999
684
155
  },
685
156
  header: {
686
157
  flexDirection: 'row',
687
158
  alignItems: 'center',
688
- height: 56,
689
- backgroundColor: '#f8f8f8',
159
+ justifyContent: 'space-between',
160
+ paddingHorizontal: 16,
161
+ paddingVertical: 12,
690
162
  borderBottomWidth: 1,
691
- borderBottomColor: '#e0e0e0',
692
- paddingHorizontal: 16
163
+ borderBottomColor: '#E5E5E5',
164
+ backgroundColor: '#fff',
165
+ zIndex: 1000
693
166
  },
694
- titleContainer: {
167
+ title: {
168
+ fontSize: 18,
169
+ fontWeight: '600',
170
+ color: '#333',
695
171
  flex: 1,
696
- flexDirection: 'row',
697
- alignItems: 'center',
698
- justifyContent: 'center'
699
- },
700
- titleText: {
701
- marginLeft: 8,
702
- fontSize: 16,
703
- fontWeight: '500',
704
- color: '#000'
172
+ textAlign: 'center'
705
173
  },
706
174
  closeButton: {
707
- padding: 8,
708
- position: 'absolute',
709
- left: 16,
710
- zIndex: 10
175
+ padding: 8
711
176
  },
712
- browserButton: {
713
- backgroundColor: 'transparent',
714
- borderWidth: 1,
715
- borderColor: '#666',
716
- paddingHorizontal: 24,
717
- paddingVertical: 12,
718
- borderRadius: 8,
719
- flexDirection: 'row',
720
- alignItems: 'center',
721
- justifyContent: 'center'
177
+ closeButtonText: {
178
+ fontSize: 20,
179
+ color: '#666'
180
+ },
181
+ webViewContainer: {
182
+ flex: 1,
183
+ width: width,
184
+ height: height - 60 // Adjust for header height
722
185
  },
723
186
  webView: {
724
- flex: 1
187
+ flex: 1,
188
+ width: '100%',
189
+ height: '100%'
725
190
  },
726
191
  loadingContainer: {
727
192
  ...StyleSheet.absoluteFillObject,
728
- backgroundColor: 'rgba(255, 255, 255, 0.8)',
729
193
  alignItems: 'center',
730
- justifyContent: 'center'
194
+ justifyContent: 'center',
195
+ backgroundColor: 'rgba(255, 255, 255, 0.9)',
196
+ zIndex: 1
731
197
  },
732
198
  loadingText: {
733
- marginTop: 10,
199
+ marginTop: 12,
734
200
  fontSize: 16,
735
201
  color: '#666'
736
202
  },
737
- errorContainer: {
738
- flex: 1,
739
- alignItems: 'center',
740
- justifyContent: 'center',
741
- padding: 20
742
- },
743
- errorTitle: {
744
- fontSize: 18,
745
- fontWeight: '600',
746
- color: '#333',
747
- marginTop: 16,
748
- marginBottom: 8
749
- },
750
- errorMessage: {
751
- fontSize: 14,
752
- color: '#666',
753
- textAlign: 'center',
754
- marginBottom: 20
755
- },
756
- retryButton: {
757
- backgroundColor: COLORS.primary,
758
- paddingHorizontal: 24,
759
- paddingVertical: 12,
760
- borderRadius: 8,
761
- marginRight: 10,
762
- flexDirection: 'row',
763
- alignItems: 'center',
764
- justifyContent: 'center'
765
- },
766
- retryButtonText: {
767
- color: '#fff',
768
- fontSize: 16,
769
- fontWeight: '600'
770
- },
771
- buttonContainer: {
772
- flexDirection: 'row',
773
- justifyContent: 'center',
774
- alignItems: 'center',
775
- marginTop: 10
776
- },
777
- browserButtonText: {
778
- color: '#666',
779
- fontSize: 16,
780
- fontWeight: '600'
781
- },
782
- helpContainer: {
783
- marginBottom: 20
784
- },
785
- helpTitle: {
786
- fontSize: 18,
787
- fontWeight: '600',
788
- color: '#333',
789
- marginBottom: 8
790
- },
791
- helpText: {
792
- fontSize: 14,
793
- color: '#666',
794
- textAlign: 'center'
795
- },
796
- buttonIcon: {
797
- marginRight: 10
798
- },
799
- persistentErrorContainer: {
800
- marginTop: 20,
801
- padding: 20,
802
- backgroundColor: '#f8f8f8',
803
- borderRadius: 8
804
- },
805
- persistentErrorText: {
806
- fontSize: 16,
807
- fontWeight: '600',
808
- color: '#333',
809
- marginBottom: 10
810
- },
811
- persistentErrorStep: {
812
- fontSize: 14,
813
- color: '#666',
203
+ timeoutText: {
204
+ fontSize: 12,
205
+ color: '#FF6B6B',
814
206
  textAlign: 'center',
815
- marginBottom: 5
207
+ marginTop: 4
816
208
  }
817
209
  });
818
210
  //# sourceMappingURL=OAuthWebView.js.map