@onairos/react-native 3.7.1 → 3.7.3
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.
- package/lib/commonjs/api/index.js +219 -9
- package/lib/commonjs/assets/icons/spotify.png +0 -0
- package/lib/commonjs/assets/images/spotify.png +0 -0
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/assets/icons/spotify.png +0 -0
- package/lib/module/assets/images/spotify.png +0 -0
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
package/lib/module/api/index.js
CHANGED
|
@@ -1 +1,211 @@
|
|
|
1
|
-
import axios from'axios';import{Platform}from'react-native';import{API_ENDPOINTS}from'../constants';const isDevelopmentMode=()=>{const _0x44f701={'Frkhg':function(_0x1ccb7a,_0x2b8f60){return _0x1ccb7a===_0x2b8f60;}};return __DEV__||_0x44f701['Frkhg'](process[_0x3108(0x0)]['NODE_ENV'],_0x3108(0x1));},createMockResponse=_0xcf794e=>{return Promise[_0x3108(0x2)]({'data':_0xcf794e,'status':0xc8,'statusText':'OK','headers':{},'config':{}});},apiInstance=axios['create']({'baseURL':API_ENDPOINTS[_0x3108(0x3)],'timeout':0x2710,'headers':{'Content-Type':'application/json','Accept':'application/json'}});function _0x57cb(){const _0x25e37d=['env','development','resolve','base','response','use','API\x20error\x20in\x20development\x20mode,\x20using\x20fallback:','warn','zDMmM','zXWws','reject','Error\x20sending\x20verification\x20code:','Mock\x20verification\x20code\x20sent','Failed\x20to\x20send\x20verification\x20code','zqota','OsOMP','RxRQI','YCbHL','UBuWE','get','error','OmhTr','xPGWK','iHHRI','VsPTj','wBLHw','GET\x20','\x20error:','eihvU','log','Using\x20mock\x20validation\x20for:','web','RSlDp','lQgVT','vBTYf','post','bObpl','upZmP','Invalid\x20verification\x20code','POST\x20','BUiSS','hlNvn','hSkgt','syexj','Error\x20validating\x20credentials:','FcLbk','rwOEa','gmLTi','FxgZn','yyLSA','rLqre','data','success','xiuFk','demo_user','youtube','kgwdy','user/profile','YOpat','RTBaO','Kgzgf','tWWGP','now','defaults','Bearer\x20','jTHHK','YLbwa','AeuLS','lPVhV','GVDal','Verification\x20code\x20sent\x20successfully','email/verify','AFnhe','kyfEM','JTLTt','nLtCi','jLWrb','message','uwCvK','vrBEU','oumcE','Sldru','NODE_ENV','instagram','Email\x20verified\x20successfully','YQLyr','TcOef','code:','email/verify/confirm','Email\x20verified','Verification\x20failed','MzsMT','PYLgm','sWgRI','yIgtg','BWIBv','mBanJ','UXylP','length','IFKQP','iMTSP','TfAkW','GkowR','KjjcN','vLihU','TbFWT','GdHgC','uEZjZ','DweqG','yltpC'];_0x57cb=function(){return _0x25e37d;};return _0x57cb();}apiInstance['interceptors'][_0x3108(0x4)][_0x3108(0x5)](_0x16603c=>_0x16603c,_0x3a9751=>{const _0x4fa90e={'zDMmM':_0x3108(0x6),'zXWws':function(_0x18aaed,_0x4c8823){return _0x18aaed(_0x4c8823);}};if(isDevelopmentMode())return console[_0x3108(0x7)](_0x4fa90e[_0x3108(0x8)],_0x3a9751),_0x4fa90e[_0x3108(0x9)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});return Promise[_0x3108(0xa)](_0x3a9751);});export const onairosApi={async 'get'(_0x4c7d6e){const _0x3cc92e={'ZdVrH':_0x3108(0xb),'OmhTr':function(_0x453e72){return _0x453e72();},'zUXNy':_0x3108(0xc),'xPGWK':_0x3108(0xd),'RxRQI':function(_0x42a8e6,_0x24c291){return _0x42a8e6===_0x24c291;},'YCbHL':_0x3108(0xe),'ebRoh':function(_0x347e19,_0x29a884){return _0x347e19===_0x29a884;},'UBuWE':'web','lezHD':function(_0x41380c,_0x1702eb){return _0x41380c(_0x1702eb);},'iHHRI':function(_0x239270,_0x39a27e){return _0x239270!==_0x39a27e;},'VsPTj':'ZfSgo','wBLHw':_0x3108(0xf),'eihvU':function(_0x11b7b8){return _0x11b7b8();}};try{if(_0x3cc92e[_0x3108(0x10)](_0x3cc92e[_0x3108(0x11)],_0x3cc92e[_0x3108(0x11)])){if(_0x3cc92e['ebRoh'](Platform['OS'],_0x3cc92e[_0x3108(0x12)])&&isDevelopmentMode())return _0x3cc92e['lezHD'](createMockResponse,{'success':!![],'data':{'mockData':!![]}});return await apiInstance[_0x3108(0x13)](_0x4c7d6e);}else{_0x284aeb[_0x3108(0x14)](_0x3cc92e['ZdVrH'],_0x5b8ac8);if(_0x3cc92e[_0x3108(0x15)](_0x12a33b))return{'success':!![],'message':_0x3cc92e['zUXNy']};return{'success':![],'message':_0x3cc92e[_0x3108(0x16)]};}}catch(_0x344098){if(_0x3cc92e[_0x3108(0x17)](_0x3cc92e[_0x3108(0x18)],_0x3cc92e[_0x3108(0x19)])){console['error'](_0x3108(0x1a)+_0x4c7d6e+_0x3108(0x1b),_0x344098);if(_0x3cc92e[_0x3108(0x1c)](isDevelopmentMode))return createMockResponse({'success':!![],'data':{'mockData':!![]}});throw _0x344098;}else return _0x553534[_0x3108(0x1d)](_0x3108(0x1e),_0x121307),!![];}},async 'post'(_0x97c0de,_0x356908){const _0xe7012c={'syexj':function(_0x28040f,_0x39db0c){return _0x28040f(_0x39db0c);},'vBTYf':_0x3108(0x1f),'bObpl':function(_0x575710,_0x5c8e17){return _0x575710!==_0x5c8e17;},'eOnje':function(_0x9ac969){return _0x9ac969();},'BUiSS':function(_0x353e71,_0x4fb123){return _0x353e71===_0x4fb123;},'hlNvn':_0x3108(0x20),'hSkgt':_0x3108(0x21)};try{if(Platform['OS']===_0xe7012c[_0x3108(0x22)]&&isDevelopmentMode())return createMockResponse({'success':!![],'data':{'mockData':!![]}});return await apiInstance[_0x3108(0x23)](_0x97c0de,_0x356908);}catch(_0x5cbe8f){if(_0xe7012c[_0x3108(0x24)](_0x3108(0x25),_0x3108(0x25)))return{'success':![],'message':_0x3108(0x26)};else{console['error'](_0x3108(0x27)+_0x97c0de+_0x3108(0x1b),_0x5cbe8f);if(_0xe7012c['eOnje'](isDevelopmentMode))return _0xe7012c[_0x3108(0x28)](_0xe7012c[_0x3108(0x29)],_0xe7012c[_0x3108(0x2a)])?_0xe7012c[_0x3108(0x2b)](_0xf907c1,{'success':!![],'data':{'mockData':!![]}}):_0xe7012c[_0x3108(0x2b)](createMockResponse,{'success':!![],'data':{'mockData':!![]}});throw _0x5cbe8f;}}},async 'validateCredentials'(_0x2e3f66){const _0x2246cf={'gmLTi':function(_0x522f19){return _0x522f19();},'FxgZn':function(_0x52bfa2,_0x255e48){return _0x52bfa2(_0x255e48);},'FcLbk':function(_0x1deecc,_0x1b0b4a){return _0x1deecc!==_0x1b0b4a;},'rwOEa':'eAnIJ','qTxeo':_0x3108(0x1e),'yyLSA':'validate','rLqre':function(_0x3d356c,_0x139b1e){return _0x3d356c===_0x139b1e;},'xiuFk':_0x3108(0x2c)};try{if(_0x2246cf[_0x3108(0x2d)](_0x2246cf[_0x3108(0x2e)],_0x2246cf[_0x3108(0x2e)])){_0x4f99be['error'](_0x3108(0x1a)+_0x235059+_0x3108(0x1b),_0xf9e4de);if(_0x2246cf[_0x3108(0x2f)](_0x8c66e8))return _0x2246cf[_0x3108(0x30)](_0x34ffb2,{'success':!![],'data':{'mockData':!![]}});throw _0x5b5992;}else{var _0x4c2174;if(_0x2246cf[_0x3108(0x2f)](isDevelopmentMode))return console['log'](_0x2246cf['qTxeo'],_0x2e3f66),!![];const _0x2a2546=await this[_0x3108(0x23)](_0x2246cf[_0x3108(0x31)],{'username':_0x2e3f66});return(_0x2246cf[_0x3108(0x32)](_0x4c2174=_0x2a2546[_0x3108(0x33)],null)||_0x4c2174===void 0x0?void 0x0:_0x4c2174[_0x3108(0x34)])||![];}}catch(_0x472383){return console['error'](_0x2246cf[_0x3108(0x35)],_0x472383),isDevelopmentMode();}},async 'getUserProfile'(_0x4e9fe8){const _0x51f12e={'HvPhY':'Error\x20fetching\x20user\x20profile:','lPVhV':function(_0x597203){return _0x597203();},'Kgzgf':_0x3108(0x36),'GVDal':_0x3108(0x37),'YOpat':function(_0x4e1b33){return _0x4e1b33();},'RTBaO':_0x3108(0x38),'tWWGP':'instagram','jTHHK':_0x3108(0x39),'YLbwa':function(_0x406408,_0x165825){return _0x406408===_0x165825;},'AeuLS':'HpAPx'};try{var _0x5633b7;if(_0x51f12e[_0x3108(0x3a)](isDevelopmentMode)){if(_0x51f12e[_0x3108(0x3b)]!==_0x51f12e[_0x3108(0x3b)]){_0x3ceeac[_0x3108(0x14)](_0x3108(0x27)+_0x58f0a6+_0x3108(0x1b),_0x388742);if(_0x30dcb2())return _0x4b68f1({'success':!![],'data':{'mockData':!![]}});throw _0x317046;}else return{'username':_0x51f12e[_0x3108(0x3c)],'platforms':[_0x51f12e[_0x3108(0x3d)],_0x3108(0x37)],'createdAt':Date[_0x3108(0x3e)]()};}apiInstance[_0x3108(0x3f)]['headers']['common']['Authorization']=_0x3108(0x40)+_0x4e9fe8;const _0x1b826b=await this['get'](_0x51f12e[_0x3108(0x41)]);return(_0x5633b7=_0x1b826b[_0x3108(0x33)])===null||_0x51f12e[_0x3108(0x42)](_0x5633b7,void 0x0)?void 0x0:_0x5633b7[_0x3108(0x33)];}catch(_0x1d0ef0){if(_0x51f12e['YLbwa'](_0x51f12e[_0x3108(0x43)],'HpAPx')){console['error']('Error\x20fetching\x20user\x20profile:',_0x1d0ef0);if(_0x51f12e[_0x3108(0x44)](isDevelopmentMode))return{'username':_0x51f12e[_0x3108(0x3c)],'platforms':[_0x51f12e[_0x3108(0x3d)],_0x3108(0x37)],'createdAt':Date[_0x3108(0x3e)]()};throw _0x1d0ef0;}else{_0xf4f97e[_0x3108(0x14)](_0x51f12e['HvPhY'],_0xf438e9);if(_0x51f12e[_0x3108(0x44)](_0x10c3da))return{'username':_0x51f12e[_0x3108(0x3c)],'platforms':['instagram',_0x51f12e[_0x3108(0x45)]],'createdAt':_0x5986ce[_0x3108(0x3e)]()};throw _0x4c9c30;}}}};function _0x3108(_0x57cbcd,_0x31089c){_0x57cbcd=_0x57cbcd-0x0;const _0x466a51=_0x57cb();let _0x36dedc=_0x466a51[_0x57cbcd];return _0x36dedc;}export const sendEmailVerificationCode=async _0x201a81=>{const _0x410501={'PaEOL':function(_0x5c0bda){return _0x5c0bda();},'JTLTt':'Mock:\x20Sending\x20verification\x20code\x20to:','vWXZE':_0x3108(0x46),'nLtCi':_0x3108(0x47),'jLWrb':function(_0x4fecb5,_0x400907){return _0x4fecb5===_0x400907;},'vpFjc':'Error\x20sending\x20verification\x20code:','zfxfN':function(_0x1a13c1){return _0x1a13c1();},'uwCvK':function(_0x2c52d8,_0x88b3fb){return _0x2c52d8!==_0x88b3fb;},'vrBEU':_0x3108(0x48),'oumcE':_0x3108(0x49),'Sldru':_0x3108(0xc)};try{var _0x266901;if(_0x410501['PaEOL'](isDevelopmentMode))return console['log'](_0x410501[_0x3108(0x4a)],_0x201a81),{'success':!![],'message':_0x410501['vWXZE']};const _0x3984af=await onairosApi[_0x3108(0x23)](_0x410501[_0x3108(0x4b)],{'email':_0x201a81});return{'success':!![],'message':(_0x410501[_0x3108(0x4c)](_0x266901=_0x3984af[_0x3108(0x33)],null)||_0x266901===void 0x0?void 0x0:_0x266901[_0x3108(0x4d)])||'Verification\x20code\x20sent'};}catch(_0x46ed45){console[_0x3108(0x14)](_0x410501['vpFjc'],_0x46ed45);if(_0x410501['zfxfN'](isDevelopmentMode))return _0x410501[_0x3108(0x4e)](_0x410501[_0x3108(0x4f)],_0x410501[_0x3108(0x50)])?{'success':!![],'message':_0x410501[_0x3108(0x51)]}:_0xeabfc7||_0x2d4e13['env'][_0x3108(0x52)]==='development';return{'success':![],'message':'Failed\x20to\x20send\x20verification\x20code'};}};export const confirmEmailVerificationCode=async(_0x958a77,_0x560254)=>{const _0x520b75={'DDrao':_0x3108(0x53),'GkowR':_0x3108(0x37),'GdHgC':_0x3108(0x54),'PYLgm':function(_0x451edd,_0x37fab4){return _0x451edd!==_0x37fab4;},'QShLP':_0x3108(0x55),'MzsMT':function(_0x1c48d7){return _0x1c48d7();},'sWgRI':_0x3108(0x56),'BWIBv':'Mock:\x20Verifying\x20code\x20for:','mBanJ':_0x3108(0x57),'UXylP':function(_0x32e1f7,_0x48d07b){return _0x32e1f7===_0x48d07b;},'IFKQP':'reviewer','DweqG':_0x3108(0x26),'iMTSP':_0x3108(0x58),'KjjcN':function(_0x47e0a0,_0x14fc5d){return _0x47e0a0===_0x14fc5d;},'TfAkW':_0x3108(0x59),'TbFWT':'yspMr','uEZjZ':function(_0xe7db60){return _0xe7db60();},'yltpC':_0x3108(0x5a)};try{if(_0x520b75['PYLgm']('WbBCj',_0x520b75['QShLP'])){var _0x3cb2fb;if(_0x520b75[_0x3108(0x5b)](isDevelopmentMode)){if(_0x520b75[_0x3108(0x5c)](_0x520b75[_0x3108(0x5d)],_0x3108(0x5e))){console['log'](_0x520b75[_0x3108(0x5f)],_0x958a77,_0x520b75[_0x3108(0x60)],_0x560254);if(_0x520b75[_0x3108(0x61)](_0x560254[_0x3108(0x62)],0x6)||_0x520b75['UXylP'](_0x560254,_0x520b75[_0x3108(0x63)]))return{'success':!![],'message':_0x3108(0x54)};return{'success':![],'message':_0x520b75['DweqG']};}else return _0x241698({'success':!![],'data':{'mockData':!![]}});}const _0x44a3dc=await onairosApi['post'](_0x520b75[_0x3108(0x64)],{'email':_0x958a77,'code':_0x560254});return{'success':!![],'message':(_0x520b75['KjjcN'](_0x3cb2fb=_0x44a3dc['data'],null)||_0x520b75[_0x3108(0x61)](_0x3cb2fb,void 0x0)?void 0x0:_0x3cb2fb[_0x3108(0x4d)])||_0x520b75[_0x3108(0x65)]};}else return{'username':_0x3108(0x36),'platforms':[_0x520b75['DDrao'],_0x520b75[_0x3108(0x66)]],'createdAt':_0x1a2f28[_0x3108(0x3e)]()};}catch(_0x3c021e){if(_0x520b75[_0x3108(0x67)](_0x3108(0x68),_0x520b75[_0x3108(0x69)]))return{'success':!![],'message':_0x520b75[_0x3108(0x6a)]};else{console[_0x3108(0x14)]('Error\x20verifying\x20email\x20code:',_0x3c021e);if(_0x520b75[_0x3108(0x6b)](isDevelopmentMode))return{'success':![],'message':_0x520b75[_0x3108(0x6c)]};return{'success':![],'message':_0x520b75[_0x3108(0x6d)]};}}};
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
import { API_ENDPOINTS } from '../constants';
|
|
4
|
+
|
|
5
|
+
// Check if running in development mode
|
|
6
|
+
const isDevelopmentMode = () => {
|
|
7
|
+
return __DEV__ || process.env.NODE_ENV === 'development';
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// Create mock response helper
|
|
11
|
+
const createMockResponse = data => {
|
|
12
|
+
return Promise.resolve({
|
|
13
|
+
data,
|
|
14
|
+
status: 200,
|
|
15
|
+
statusText: 'OK',
|
|
16
|
+
headers: {},
|
|
17
|
+
config: {}
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Create API instance
|
|
22
|
+
const apiInstance = axios.create({
|
|
23
|
+
baseURL: API_ENDPOINTS.base,
|
|
24
|
+
timeout: 10000,
|
|
25
|
+
headers: {
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'Accept': 'application/json'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Add error handling interceptor
|
|
32
|
+
apiInstance.interceptors.response.use(response => response, error => {
|
|
33
|
+
if (isDevelopmentMode()) {
|
|
34
|
+
console.warn('API error in development mode, using fallback:', error);
|
|
35
|
+
return createMockResponse({
|
|
36
|
+
success: true,
|
|
37
|
+
data: {
|
|
38
|
+
mockData: true
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return Promise.reject(error);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// API service with Expo compatibility
|
|
46
|
+
export const onairosApi = {
|
|
47
|
+
// Core API methods with fallbacks
|
|
48
|
+
async get(url) {
|
|
49
|
+
try {
|
|
50
|
+
if (Platform.OS === 'web' && isDevelopmentMode()) {
|
|
51
|
+
return createMockResponse({
|
|
52
|
+
success: true,
|
|
53
|
+
data: {
|
|
54
|
+
mockData: true
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return await apiInstance.get(url);
|
|
59
|
+
} catch (error) {
|
|
60
|
+
console.error(`GET ${url} error:`, error);
|
|
61
|
+
if (isDevelopmentMode()) {
|
|
62
|
+
return createMockResponse({
|
|
63
|
+
success: true,
|
|
64
|
+
data: {
|
|
65
|
+
mockData: true
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
async post(url, data) {
|
|
73
|
+
try {
|
|
74
|
+
if (Platform.OS === 'web' && isDevelopmentMode()) {
|
|
75
|
+
return createMockResponse({
|
|
76
|
+
success: true,
|
|
77
|
+
data: {
|
|
78
|
+
mockData: true
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return await apiInstance.post(url, data);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error(`POST ${url} error:`, error);
|
|
85
|
+
if (isDevelopmentMode()) {
|
|
86
|
+
return createMockResponse({
|
|
87
|
+
success: true,
|
|
88
|
+
data: {
|
|
89
|
+
mockData: true
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
// Helper methods for specific API endpoints
|
|
97
|
+
async validateCredentials(username) {
|
|
98
|
+
try {
|
|
99
|
+
var _response$data;
|
|
100
|
+
if (isDevelopmentMode()) {
|
|
101
|
+
console.log('Using mock validation for:', username);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
const response = await this.post('validate', {
|
|
105
|
+
username
|
|
106
|
+
});
|
|
107
|
+
return ((_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.success) || false;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error('Error validating credentials:', error);
|
|
110
|
+
return isDevelopmentMode(); // Return true in dev mode to allow flow to continue
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
async getUserProfile(token) {
|
|
114
|
+
try {
|
|
115
|
+
var _response$data2;
|
|
116
|
+
if (isDevelopmentMode()) {
|
|
117
|
+
return {
|
|
118
|
+
username: 'demo_user',
|
|
119
|
+
platforms: ['instagram', 'youtube'],
|
|
120
|
+
createdAt: Date.now()
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
apiInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`;
|
|
124
|
+
const response = await this.get('user/profile');
|
|
125
|
+
return (_response$data2 = response.data) === null || _response$data2 === void 0 ? void 0 : _response$data2.data;
|
|
126
|
+
} catch (error) {
|
|
127
|
+
console.error('Error fetching user profile:', error);
|
|
128
|
+
if (isDevelopmentMode()) {
|
|
129
|
+
return {
|
|
130
|
+
username: 'demo_user',
|
|
131
|
+
platforms: ['instagram', 'youtube'],
|
|
132
|
+
createdAt: Date.now()
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// Email verification functions for WelcomeScreen
|
|
141
|
+
export const sendEmailVerificationCode = async email => {
|
|
142
|
+
try {
|
|
143
|
+
var _response$data3;
|
|
144
|
+
if (isDevelopmentMode()) {
|
|
145
|
+
console.log('Mock: Sending verification code to:', email);
|
|
146
|
+
return {
|
|
147
|
+
success: true,
|
|
148
|
+
message: 'Verification code sent successfully'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const response = await onairosApi.post('email/verify', {
|
|
152
|
+
email
|
|
153
|
+
});
|
|
154
|
+
return {
|
|
155
|
+
success: true,
|
|
156
|
+
message: ((_response$data3 = response.data) === null || _response$data3 === void 0 ? void 0 : _response$data3.message) || 'Verification code sent'
|
|
157
|
+
};
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error('Error sending verification code:', error);
|
|
160
|
+
if (isDevelopmentMode()) {
|
|
161
|
+
return {
|
|
162
|
+
success: true,
|
|
163
|
+
message: 'Mock verification code sent'
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
success: false,
|
|
168
|
+
message: 'Failed to send verification code'
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
export const confirmEmailVerificationCode = async (email, code) => {
|
|
173
|
+
try {
|
|
174
|
+
var _response$data4;
|
|
175
|
+
if (isDevelopmentMode()) {
|
|
176
|
+
console.log('Mock: Verifying code for:', email, 'code:', code);
|
|
177
|
+
// Accept any 6-digit code in dev mode
|
|
178
|
+
if (code.length === 6 || code === 'reviewer') {
|
|
179
|
+
return {
|
|
180
|
+
success: true,
|
|
181
|
+
message: 'Email verified successfully'
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
message: 'Invalid verification code'
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const response = await onairosApi.post('email/verify/confirm', {
|
|
190
|
+
email,
|
|
191
|
+
code
|
|
192
|
+
});
|
|
193
|
+
return {
|
|
194
|
+
success: true,
|
|
195
|
+
message: ((_response$data4 = response.data) === null || _response$data4 === void 0 ? void 0 : _response$data4.message) || 'Email verified'
|
|
196
|
+
};
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error('Error verifying email code:', error);
|
|
199
|
+
if (isDevelopmentMode()) {
|
|
200
|
+
return {
|
|
201
|
+
success: false,
|
|
202
|
+
message: 'Invalid verification code'
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
success: false,
|
|
207
|
+
message: 'Verification failed'
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
//# sourceMappingURL=index.js.map
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Text, StyleSheet } from 'react-native';
|
|
3
|
+
import { TEXT_STYLES } from '../theme';
|
|
4
|
+
const BodyText = ({
|
|
5
|
+
children = "The secure, portable persona built from your data. Every app personalized while your data stays yours.",
|
|
6
|
+
style
|
|
7
|
+
}) => {
|
|
8
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
9
|
+
style: [styles.text, style]
|
|
10
|
+
}, children);
|
|
11
|
+
};
|
|
12
|
+
const styles = StyleSheet.create({
|
|
13
|
+
text: {
|
|
14
|
+
...TEXT_STYLES.body,
|
|
15
|
+
paddingHorizontal: 20 // Add horizontal padding for nice text wrapping
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
export { BodyText };
|
|
19
|
+
export default BodyText;
|
|
20
|
+
//# sourceMappingURL=BodyText.js.map
|
|
@@ -1 +1,104 @@
|
|
|
1
|
-
import React from'react';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, StyleSheet, Image, Platform } from 'react-native';
|
|
3
|
+
import { SHADOWS } from '../theme';
|
|
4
|
+
import { BRAND_IMAGES } from '../utils/assetRegistry';
|
|
5
|
+
const BrandMark = ({
|
|
6
|
+
containerSize = 110,
|
|
7
|
+
imageSize = 110,
|
|
8
|
+
style,
|
|
9
|
+
showGlow = true
|
|
10
|
+
}) => {
|
|
11
|
+
const borderRadius = containerSize * 0.2;
|
|
12
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
13
|
+
style: [styles.glowWrapper, style]
|
|
14
|
+
}, showGlow && /*#__PURE__*/React.createElement(View, {
|
|
15
|
+
style: [styles.glowLayer, styles.redGlow, {
|
|
16
|
+
width: containerSize,
|
|
17
|
+
height: containerSize,
|
|
18
|
+
borderRadius
|
|
19
|
+
}]
|
|
20
|
+
}), showGlow && /*#__PURE__*/React.createElement(View, {
|
|
21
|
+
style: [styles.glowLayer, styles.blueGlow, {
|
|
22
|
+
width: containerSize,
|
|
23
|
+
height: containerSize,
|
|
24
|
+
borderRadius
|
|
25
|
+
}]
|
|
26
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
style: [styles.container, {
|
|
28
|
+
width: containerSize,
|
|
29
|
+
height: containerSize,
|
|
30
|
+
borderRadius
|
|
31
|
+
}]
|
|
32
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
33
|
+
source: BRAND_IMAGES.onairosLogo,
|
|
34
|
+
style: [styles.logo, {
|
|
35
|
+
width: imageSize,
|
|
36
|
+
height: imageSize,
|
|
37
|
+
transform: [{
|
|
38
|
+
translateY: -1
|
|
39
|
+
}, {
|
|
40
|
+
translateX: -4
|
|
41
|
+
}] // Nudge logo slightly up and left
|
|
42
|
+
}],
|
|
43
|
+
resizeMode: "contain"
|
|
44
|
+
})));
|
|
45
|
+
};
|
|
46
|
+
const styles = StyleSheet.create({
|
|
47
|
+
glowWrapper: {
|
|
48
|
+
position: 'relative',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
justifyContent: 'center'
|
|
51
|
+
},
|
|
52
|
+
glowLayer: {
|
|
53
|
+
position: 'absolute',
|
|
54
|
+
backgroundColor: 'transparent'
|
|
55
|
+
},
|
|
56
|
+
redGlow: {
|
|
57
|
+
// Red/pink glow - offset to bottom-right
|
|
58
|
+
shadowColor: '#FF4D6A',
|
|
59
|
+
shadowOffset: {
|
|
60
|
+
width: 8,
|
|
61
|
+
height: 8
|
|
62
|
+
},
|
|
63
|
+
shadowOpacity: 0.5,
|
|
64
|
+
shadowRadius: 20,
|
|
65
|
+
elevation: 8,
|
|
66
|
+
// For Android, we need a background to show shadow
|
|
67
|
+
...Platform.select({
|
|
68
|
+
android: {
|
|
69
|
+
backgroundColor: 'rgba(255, 77, 106, 0.15)'
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
},
|
|
73
|
+
blueGlow: {
|
|
74
|
+
// Blue/cyan glow - offset to top-left
|
|
75
|
+
shadowColor: '#4D79FF',
|
|
76
|
+
shadowOffset: {
|
|
77
|
+
width: -8,
|
|
78
|
+
height: -8
|
|
79
|
+
},
|
|
80
|
+
shadowOpacity: 0.5,
|
|
81
|
+
shadowRadius: 20,
|
|
82
|
+
elevation: 8,
|
|
83
|
+
// For Android, we need a background to show shadow
|
|
84
|
+
...Platform.select({
|
|
85
|
+
android: {
|
|
86
|
+
backgroundColor: 'rgba(77, 121, 255, 0.15)'
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
},
|
|
90
|
+
container: {
|
|
91
|
+
backgroundColor: '#FFFFFF',
|
|
92
|
+
justifyContent: 'center',
|
|
93
|
+
alignItems: 'center',
|
|
94
|
+
overflow: 'hidden',
|
|
95
|
+
// Clip logo at container edges
|
|
96
|
+
...SHADOWS.brandMark
|
|
97
|
+
},
|
|
98
|
+
logo: {
|
|
99
|
+
// Logo styling is handled via props for flexibility
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
export { BrandMark };
|
|
103
|
+
export default BrandMark;
|
|
104
|
+
//# sourceMappingURL=BrandMark.js.map
|
|
@@ -1 +1,109 @@
|
|
|
1
|
-
import React,
|
|
1
|
+
import React, { useRef, useState, useEffect } from 'react';
|
|
2
|
+
import { View, TextInput, StyleSheet, Pressable, Keyboard } from 'react-native';
|
|
3
|
+
import { COLORS } from '../theme';
|
|
4
|
+
const CodeInput = ({
|
|
5
|
+
length = 6,
|
|
6
|
+
onCodeChange,
|
|
7
|
+
onCodeComplete
|
|
8
|
+
}) => {
|
|
9
|
+
const [code, setCode] = useState(Array(length).fill(''));
|
|
10
|
+
const [focusedIndex, setFocusedIndex] = useState(0);
|
|
11
|
+
const inputRefs = useRef([]);
|
|
12
|
+
const hiddenInputRef = useRef(null);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
// Focus the hidden input on mount
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
var _hiddenInputRef$curre;
|
|
17
|
+
(_hiddenInputRef$curre = hiddenInputRef.current) === null || _hiddenInputRef$curre === void 0 || _hiddenInputRef$curre.focus();
|
|
18
|
+
}, 100);
|
|
19
|
+
}, []);
|
|
20
|
+
const handleHiddenInputChange = text => {
|
|
21
|
+
// Only allow numbers
|
|
22
|
+
const numericText = text.replace(/[^0-9]/g, '');
|
|
23
|
+
const newCode = numericText.slice(0, length).split('');
|
|
24
|
+
|
|
25
|
+
// Pad with empty strings
|
|
26
|
+
while (newCode.length < length) {
|
|
27
|
+
newCode.push('');
|
|
28
|
+
}
|
|
29
|
+
setCode(newCode);
|
|
30
|
+
setFocusedIndex(Math.min(numericText.length, length - 1));
|
|
31
|
+
const codeString = newCode.join('');
|
|
32
|
+
onCodeChange === null || onCodeChange === void 0 || onCodeChange(codeString);
|
|
33
|
+
if (numericText.length === length) {
|
|
34
|
+
onCodeComplete === null || onCodeComplete === void 0 || onCodeComplete(codeString);
|
|
35
|
+
Keyboard.dismiss();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const handleBoxPress = () => {
|
|
39
|
+
var _hiddenInputRef$curre2;
|
|
40
|
+
(_hiddenInputRef$curre2 = hiddenInputRef.current) === null || _hiddenInputRef$curre2 === void 0 || _hiddenInputRef$curre2.focus();
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
43
|
+
style: styles.container
|
|
44
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
45
|
+
ref: hiddenInputRef,
|
|
46
|
+
style: styles.hiddenInput,
|
|
47
|
+
value: code.join(''),
|
|
48
|
+
onChangeText: handleHiddenInputChange,
|
|
49
|
+
keyboardType: "number-pad",
|
|
50
|
+
maxLength: length,
|
|
51
|
+
autoComplete: "sms-otp",
|
|
52
|
+
textContentType: "oneTimeCode",
|
|
53
|
+
caretHidden: true
|
|
54
|
+
}), /*#__PURE__*/React.createElement(Pressable, {
|
|
55
|
+
style: styles.boxesContainer,
|
|
56
|
+
onPress: handleBoxPress
|
|
57
|
+
}, Array(length).fill(0).map((_, index) => /*#__PURE__*/React.createElement(View, {
|
|
58
|
+
key: index,
|
|
59
|
+
style: [styles.box, code[index] ? styles.boxFilled : null, focusedIndex === index && !code[index] ? styles.boxFocused : null]
|
|
60
|
+
}, /*#__PURE__*/React.createElement(TextInput, {
|
|
61
|
+
style: styles.boxText,
|
|
62
|
+
value: code[index],
|
|
63
|
+
editable: false,
|
|
64
|
+
pointerEvents: "none"
|
|
65
|
+
})))));
|
|
66
|
+
};
|
|
67
|
+
const styles = StyleSheet.create({
|
|
68
|
+
container: {
|
|
69
|
+
width: '100%'
|
|
70
|
+
},
|
|
71
|
+
hiddenInput: {
|
|
72
|
+
position: 'absolute',
|
|
73
|
+
opacity: 0,
|
|
74
|
+
height: 0,
|
|
75
|
+
width: 0
|
|
76
|
+
},
|
|
77
|
+
boxesContainer: {
|
|
78
|
+
flexDirection: 'row',
|
|
79
|
+
justifyContent: 'space-between',
|
|
80
|
+
width: '100%'
|
|
81
|
+
},
|
|
82
|
+
box: {
|
|
83
|
+
width: 48,
|
|
84
|
+
height: 56,
|
|
85
|
+
borderWidth: 1.5,
|
|
86
|
+
borderColor: '#E0E0E0',
|
|
87
|
+
borderRadius: 12,
|
|
88
|
+
justifyContent: 'center',
|
|
89
|
+
alignItems: 'center',
|
|
90
|
+
backgroundColor: '#FAFAFA'
|
|
91
|
+
},
|
|
92
|
+
boxFilled: {
|
|
93
|
+
borderColor: COLORS.grey600,
|
|
94
|
+
backgroundColor: '#FFFFFF'
|
|
95
|
+
},
|
|
96
|
+
boxFocused: {
|
|
97
|
+
borderColor: '#D4A536',
|
|
98
|
+
borderWidth: 2
|
|
99
|
+
},
|
|
100
|
+
boxText: {
|
|
101
|
+
fontSize: 24,
|
|
102
|
+
fontWeight: '600',
|
|
103
|
+
color: COLORS.grey800,
|
|
104
|
+
textAlign: 'center'
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
export { CodeInput };
|
|
108
|
+
export default CodeInput;
|
|
109
|
+
//# sourceMappingURL=CodeInput.js.map
|
|
@@ -1 +1,23 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { TextInput, StyleSheet } from 'react-native';
|
|
4
|
+
const EmailInput = props => {
|
|
5
|
+
return /*#__PURE__*/React.createElement(TextInput, _extends({}, props, {
|
|
6
|
+
keyboardType: "email-address",
|
|
7
|
+
autoCapitalize: "none",
|
|
8
|
+
autoComplete: "email",
|
|
9
|
+
style: [styles.input, props.style]
|
|
10
|
+
}));
|
|
11
|
+
};
|
|
12
|
+
const styles = StyleSheet.create({
|
|
13
|
+
input: {
|
|
14
|
+
borderWidth: 1,
|
|
15
|
+
borderColor: '#E0E0E0',
|
|
16
|
+
borderRadius: 8,
|
|
17
|
+
padding: 12,
|
|
18
|
+
fontSize: 16
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export { EmailInput };
|
|
22
|
+
export default EmailInput;
|
|
23
|
+
//# sourceMappingURL=EmailInput.js.map
|
|
@@ -1 +1,49 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TouchableOpacity, Text, Image, StyleSheet } from 'react-native';
|
|
3
|
+
import { BRAND_IMAGES } from '../utils/assetRegistry';
|
|
4
|
+
const GoogleButton = ({
|
|
5
|
+
onPress,
|
|
6
|
+
style,
|
|
7
|
+
disabled = false
|
|
8
|
+
}) => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
10
|
+
style: [styles.button, style, disabled && styles.disabled],
|
|
11
|
+
onPress: onPress,
|
|
12
|
+
disabled: disabled
|
|
13
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
14
|
+
source: BRAND_IMAGES.googleLogo,
|
|
15
|
+
style: styles.icon,
|
|
16
|
+
resizeMode: "contain"
|
|
17
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
18
|
+
style: styles.text
|
|
19
|
+
}, "Continue with Google"));
|
|
20
|
+
};
|
|
21
|
+
const styles = StyleSheet.create({
|
|
22
|
+
button: {
|
|
23
|
+
flexDirection: 'row',
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
justifyContent: 'center',
|
|
26
|
+
backgroundColor: '#FFFFFF',
|
|
27
|
+
borderWidth: 1,
|
|
28
|
+
borderColor: '#E0E0E0',
|
|
29
|
+
borderRadius: 8,
|
|
30
|
+
paddingVertical: 12,
|
|
31
|
+
paddingHorizontal: 16
|
|
32
|
+
},
|
|
33
|
+
disabled: {
|
|
34
|
+
opacity: 0.5
|
|
35
|
+
},
|
|
36
|
+
icon: {
|
|
37
|
+
width: 20,
|
|
38
|
+
height: 20,
|
|
39
|
+
marginRight: 8
|
|
40
|
+
},
|
|
41
|
+
text: {
|
|
42
|
+
fontSize: 16,
|
|
43
|
+
fontWeight: '500',
|
|
44
|
+
color: '#333333'
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
export { GoogleButton };
|
|
48
|
+
export default GoogleButton;
|
|
49
|
+
//# sourceMappingURL=GoogleButton.js.map
|
|
@@ -1 +1,36 @@
|
|
|
1
|
-
import React from'react';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, Text, StyleSheet } from 'react-native';
|
|
3
|
+
import { TEXT_STYLES } from '../theme';
|
|
4
|
+
const HeadingGroup = ({
|
|
5
|
+
kicker = "Welcome to",
|
|
6
|
+
title = "Onairos",
|
|
7
|
+
style
|
|
8
|
+
}) => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
10
|
+
style: [styles.container, style]
|
|
11
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
12
|
+
style: styles.kicker
|
|
13
|
+
}, kicker), /*#__PURE__*/React.createElement(Text, {
|
|
14
|
+
style: styles.title
|
|
15
|
+
}, title));
|
|
16
|
+
};
|
|
17
|
+
const styles = StyleSheet.create({
|
|
18
|
+
container: {
|
|
19
|
+
alignItems: 'center'
|
|
20
|
+
},
|
|
21
|
+
kicker: {
|
|
22
|
+
...TEXT_STYLES.kicker,
|
|
23
|
+
fontFamily: 'IBM Plex Sans',
|
|
24
|
+
fontWeight: '700',
|
|
25
|
+
// Force bold weight
|
|
26
|
+
marginBottom: 4 // Small gap between kicker and title
|
|
27
|
+
},
|
|
28
|
+
title: {
|
|
29
|
+
...TEXT_STYLES.welcomeTitle,
|
|
30
|
+
fontFamily: 'IBM Plex Sans',
|
|
31
|
+
fontWeight: '700' // Force bold weight
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
export { HeadingGroup };
|
|
35
|
+
export default HeadingGroup;
|
|
36
|
+
//# sourceMappingURL=HeadingGroup.js.map
|