@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
|
@@ -1,8 +1,226 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function _0x6cf4(_0x52384c,_0x6cf4a7){_0x52384c=_0x52384c-0x0;const _0x1ae1f2=_0x5238();let _0x193a18=_0x1ae1f2[_0x52384c];return _0x193a18;}Object[_0x6cf4(0x0)](exports,_0x6cf4(0x1),{'value':!![]}),exports['runFullDiagnostics']=exports[_0x6cf4(0x2)]=exports[_0x6cf4(0x3)]=void 0x0;var _reactNative=__ONAIROS_REQ_FUNC__(0x0),_api=__ONAIROS_REQ_FUNC__(0x1);const runFullDiagnostics=async()=>{const _0x1cebaa={'mndEZ':_0x6cf4(0x4),'fcnLm':'Internet\x20works\x20but\x20API\x20blocked.\x20Check:\x20VPN,\x20Firewall,\x20iOS\x20ATS\x20settings','MkcDO':_0x6cf4(0x5),'RqiNd':_0x6cf4(0x6),'qKNnc':_0x6cf4(0x7),'CkGQa':_0x6cf4(0x8),'KGkbB':_0x6cf4(0x9),'jqFGL':'───────────────────────────────────────────','VekcC':_0x6cf4(0xa),'UOPpH':function(_0x5c0000,_0x2376a0){return _0x5c0000===_0x2376a0;},'ejDXb':function(_0x316fbc,_0x336cfd,_0x10f4c6){return _0x316fbc(_0x336cfd,_0x10f4c6);},'OVVIA':_0x6cf4(0xb),'PoVPa':_0x6cf4(0xc),'kaWeW':_0x6cf4(0xd),'puJhU':_0x6cf4(0xe),'tDugf':function(_0x1f0742,_0x746de1){return _0x1f0742!==_0x746de1;},'mEpje':'XdVXr','FLedA':_0x6cf4(0xf),'QUJpX':_0x6cf4(0x10),'ZglDG':_0x6cf4(0x11),'cxaRC':'tBLrM','DVeVm':function(_0x4f5418,_0x4c4c81,_0x14937e){return _0x4f5418(_0x4c4c81,_0x14937e);},'bNCSM':'youtube','CrvLa':_0x6cf4(0x12),'KxOhY':function(_0x4bdcd9,_0x3410b9){return _0x4bdcd9!==_0x3410b9;},'wTOEl':_0x6cf4(0x13),'ZThVs':_0x6cf4(0x14),'NSbhX':function(_0x4e664d,_0x1f22ae){return _0x4e664d===_0x1f22ae;},'OErwi':_0x6cf4(0x15),'oppTc':_0x6cf4(0x16),'JAMrd':_0x6cf4(0x17),'roiiW':'\x0a═══════════════════════════════════════════','QuYvi':_0x6cf4(0x18)};console[_0x6cf4(0x19)](_0x6cf4(0x9)),console[_0x6cf4(0x19)](_0x1cebaa['CkGQa']),console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x1a)]);const _0x29c1e1={'timestamp':new Date()[_0x6cf4(0x1b)](),'platform':_reactNative['Platform']['OS'],'platformVersion':_reactNative[_0x6cf4(0x1c)][_0x6cf4(0x1d)],'tests':{'googleReachable':![],'apiReachable':![],'apiPostWorks':![],'youtubeOAuthWorks':![]},'errors':[],'recommendations':[],'rawResults':{}};console[_0x6cf4(0x19)]('📱\x20Platform:\x20'+_reactNative[_0x6cf4(0x1c)]['OS']+'\x20'+_reactNative[_0x6cf4(0x1c)]['Version']),console[_0x6cf4(0x19)](_0x1cebaa['jqFGL']),console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x1e)]);try{if(_0x1cebaa[_0x6cf4(0x1f)](_0x6cf4(0x20),_0x6cf4(0x20))){const _0x15b675=Date[_0x6cf4(0x21)](),_0x101071=await _0x1cebaa[_0x6cf4(0x22)](fetch,_0x1cebaa[_0x6cf4(0x23)],{'method':_0x6cf4(0x24)}),_0x3aeb09=Date[_0x6cf4(0x21)]()-_0x15b675;_0x29c1e1['tests']['googleReachable']=!![],_0x29c1e1['rawResults']['google']={'status':_0x101071[_0x6cf4(0x25)],'time':_0x3aeb09},console[_0x6cf4(0x19)](_0x6cf4(0x26)+_0x3aeb09+'ms)');}else{const _0x39aa7c=_0x180557['parse'](_0x3f688f);_0x39aa7c[_0x6cf4(0x27)]&&(_0x5911c7[_0x6cf4(0x28)][_0x6cf4(0x29)]=!![],_0x3e695e[_0x6cf4(0x19)](_0x6cf4(0x2a)));}}catch(_0x95cb30){const _0x12fe8a=_0x1cebaa[_0x6cf4(0x2b)][_0x6cf4(0x2c)]('|');let _0x4552cf=0x0;while(!![]){switch(_0x12fe8a[_0x4552cf++]){case'0':_0x29c1e1[_0x6cf4(0x2d)]['google']={'error':_0x95cb30[_0x6cf4(0x2e)]};continue;case'1':_0x29c1e1[_0x6cf4(0x2f)][_0x6cf4(0x30)](_0x6cf4(0x31)+_0x95cb30[_0x6cf4(0x2e)]);continue;case'2':_0x29c1e1['recommendations'][_0x6cf4(0x30)](_0x1cebaa[_0x6cf4(0x32)]);continue;case'3':console['log'](_0x6cf4(0x33)+_0x95cb30[_0x6cf4(0x2e)]);continue;case'4':_0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x34)]=![];continue;}break;}}console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x35)]);try{const _0xc02bbf=Date[_0x6cf4(0x21)](),_0x3abb57=await fetch(_api[_0x6cf4(0x36)][_0x6cf4(0x37)]+_0x6cf4(0x38),{'method':'GET','headers':{'Accept':'application/json'}}),_0x142cc7=Date['now']()-_0xc02bbf,_0x51346a=await _0x3abb57[_0x6cf4(0x39)]()[_0x6cf4(0x3a)](()=>_0x6cf4(0x3b));_0x29c1e1['tests'][_0x6cf4(0x3c)]=_0x3abb57['ok'],_0x29c1e1[_0x6cf4(0x2d)]['apiHealth']={'status':_0x3abb57[_0x6cf4(0x25)],'time':_0x142cc7,'body':_0x51346a[_0x6cf4(0x3d)](0x0,0xc8)};if(_0x3abb57['ok'])console[_0x6cf4(0x19)](_0x6cf4(0x3e)+_0x142cc7+_0x6cf4(0x3f));else{if(_0x1cebaa['tDugf'](_0x1cebaa[_0x6cf4(0x40)],_0x1cebaa[_0x6cf4(0x41)]))console[_0x6cf4(0x19)](_0x6cf4(0x42)+_0x3abb57[_0x6cf4(0x25)]),_0x29c1e1[_0x6cf4(0x2f)]['push'](_0x6cf4(0x43)+_0x3abb57[_0x6cf4(0x25)]);else{const _0x2d51ed=_0x1cebaa['mndEZ'][_0x6cf4(0x2c)]('|');let _0x1e2e58=0x0;while(!![]){switch(_0x2d51ed[_0x1e2e58++]){case'0':_0x599988[_0x6cf4(0x2f)]['push'](_0x6cf4(0x44)+_0x1f9e5e[_0x6cf4(0x2e)]);continue;case'1':_0x2be6fa['tests'][_0x6cf4(0x34)]&&_0x377dd7[_0x6cf4(0x45)][_0x6cf4(0x30)](_0x1cebaa[_0x6cf4(0x46)]);continue;case'2':_0x502919[_0x6cf4(0x28)][_0x6cf4(0x3c)]=![];continue;case'3':_0x500d6f[_0x6cf4(0x19)](_0x6cf4(0x33)+_0xf77f8a[_0x6cf4(0x2e)]);continue;case'4':_0x3bdbc8[_0x6cf4(0x2d)][_0x6cf4(0x47)]={'error':_0x29f76c[_0x6cf4(0x2e)]};continue;}break;}}}}catch(_0x251538){if(_0x1cebaa[_0x6cf4(0x48)](_0x1cebaa[_0x6cf4(0x49)],_0x6cf4(0x10)))return _0x1cebaa[_0x6cf4(0x4a)];else _0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x3c)]=![],_0x29c1e1[_0x6cf4(0x2f)][_0x6cf4(0x30)](_0x6cf4(0x44)+_0x251538[_0x6cf4(0x2e)]),_0x29c1e1['rawResults'][_0x6cf4(0x47)]={'error':_0x251538[_0x6cf4(0x2e)]},console[_0x6cf4(0x19)](_0x6cf4(0x33)+_0x251538[_0x6cf4(0x2e)]),_0x29c1e1['tests'][_0x6cf4(0x34)]&&(_0x1cebaa[_0x6cf4(0x48)](_0x6cf4(0x4b),_0x1cebaa[_0x6cf4(0x4c)])?_0x29c1e1[_0x6cf4(0x45)][_0x6cf4(0x30)](_0x6cf4(0x4d)):_0x2e87ca[_0x6cf4(0x45)]['push'](_0x1cebaa[_0x6cf4(0x4e)],_0x1cebaa['qKNnc']));}console[_0x6cf4(0x19)]('\n\uD83E\uDDEA Test 3: POST Request (OAuth simulation)');try{if(_0x1cebaa['tDugf'](_0x1cebaa[_0x6cf4(0x4f)],_0x1cebaa[_0x6cf4(0x4f)]))_0x5595a8[_0x6cf4(0x19)](_0x6cf4(0x42)+_0x30132e[_0x6cf4(0x25)]),_0x586322[_0x6cf4(0x2f)][_0x6cf4(0x30)](_0x6cf4(0x43)+_0x4b54a3['status']);else{const _0x1430ae=Date[_0x6cf4(0x21)](),_0x4d7c3e=await _0x1cebaa[_0x6cf4(0x50)](fetch,_api['API_CONFIG'][_0x6cf4(0x37)]+_0x6cf4(0x51),{'method':'POST','headers':{'Content-Type':'application/json','Accept':'application/json'},'body':JSON[_0x6cf4(0x52)]({'session':{'username':_0x6cf4(0x53),'platform':_0x1cebaa[_0x6cf4(0x54)],'timestamp':new Date()['toISOString']()}})}),_0x20239e=Date[_0x6cf4(0x21)]()-_0x1430ae,_0x5ac8ce=await _0x4d7c3e['text']()[_0x6cf4(0x3a)](()=>_0x6cf4(0x3b));_0x29c1e1[_0x6cf4(0x2d)][_0x6cf4(0x55)]={'status':_0x4d7c3e[_0x6cf4(0x25)],'time':_0x20239e,'body':_0x5ac8ce[_0x6cf4(0x3d)](0x0,0x1f4)},_0x29c1e1['tests'][_0x6cf4(0x56)]=!![],console[_0x6cf4(0x19)](_0x6cf4(0x57)+_0x4d7c3e[_0x6cf4(0x25)]+'\x20('+_0x20239e+'ms)');try{const _0x39254b=JSON[_0x6cf4(0x58)](_0x5ac8ce);_0x39254b[_0x6cf4(0x27)]&&(_0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x29)]=!![],console[_0x6cf4(0x19)](_0x6cf4(0x2a)));}catch{}}}catch(_0x598f8c){const _0x516de9=_0x1cebaa[_0x6cf4(0x59)]['split']('|');let _0x1eb199=0x0;while(!![]){switch(_0x516de9[_0x1eb199++]){case'0':console[_0x6cf4(0x19)](_0x6cf4(0x33)+_0x598f8c[_0x6cf4(0x2e)]);continue;case'1':_0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x56)]=![];continue;case'2':_0x29c1e1[_0x6cf4(0x45)][_0x6cf4(0x30)]('POST requests failing. This is the exact issue affecting OAuth.');continue;case'3':_0x29c1e1[_0x6cf4(0x2d)][_0x6cf4(0x55)]={'error':_0x598f8c[_0x6cf4(0x2e)]};continue;case'4':_0x29c1e1[_0x6cf4(0x2f)][_0x6cf4(0x30)](_0x6cf4(0x5a)+_0x598f8c[_0x6cf4(0x2e)]);continue;}break;}}console[_0x6cf4(0x19)](_0x6cf4(0x5b)),console[_0x6cf4(0x19)](_0x6cf4(0x5c)),console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x5d)]);const _0x3b1030=Object[_0x6cf4(0x5e)](_0x29c1e1[_0x6cf4(0x28)])['filter'](Boolean)[_0x6cf4(0x5f)],_0x2cfba4=Object[_0x6cf4(0x60)](_0x29c1e1[_0x6cf4(0x28)])[_0x6cf4(0x5f)];console['log'](_0x6cf4(0x61)+_0x3b1030+'/'+_0x2cfba4);if(_0x3b1030===_0x2cfba4)console['log']('\x0a✅\x20ALL\x20TESTS\x20PASSED\x20-\x20SDK\x20should\x20work\x20correctly');else{if(_0x1cebaa[_0x6cf4(0x62)](_0x1cebaa['wTOEl'],'hVRei'))return _0x6cf4(0x63);else{const _0xccf4cc=_0x1cebaa[_0x6cf4(0x64)][_0x6cf4(0x2c)]('|');let _0x129f4f=0x0;while(!![]){switch(_0xccf4cc[_0x129f4f++]){case'0':_0x29c1e1[_0x6cf4(0x45)][_0x6cf4(0x65)]((_0x180399,_0x51b26d)=>{console['log'](_0x6cf4(0x66)+(_0x51b26d+0x1)+'.\x20'+_0x180399);});continue;case'1':_0x1cebaa[_0x6cf4(0x67)](_reactNative['Platform']['OS'],'ios')&&!_0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x3c)]&&_0x29c1e1[_0x6cf4(0x45)][_0x6cf4(0x30)]('iOS:\x20Add\x20NSAppTransportSecurity\x20to\x20Info.plist',_0x1cebaa[_0x6cf4(0x68)]);continue;case'2':console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x69)]);continue;case'3':!_0x29c1e1[_0x6cf4(0x28)][_0x6cf4(0x34)]&&_0x29c1e1[_0x6cf4(0x45)][_0x6cf4(0x30)](_0x1cebaa[_0x6cf4(0x6a)]);continue;case'4':console['log'](_0x1cebaa['JAMrd']);continue;}break;}}}return console[_0x6cf4(0x19)](_0x1cebaa['roiiW']),console[_0x6cf4(0x19)](_0x1cebaa[_0x6cf4(0x6b)]),console[_0x6cf4(0x19)](JSON[_0x6cf4(0x52)](_0x29c1e1,null,0x2)),_0x29c1e1;};exports[_0x6cf4(0x6c)]=runFullDiagnostics;const isApiReachable=async()=>{const _0x4343e2={'lVaLU':function(_0x30e761,_0x287e26){return _0x30e761!==_0x287e26;},'hvLLC':_0x6cf4(0x6d),'rfdht':function(_0x555e49,_0x2e891b,_0x488367){return _0x555e49(_0x2e891b,_0x488367);}};try{if(_0x4343e2[_0x6cf4(0x6e)]('NgrWL',_0x4343e2[_0x6cf4(0x6f)]))_0x4591e2[_0x6cf4(0x19)]('\x20\x20\x20✅\x20PASS\x20-\x20API\x20reachable\x20('+_0x4bf2e5+_0x6cf4(0x3f));else{const _0x3bea43=await _0x4343e2[_0x6cf4(0x70)](fetch,_api[_0x6cf4(0x36)][_0x6cf4(0x37)]+_0x6cf4(0x38),{'method':'GET'});return _0x3bea43['ok'];}}catch{return![];}};exports[_0x6cf4(0x2)]=isApiReachable;const getNetworkStatus=async()=>{const _0x47504c={'LdTbE':function(_0x3a27a7,_0x35d7cb){return _0x3a27a7+_0x35d7cb;},'BIqSV':_0x6cf4(0x15),'PGHrF':function(_0x3970e9,_0x515102){return _0x3970e9===_0x515102;},'bQJlx':_0x6cf4(0x6),'AMXWe':_0x6cf4(0x7),'zZmDG':_0x6cf4(0x16),'skhBE':_0x6cf4(0x17),'AulYl':function(_0x28d8c8,_0x2b47b7,_0x4bca13){return _0x28d8c8(_0x2b47b7,_0x4bca13);},'lmFon':_0x6cf4(0xb),'giJiG':_0x6cf4(0x24),'zIexp':function(_0xad0ab5,_0x588cf5){return _0xad0ab5(_0x588cf5);},'nrigi':function(_0xa9e1af,_0x2b4635){return _0xa9e1af!==_0x2b4635;},'YNGvi':_0x6cf4(0x71),'lvCds':_0x6cf4(0x72),'NBfVV':_0x6cf4(0x5)};try{await _0x47504c[_0x6cf4(0x73)](fetch,_0x47504c[_0x6cf4(0x74)],{'method':_0x47504c[_0x6cf4(0x75)]});const _0x134dce=await _0x47504c['zIexp'](fetch,_api['API_CONFIG']['BASE_URL']+_0x6cf4(0x38));if(_0x134dce['ok']){if(_0x47504c[_0x6cf4(0x76)](_0x47504c[_0x6cf4(0x77)],_0x6cf4(0x71))){const _0x523127={'WFQym':function(_0x537cbc,_0x52ecc9){return _0x47504c[_0x6cf4(0x78)](_0x537cbc,_0x52ecc9);}};_0x4fa470[_0x6cf4(0x19)](_0x47504c[_0x6cf4(0x79)]),_0x47504c[_0x6cf4(0x7a)](_0x2f69c4['Platform']['OS'],_0x6cf4(0x7b))&&!_0x2b6fa7[_0x6cf4(0x28)][_0x6cf4(0x3c)]&&_0x1811cf[_0x6cf4(0x45)][_0x6cf4(0x30)](_0x47504c['bQJlx'],_0x47504c[_0x6cf4(0x7c)]),!_0x35db87[_0x6cf4(0x28)][_0x6cf4(0x34)]&&_0x53bb7f[_0x6cf4(0x45)][_0x6cf4(0x30)](_0x47504c[_0x6cf4(0x7d)]),_0x5a83a9[_0x6cf4(0x19)](_0x47504c[_0x6cf4(0x7e)]),_0x3a7fd9['recommendations'][_0x6cf4(0x65)]((_0x1f3be7,_0x5aa0a7)=>{_0x5c73f3[_0x6cf4(0x19)](_0x6cf4(0x66)+_0x523127[_0x6cf4(0x7f)](_0x5aa0a7,0x1)+'.\x20'+_0x1f3be7);});}else return _0x47504c['lvCds'];}else return _0x6cf4(0x63);}catch{return _0x47504c[_0x6cf4(0x80)];}};exports[_0x6cf4(0x3)]=getNetworkStatus;function _0x5238(){const _0xe0e2c3=['defineProperty','__esModule','isApiReachable','getNetworkStatus','2|0|4|3|1','offline','iOS:\x20Add\x20NSAppTransportSecurity\x20to\x20Info.plist','iOS:\x20Try\x20on\x20physical\x20device\x20instead\x20of\x20simulator','🔍\x20ONAIROS\x20SDK\x20NETWORK\x20DIAGNOSTICS','═══════════════════════════════════════════','\x0a🧪\x20Test\x201:\x20Internet\x20Connectivity\x20(google.com)','https://www.google.com','4|1|0|3|2','Check\x20internet\x20connection\x20on\x20device','\x0a🧪\x20Test\x202:\x20API\x20Reachability\x20(API\x20server/health)','vRUjO','WAVBF','NFKcm','1|4|3|0|2','hVRei','2|1|3|4|0','\x0a⚠️\x20SOME\x20TESTS\x20FAILED\x20-\x20See\x20recommendations\x20below:','Device\x20has\x20no\x20internet\x20-\x20check\x20WiFi/cellular','\x0a📌\x20RECOMMENDATIONS:','Full\x20results\x20object\x20logged\x20below\x20for\x20debugging:','log','KGkbB','toISOString','Platform','Version','VekcC','UOPpH','olrAn','now','ejDXb','OVVIA','HEAD','status','\x20\x20\x20✅\x20PASS\x20-\x20Google\x20reachable\x20(','youtubeURL','tests','youtubeOAuthWorks','\x20\x20\x20✅\x20BONUS\x20-\x20Got\x20YouTube\x20OAuth\x20URL!','PoVPa','split','rawResults','message','errors','push','Google\x20unreachable:\x20','kaWeW','\x20\x20\x20❌\x20FAIL\x20-\x20','googleReachable','puJhU','API_CONFIG','BASE_URL','/health','text','catch','Unable\x20to\x20read','apiReachable','substring','\x20\x20\x20✅\x20PASS\x20-\x20API\x20reachable\x20(','ms)','mEpje','FLedA','\x20\x20\x20⚠️\x20PARTIAL\x20-\x20API\x20responded\x20with\x20','API\x20returned\x20status\x20','API\x20unreachable:\x20','recommendations','fcnLm','apiHealth','tDugf','QUJpX','MkcDO','WhxNN','ZglDG','Internet\x20works\x20but\x20API\x20blocked.\x20Check:\x20VPN,\x20Firewall,\x20iOS\x20ATS\x20settings','RqiNd','cxaRC','DVeVm','/youtube/authorize','stringify','diagnostic_test','bNCSM','apiPost','apiPostWorks','\x20\x20\x20✅\x20PASS\x20-\x20POST\x20request\x20succeeded,\x20status:\x20','parse','CrvLa','POST\x20request\x20failed:\x20','\x0a───────────────────────────────────────────','📋\x20SUMMARY','jqFGL','values','length','keys','\x0aTests\x20Passed:\x20','KxOhY','api_unreachable','ZThVs','forEach','\x20\x20\x20','NSbhX','qKNnc','OErwi','oppTc','QuYvi','runFullDiagnostics','NgrWL','lVaLU','hvLLC','rfdht','UwDja','online','AulYl','lmFon','giJiG','nrigi','YNGvi','LdTbE','BIqSV','PGHrF','ios','AMXWe','zZmDG','skhBE','WFQym','NBfVV'];_0x5238=function(){return _0xe0e2c3;};return _0x5238();}
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runFullDiagnostics = exports.isApiReachable = exports.getNetworkStatus = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _api = require("../config/api");
|
|
9
|
+
/**
|
|
10
|
+
* Network Diagnostics Utility for Onairos SDK
|
|
11
|
+
*
|
|
12
|
+
* Use this to diagnose network issues with OAuth flows.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { runFullDiagnostics } from '@onairos/react-native';
|
|
17
|
+
*
|
|
18
|
+
* const results = await runFullDiagnostics();
|
|
19
|
+
* console.log(results);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Run comprehensive network diagnostics
|
|
25
|
+
* Call this to test if the SDK can connect to required services
|
|
26
|
+
*/
|
|
27
|
+
const runFullDiagnostics = async () => {
|
|
28
|
+
console.log('═══════════════════════════════════════════');
|
|
29
|
+
console.log('🔍 ONAIROS SDK NETWORK DIAGNOSTICS');
|
|
30
|
+
console.log('═══════════════════════════════════════════');
|
|
31
|
+
const result = {
|
|
32
|
+
timestamp: new Date().toISOString(),
|
|
33
|
+
platform: _reactNative.Platform.OS,
|
|
34
|
+
platformVersion: _reactNative.Platform.Version,
|
|
35
|
+
tests: {
|
|
36
|
+
googleReachable: false,
|
|
37
|
+
apiReachable: false,
|
|
38
|
+
apiPostWorks: false,
|
|
39
|
+
youtubeOAuthWorks: false
|
|
40
|
+
},
|
|
41
|
+
errors: [],
|
|
42
|
+
recommendations: [],
|
|
43
|
+
rawResults: {}
|
|
44
|
+
};
|
|
45
|
+
console.log(`📱 Platform: ${_reactNative.Platform.OS} ${_reactNative.Platform.Version}`);
|
|
46
|
+
console.log('───────────────────────────────────────────');
|
|
47
|
+
|
|
48
|
+
// Test 1: Can we reach the internet at all? (Google)
|
|
49
|
+
console.log('\n🧪 Test 1: Internet Connectivity (google.com)');
|
|
50
|
+
try {
|
|
51
|
+
const googleStart = Date.now();
|
|
52
|
+
const googleRes = await fetch('https://www.google.com', {
|
|
53
|
+
method: 'HEAD'
|
|
54
|
+
});
|
|
55
|
+
const googleTime = Date.now() - googleStart;
|
|
56
|
+
result.tests.googleReachable = true;
|
|
57
|
+
result.rawResults.google = {
|
|
58
|
+
status: googleRes.status,
|
|
59
|
+
time: googleTime
|
|
60
|
+
};
|
|
61
|
+
console.log(` ✅ PASS - Google reachable (${googleTime}ms)`);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
result.tests.googleReachable = false;
|
|
64
|
+
result.errors.push(`Google unreachable: ${error.message}`);
|
|
65
|
+
result.rawResults.google = {
|
|
66
|
+
error: error.message
|
|
67
|
+
};
|
|
68
|
+
console.log(` ❌ FAIL - ${error.message}`);
|
|
69
|
+
result.recommendations.push('Check internet connection on device');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Test 2: Can we reach API server?
|
|
73
|
+
console.log('\n🧪 Test 2: API Reachability (API server/health)');
|
|
74
|
+
try {
|
|
75
|
+
const apiStart = Date.now();
|
|
76
|
+
const apiRes = await fetch(`${_api.API_CONFIG.BASE_URL}/health`, {
|
|
77
|
+
method: 'GET',
|
|
78
|
+
headers: {
|
|
79
|
+
'Accept': 'application/json'
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const apiTime = Date.now() - apiStart;
|
|
83
|
+
const apiBody = await apiRes.text().catch(() => 'Unable to read');
|
|
84
|
+
result.tests.apiReachable = apiRes.ok;
|
|
85
|
+
result.rawResults.apiHealth = {
|
|
86
|
+
status: apiRes.status,
|
|
87
|
+
time: apiTime,
|
|
88
|
+
body: apiBody.substring(0, 200)
|
|
89
|
+
};
|
|
90
|
+
if (apiRes.ok) {
|
|
91
|
+
console.log(` ✅ PASS - API reachable (${apiTime}ms)`);
|
|
92
|
+
} else {
|
|
93
|
+
console.log(` ⚠️ PARTIAL - API responded with ${apiRes.status}`);
|
|
94
|
+
result.errors.push(`API returned status ${apiRes.status}`);
|
|
95
|
+
}
|
|
96
|
+
} catch (error) {
|
|
97
|
+
result.tests.apiReachable = false;
|
|
98
|
+
result.errors.push(`API unreachable: ${error.message}`);
|
|
99
|
+
result.rawResults.apiHealth = {
|
|
100
|
+
error: error.message
|
|
101
|
+
};
|
|
102
|
+
console.log(` ❌ FAIL - ${error.message}`);
|
|
103
|
+
if (result.tests.googleReachable) {
|
|
104
|
+
result.recommendations.push('Internet works but API blocked. Check: VPN, Firewall, iOS ATS settings');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Test 3: Can we make POST requests?
|
|
109
|
+
console.log('\n🧪 Test 3: POST Request (OAuth simulation)');
|
|
110
|
+
try {
|
|
111
|
+
const postStart = Date.now();
|
|
112
|
+
const postRes = await fetch(`${_api.API_CONFIG.BASE_URL}/youtube/authorize`, {
|
|
113
|
+
method: 'POST',
|
|
114
|
+
headers: {
|
|
115
|
+
'Content-Type': 'application/json',
|
|
116
|
+
'Accept': 'application/json'
|
|
117
|
+
},
|
|
118
|
+
body: JSON.stringify({
|
|
119
|
+
session: {
|
|
120
|
+
username: 'diagnostic_test',
|
|
121
|
+
platform: 'youtube',
|
|
122
|
+
timestamp: new Date().toISOString()
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
const postTime = Date.now() - postStart;
|
|
127
|
+
const postBody = await postRes.text().catch(() => 'Unable to read');
|
|
128
|
+
result.rawResults.apiPost = {
|
|
129
|
+
status: postRes.status,
|
|
130
|
+
time: postTime,
|
|
131
|
+
body: postBody.substring(0, 500)
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// Any response is good - we're testing if the request gets through
|
|
135
|
+
result.tests.apiPostWorks = true;
|
|
136
|
+
console.log(` ✅ PASS - POST request succeeded, status: ${postRes.status} (${postTime}ms)`);
|
|
137
|
+
|
|
138
|
+
// Check if we got an OAuth URL back
|
|
139
|
+
try {
|
|
140
|
+
const data = JSON.parse(postBody);
|
|
141
|
+
if (data.youtubeURL) {
|
|
142
|
+
result.tests.youtubeOAuthWorks = true;
|
|
143
|
+
console.log(` ✅ BONUS - Got YouTube OAuth URL!`);
|
|
144
|
+
}
|
|
145
|
+
} catch {
|
|
146
|
+
// Not JSON or no URL - that's fine for this test
|
|
147
|
+
}
|
|
148
|
+
} catch (error) {
|
|
149
|
+
result.tests.apiPostWorks = false;
|
|
150
|
+
result.errors.push(`POST request failed: ${error.message}`);
|
|
151
|
+
result.rawResults.apiPost = {
|
|
152
|
+
error: error.message
|
|
153
|
+
};
|
|
154
|
+
console.log(` ❌ FAIL - ${error.message}`);
|
|
155
|
+
result.recommendations.push('POST requests failing. This is the exact issue affecting OAuth.');
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Generate recommendations
|
|
159
|
+
console.log('\n───────────────────────────────────────────');
|
|
160
|
+
console.log('📋 SUMMARY');
|
|
161
|
+
console.log('───────────────────────────────────────────');
|
|
162
|
+
const passCount = Object.values(result.tests).filter(Boolean).length;
|
|
163
|
+
const totalTests = Object.keys(result.tests).length;
|
|
164
|
+
console.log(`\nTests Passed: ${passCount}/${totalTests}`);
|
|
165
|
+
if (passCount === totalTests) {
|
|
166
|
+
console.log('\n✅ ALL TESTS PASSED - SDK should work correctly');
|
|
167
|
+
} else {
|
|
168
|
+
console.log('\n⚠️ SOME TESTS FAILED - See recommendations below:');
|
|
169
|
+
|
|
170
|
+
// Add platform-specific recommendations
|
|
171
|
+
if (_reactNative.Platform.OS === 'ios' && !result.tests.apiReachable) {
|
|
172
|
+
result.recommendations.push('iOS: Add NSAppTransportSecurity to Info.plist', 'iOS: Try on physical device instead of simulator');
|
|
173
|
+
}
|
|
174
|
+
if (!result.tests.googleReachable) {
|
|
175
|
+
result.recommendations.push('Device has no internet - check WiFi/cellular');
|
|
176
|
+
}
|
|
177
|
+
console.log('\n📌 RECOMMENDATIONS:');
|
|
178
|
+
result.recommendations.forEach((rec, i) => {
|
|
179
|
+
console.log(` ${i + 1}. ${rec}`);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
console.log('\n═══════════════════════════════════════════');
|
|
183
|
+
console.log('Full results object logged below for debugging:');
|
|
184
|
+
console.log(JSON.stringify(result, null, 2));
|
|
185
|
+
return result;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Quick connectivity check - returns true if API is reachable
|
|
190
|
+
*/
|
|
191
|
+
exports.runFullDiagnostics = runFullDiagnostics;
|
|
192
|
+
const isApiReachable = async () => {
|
|
193
|
+
try {
|
|
194
|
+
const response = await fetch(`${_api.API_CONFIG.BASE_URL}/health`, {
|
|
195
|
+
method: 'GET'
|
|
196
|
+
});
|
|
197
|
+
return response.ok;
|
|
198
|
+
} catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Get a simple status string for display to users
|
|
205
|
+
*/
|
|
206
|
+
exports.isApiReachable = isApiReachable;
|
|
207
|
+
const getNetworkStatus = async () => {
|
|
208
|
+
try {
|
|
209
|
+
// Check Google first
|
|
210
|
+
await fetch('https://www.google.com', {
|
|
211
|
+
method: 'HEAD'
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
// Check our API
|
|
215
|
+
const apiRes = await fetch(`${_api.API_CONFIG.BASE_URL}/health`);
|
|
216
|
+
if (apiRes.ok) {
|
|
217
|
+
return 'online';
|
|
218
|
+
} else {
|
|
219
|
+
return 'api_unreachable';
|
|
220
|
+
}
|
|
221
|
+
} catch {
|
|
222
|
+
return 'offline';
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
exports.getNetworkStatus = getNetworkStatus;
|
|
226
|
+
//# sourceMappingURL=networkDiagnostics.js.map
|
|
@@ -1,9 +1,350 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function _0x5332(){const _0x221f49=['defineProperty','__esModule','validateCredentials','updatePlatformConnections','storePIN','refreshToken','isCurrentUserAuthenticated','getUserProfile','getCurrentUserToken','createAccount','authenticate','ApiError','code','details','name','WluXT','default','fetch','ndTSG','timeout_error','oSPpF','nDNJq','User\x20not\x20authenticated.\x20Please\x20verify\x20email\x20first.','wEYVs','validation_error','server_error','unknown_error','ZwnbZ','ewkIx','RYFLd','User\x20API\x20Error','bdXZp','dHKqH','rpWLB','weiIo','cUTPU','Developer\x20API\x20Error','message','IBatZ','An\x20unexpected\x20error\x20occurred','nTAFy','fifXY','ezslW','fmjqx','xQhoj','logDebug','nikrj','YJqgz','makeUserRequest','json','User\x20API\x20Response','status','auth_error','pliVL','LVogH','gurPE','PGodf','API\x20request\x20failed','error','hbdgA','VswyE','OlxVp','ZwDsK','MhxjD','[REDACTED]','ntAUS','OPsfg','aZFcR','kuIOy','aDxQp','user/profile','network_error','Developer\x20API\x20Request','fCTuP','Developer\x20API\x20Response','vspTw','Request\x20timed\x20out','Unknown\x20error','rzddB','kSIRR','PqvOn','dUnxx','CWYGl','makeDeveloperRequest','stringify','ubVWR','platforms/','/data','debug','sNCFy','gMQqk','Rqsvu','wEQpk','RdoSm','tBdWW','asdka','KBIYC','NjTyi','ZthUq','fbqiY','HjrUV','YahmG','Jefrj','waXtT','HLVKI','hXjrZ','UgZhy','Wxqeg','yaieM','CqnJr','XcHgO','NVkaB','auth/login','auth/validate','AQkES','HcPIE','success','data','lTPWI','isValid','rJftS','fbctX','nYbMU','VrpuF','username','userPin','auth/register','ZjvtM','CVpjt','platforms','BRxZK','auth/refresh','ZVBpo','getPlatformData','WMxFv','SbITZ','user/platforms','store-pin/mobile','extractUsernameFromJWT','qqNvD','fGsJO','lZSex','getJWT','isUserAuthenticated'];_0x5332=function(){return _0x221f49;};return _0x5332();}function _0x3dcb(_0x533296,_0x3dcb9a){_0x533296=_0x533296-0x0;const _0xcbd5b9=_0x5332();let _0x412a3e=_0xcbd5b9[_0x533296];return _0x412a3e;}Object[_0x3dcb(0x0)](exports,_0x3dcb(0x1),{'value':!![]}),exports[_0x3dcb(0x2)]=exports[_0x3dcb(0x3)]=exports[_0x3dcb(0x4)]=exports[_0x3dcb(0x5)]=exports[_0x3dcb(0x6)]=exports[_0x3dcb(0x7)]=exports['getPlatformData']=exports[_0x3dcb(0x8)]=exports[_0x3dcb(0x9)]=exports[_0x3dcb(0xa)]=exports[_0x3dcb(0xb)]=void 0x0;var _netinfo=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x0)),_debugHelper=__ONAIROS_REQ_FUNC__(0x1),_apiKeyService=__ONAIROS_REQ_FUNC__(0x2);function _interopRequireDefault(_0x28d0ac){return _0x28d0ac&&_0x28d0ac[_0x3dcb(0x1)]?_0x28d0ac:{'default':_0x28d0ac};}class ApiError extends Error{constructor(_0x23e3a0,_0x3825be,_0x17d6ee,_0x234920){const _0x38e854={'WluXT':_0x3dcb(0xb)};super(_0x23e3a0),this['type']=_0x3825be,this[_0x3dcb(0xc)]=_0x17d6ee,this[_0x3dcb(0xd)]=_0x234920,this[_0x3dcb(0xe)]=_0x38e854[_0x3dcb(0xf)];}}exports['ApiError']=ApiError;const checkNetworkConnection=async()=>{const _0x244f8f={'ndTSG':function(_0x3273d5,_0x2d1d08){return _0x3273d5===_0x2d1d08;}},_0x42455f=await _netinfo[_0x3dcb(0x10)][_0x3dcb(0x11)]();return _0x244f8f[_0x3dcb(0x12)](_0x42455f['isConnected'],!![]);},makeUserApiRequest=async(_0x498875,_0x58e066,_0x4f2d86={})=>{const _0x5660cc={'dHKqH':function(_0x11a41c,_0x55b2ee){return _0x11a41c instanceof _0x55b2ee;},'rpWLB':'AbortError','weiIo':'Request\x20timed\x20out','cUTPU':_0x3dcb(0x13),'IBatZ':'Unknown\x20error','nikrj':'User\x20API\x20Request','uqgEc':_0x3dcb(0x14),'bdXZp':_0x3dcb(0x15),'YyBUq':function(_0xe18873){return _0xe18873();},'mdOgK':'No\x20network\x20connection\x20available','nTAFy':'network_error','fifXY':_0x3dcb(0x16),'ezslW':'auth_error','fmjqx':function(_0x42b254,_0x372c4f){return _0x42b254===_0x372c4f;},'xQhoj':_0x3dcb(0x17),'YJqgz':'[REDACTED]','PGodf':function(_0x125f82,_0x1a669e){return _0x125f82===_0x1a669e;},'ksPoL':_0x3dcb(0x18),'pliVL':function(_0x138927,_0x3518f6){return _0x138927>=_0x3518f6;},'LVogH':_0x3dcb(0x19),'gurPE':_0x3dcb(0x1a),'hbdgA':function(_0x1bd635,_0x2d49fd){return _0x1bd635===_0x2d49fd;},'VswyE':function(_0x5e8e8a,_0x540442){return _0x5e8e8a instanceof _0x540442;},'OlxVp':function(_0x582d62,_0x3d8779){return _0x582d62===_0x3d8779;},'MhxjD':_0x3dcb(0x1b),'ieiic':function(_0x377573,_0x4fd766){return _0x377573===_0x4fd766;},'ntAUS':function(_0x1d0c18,_0x4ab91f){return _0x1d0c18===_0x4ab91f;},'OPsfg':_0x3dcb(0x1c),'aZFcR':_0x3dcb(0x1d),'kuIOy':_0x3dcb(0x1e),'aDxQp':'An\x20unexpected\x20error\x20occurred'},{data:_0x3735e9,headers:headers={},debug:debug=![]}=_0x4f2d86;try{if(_0x5660cc['uqgEc']===_0x5660cc[_0x3dcb(0x1f)]){if(_0x5660cc[_0x3dcb(0x20)](_0xbb07b1,_0x439656))throw _0x3267bb;if(_0x3e993e[_0x3dcb(0xe)]===_0x5660cc[_0x3dcb(0x21)])throw new _0x2b474e(_0x5660cc[_0x3dcb(0x22)],_0x5660cc[_0x3dcb(0x23)]);_0x158ea5&&(0x0,_0xb4172a['logDebug'])(_0x3dcb(0x24),{'endpoint':_0x2ce79d,'method':_0x1660d0,'error':_0x54b314[_0x3dcb(0x25)]||_0x5660cc[_0x3dcb(0x26)]});throw new _0x1b2b19(_0x3026db[_0x3dcb(0x25)]||_0x3dcb(0x27),_0x3dcb(0x1a));}else{const _0x2e7965=await _0x5660cc['YyBUq'](checkNetworkConnection);if(!_0x2e7965)throw new ApiError(_0x5660cc['mdOgK'],_0x5660cc[_0x3dcb(0x28)]);if(!(0x0,_apiKeyService['isUserAuthenticated'])())throw new ApiError(_0x5660cc[_0x3dcb(0x29)],_0x5660cc[_0x3dcb(0x2a)]);if(debug){if(_0x5660cc[_0x3dcb(0x2b)](_0x5660cc['xQhoj'],_0x5660cc[_0x3dcb(0x2c)]))(0x0,_debugHelper[_0x3dcb(0x2d)])(_0x5660cc[_0x3dcb(0x2e)],{'endpoint':_0x498875,'method':_0x58e066,'headers':{...headers,'Authorization':_0x5660cc[_0x3dcb(0x2f)]},'data':_0x3735e9||null});else throw _0x29f4ce;}const _0x5e3a45=await(0x0,_apiKeyService[_0x3dcb(0x30)])(_0x498875,{'method':_0x58e066,'headers':headers,..._0x3735e9?{'body':JSON['stringify'](_0x3735e9)}:{}}),_0x4fb430=await _0x5e3a45[_0x3dcb(0x31)]();debug&&(0x0,_debugHelper[_0x3dcb(0x2d)])(_0x3dcb(0x32),{'status':_0x5e3a45[_0x3dcb(0x33)],'data':_0x4fb430});if(!_0x5e3a45['ok']){var _0x3bb08d,_0x309578,_0x5e3c55;const _0x56edda=_0x5660cc[_0x3dcb(0x2b)](_0x5e3a45[_0x3dcb(0x33)],0x191)||_0x5660cc['PGodf'](_0x5e3a45['status'],0x193)?_0x3dcb(0x34):_0x5660cc[_0x3dcb(0x2b)](_0x5e3a45[_0x3dcb(0x33)],0x190)?_0x5660cc['ksPoL']:_0x5660cc[_0x3dcb(0x35)](_0x5e3a45[_0x3dcb(0x33)],0x1f4)?_0x5660cc[_0x3dcb(0x36)]:_0x5660cc[_0x3dcb(0x37)];throw new ApiError(((_0x3bb08d=_0x4fb430['error'])===null||_0x5660cc[_0x3dcb(0x38)](_0x3bb08d,void 0x0)?void 0x0:_0x3bb08d[_0x3dcb(0x25)])||_0x3dcb(0x39),_0x56edda,_0x5660cc[_0x3dcb(0x2b)](_0x309578=_0x4fb430[_0x3dcb(0x3a)],null)||_0x5660cc[_0x3dcb(0x38)](_0x309578,void 0x0)?void 0x0:_0x309578[_0x3dcb(0xc)],(_0x5e3c55=_0x4fb430[_0x3dcb(0x3a)])===null||_0x5660cc[_0x3dcb(0x3b)](_0x5e3c55,void 0x0)?void 0x0:_0x5e3c55[_0x3dcb(0xd)]);}return _0x4fb430;}}catch(_0x387f06){if(_0x5660cc[_0x3dcb(0x3c)](_0x387f06,ApiError)){if(_0x5660cc[_0x3dcb(0x3d)](_0x3dcb(0x3e),_0x5660cc[_0x3dcb(0x3f)]))(0x0,_0x2a4ee3[_0x3dcb(0x2d)])(_0x5660cc['nikrj'],{'endpoint':_0x126499,'method':_0x5567c3,'headers':{..._0x507cb7,'Authorization':_0x3dcb(0x40)},'data':_0x11caa8||null});else throw _0x387f06;}if(_0x5660cc['ieiic'](_0x387f06[_0x3dcb(0xe)],_0x5660cc[_0x3dcb(0x21)])){if(_0x5660cc[_0x3dcb(0x41)](_0x5660cc[_0x3dcb(0x42)],_0x5660cc[_0x3dcb(0x43)]))return _0x1867da&&_0x5439fb['__esModule']?_0x3cdf86:{'default':_0x333364};else throw new ApiError(_0x5660cc[_0x3dcb(0x22)],_0x5660cc[_0x3dcb(0x23)]);}debug&&(0x0,_debugHelper['logDebug'])(_0x5660cc[_0x3dcb(0x44)],{'endpoint':_0x498875,'method':_0x58e066,'error':_0x387f06[_0x3dcb(0x25)]||_0x5660cc[_0x3dcb(0x26)]});throw new ApiError(_0x387f06[_0x3dcb(0x25)]||_0x5660cc[_0x3dcb(0x45)],_0x5660cc[_0x3dcb(0x37)]);}},makeDeveloperApiRequest=async(_0x540339,_0x4afc85,_0x180862={})=>{const _0xef2d32={'hzoox':_0x3dcb(0x32),'XcHgO':function(_0x376926,_0x5b17ab,_0x2d608f,_0x4abe17){return _0x376926(_0x5b17ab,_0x2d608f,_0x4abe17);},'sNCFy':function(_0x2d7dd2,_0x502da7){return _0x2d7dd2===_0x502da7;},'gMQqk':'auth_error','HLVKI':function(_0x33c67d,_0x4caeb1){return _0x33c67d===_0x4caeb1;},'wEQpk':'validation_error','RdoSm':function(_0x3a4f34,_0x3c26c9){return _0x3a4f34>=_0x3c26c9;},'govse':_0x3dcb(0x19),'hXjrZ':_0x3dcb(0x1a),'rKolM':function(_0x9f93ba,_0xdbb12b){return _0x9f93ba===_0xdbb12b;},'UgZhy':_0x3dcb(0x39),'Wxqeg':function(_0x5e5d1c,_0xb81205){return _0x5e5d1c===_0xb81205;},'NVkaB':_0x3dcb(0x46),'rzddB':function(_0x1f9ac0){return _0x1f9ac0();},'PqvOn':'eeLJK','CngQp':_0x3dcb(0x47),'tCSyD':_0x3dcb(0x48),'dUnxx':_0x3dcb(0x40),'CWYGl':function(_0x2e86ef,_0x4edb0e){return _0x2e86ef||_0x4edb0e;},'ubVWR':function(_0x147a78,_0x23eb32){return _0x147a78!==_0x23eb32;},'VOwWI':_0x3dcb(0x49),'pbRGJ':_0x3dcb(0x4a),'Rqsvu':function(_0x593df6,_0x41fe89){return _0x593df6===_0x41fe89;},'tBdWW':function(_0x3c7f78,_0x5ee021){return _0x3c7f78===_0x5ee021;},'asdka':function(_0x152248,_0x54307c){return _0x152248===_0x54307c;},'KBIYC':function(_0x705add,_0x484fab){return _0x705add===_0x484fab;},'XkpNd':function(_0x952a47,_0x33b847){return _0x952a47===_0x33b847;},'NjTyi':function(_0x1ddd49,_0x47039c){return _0x1ddd49===_0x47039c;},'ZthUq':_0x3dcb(0x4b),'fbqiY':function(_0x35a8ae,_0x530b5d){return _0x35a8ae===_0x530b5d;},'HjrUV':'AbortError','YahmG':_0x3dcb(0x4c),'Jefrj':_0x3dcb(0x13),'yaieM':_0x3dcb(0x4d),'CqnJr':'An\x20unexpected\x20error\x20occurred'},{data:_0x5b562d,headers:headers={},debug:debug=![]}=_0x180862;try{const _0x39de44=await _0xef2d32[_0x3dcb(0x4e)](checkNetworkConnection);if(!_0x39de44){if(_0x3dcb(0x4f)===_0xef2d32[_0x3dcb(0x50)])(0x0,_0x122fa3[_0x3dcb(0x2d)])(_0xef2d32['hzoox'],{'status':_0x4b00b6['status'],'data':_0x38374a});else throw new ApiError('No\x20network\x20connection\x20available',_0xef2d32['CngQp']);}debug&&(0x0,_debugHelper[_0x3dcb(0x2d)])(_0xef2d32['tCSyD'],{'endpoint':_0x540339,'method':_0x4afc85,'headers':{...headers,'Authorization':_0xef2d32[_0x3dcb(0x51)]},'data':_0xef2d32[_0x3dcb(0x52)](_0x5b562d,null)});const _0x43ff75=await(0x0,_apiKeyService[_0x3dcb(0x53)])(_0x540339,{'method':_0x4afc85,'headers':headers,..._0x5b562d?{'body':JSON[_0x3dcb(0x54)](_0x5b562d)}:{}}),_0x225aa0=await _0x43ff75[_0x3dcb(0x31)]();if(debug){if(_0xef2d32[_0x3dcb(0x55)](_0x3dcb(0x49),_0xef2d32['VOwWI']))return _0xef2d32['XcHgO'](_0x387437,_0x3dcb(0x56)+_0x374b9e+_0x3dcb(0x57),'GET',{'debug':_0x2a768e[_0x3dcb(0x58)]});else(0x0,_debugHelper[_0x3dcb(0x2d)])(_0xef2d32['pbRGJ'],{'status':_0x43ff75[_0x3dcb(0x33)],'data':_0x225aa0});}if(!_0x43ff75['ok']){var _0x3e358b,_0x5d8aae,_0x715af9;const _0x1cd319=_0x43ff75['status']===0x191||_0xef2d32[_0x3dcb(0x59)](_0x43ff75[_0x3dcb(0x33)],0x193)?_0xef2d32[_0x3dcb(0x5a)]:_0xef2d32[_0x3dcb(0x5b)](_0x43ff75[_0x3dcb(0x33)],0x190)?_0xef2d32[_0x3dcb(0x5c)]:_0xef2d32[_0x3dcb(0x5d)](_0x43ff75[_0x3dcb(0x33)],0x1f4)?_0x3dcb(0x19):_0x3dcb(0x1a);throw new ApiError((_0xef2d32[_0x3dcb(0x5e)](_0x3e358b=_0x225aa0[_0x3dcb(0x3a)],null)||_0xef2d32[_0x3dcb(0x5f)](_0x3e358b,void 0x0)?void 0x0:_0x3e358b['message'])||'API\x20request\x20failed',_0x1cd319,(_0x5d8aae=_0x225aa0['error'])===null||_0xef2d32[_0x3dcb(0x60)](_0x5d8aae,void 0x0)?void 0x0:_0x5d8aae[_0x3dcb(0xc)],_0xef2d32['XkpNd'](_0x715af9=_0x225aa0['error'],null)||_0xef2d32[_0x3dcb(0x61)](_0x715af9,void 0x0)?void 0x0:_0x715af9[_0x3dcb(0xd)]);}return _0x225aa0;}catch(_0x434646){if(_0xef2d32[_0x3dcb(0x62)]===_0x3dcb(0x4b)){if(_0x434646 instanceof ApiError)throw _0x434646;if(_0xef2d32[_0x3dcb(0x63)](_0x434646['name'],_0xef2d32[_0x3dcb(0x64)]))throw new ApiError(_0xef2d32[_0x3dcb(0x65)],_0xef2d32[_0x3dcb(0x66)]);if(debug){if(_0xef2d32[_0x3dcb(0x55)](_0x3dcb(0x67),_0x3dcb(0x67))){var _0x2df567,_0x4e24a8,_0x201226;const _0x3ff302=_0xef2d32[_0x3dcb(0x59)](_0x89f4ee[_0x3dcb(0x33)],0x191)||_0xef2d32[_0x3dcb(0x59)](_0x4bd8b6[_0x3dcb(0x33)],0x193)?_0xef2d32[_0x3dcb(0x5a)]:_0xef2d32[_0x3dcb(0x68)](_0x35a724['status'],0x190)?_0xef2d32[_0x3dcb(0x5c)]:_0xef2d32[_0x3dcb(0x5d)](_0x1c1f7d[_0x3dcb(0x33)],0x1f4)?_0xef2d32['govse']:_0xef2d32[_0x3dcb(0x69)];throw new _0x456035((_0xef2d32['rKolM'](_0x2df567=_0x3acb7d['error'],null)||_0x2df567===void 0x0?void 0x0:_0x2df567[_0x3dcb(0x25)])||_0xef2d32[_0x3dcb(0x6a)],_0x3ff302,(_0x4e24a8=_0x5f3027[_0x3dcb(0x3a)])===null||_0x4e24a8===void 0x0?void 0x0:_0x4e24a8['code'],(_0x201226=_0x36f285[_0x3dcb(0x3a)])===null||_0xef2d32[_0x3dcb(0x6b)](_0x201226,void 0x0)?void 0x0:_0x201226[_0x3dcb(0xd)]);}else(0x0,_debugHelper['logDebug'])(_0x3dcb(0x24),{'endpoint':_0x540339,'method':_0x4afc85,'error':_0x434646['message']||_0xef2d32[_0x3dcb(0x6c)]});}throw new ApiError(_0x434646[_0x3dcb(0x25)]||_0xef2d32[_0x3dcb(0x6d)],_0xef2d32[_0x3dcb(0x69)]);}else return _0xef2d32[_0x3dcb(0x6e)](_0x15292e,_0xef2d32[_0x3dcb(0x6f)],'GET',{'debug':_0x22c0ee[_0x3dcb(0x58)]});}},validateCredentials=async(_0x4c526b,_0x3f93c9={'debug':![]})=>{const _0x24907c={'nYbMU':function(_0x1591f8,_0xe70396,_0x5949ea,_0x4911de){return _0x1591f8(_0xe70396,_0x5949ea,_0x4911de);},'VrpuF':_0x3dcb(0x70),'HcPIE':_0x3dcb(0x71),'lTPWI':function(_0x2017a8,_0x2fe113){return _0x2017a8===_0x2fe113;},'rJftS':function(_0x1f4a06,_0x3dda25){return _0x1f4a06===_0x3dda25;},'fbctX':_0x3dcb(0x72)};try{var _0x2a92b9,_0x54f6b5;const _0x30d78b=await makeUserApiRequest(_0x24907c[_0x3dcb(0x73)],'POST',{'data':{'username':_0x4c526b},'debug':_0x3f93c9[_0x3dcb(0x58)]});return{'isValid':_0x30d78b[_0x3dcb(0x74)]&&_0x24907c['lTPWI']((_0x2a92b9=_0x30d78b[_0x3dcb(0x75)])===null||_0x24907c[_0x3dcb(0x76)](_0x2a92b9,void 0x0)?void 0x0:_0x2a92b9[_0x3dcb(0x77)],!![]),'message':_0x24907c[_0x3dcb(0x76)](_0x54f6b5=_0x30d78b[_0x3dcb(0x3a)],null)||_0x24907c[_0x3dcb(0x78)](_0x54f6b5,void 0x0)?void 0x0:_0x54f6b5[_0x3dcb(0x25)]};}catch(_0x44c101){return _0x24907c[_0x3dcb(0x78)](_0x24907c[_0x3dcb(0x79)],_0x24907c[_0x3dcb(0x79)])?{'isValid':![],'message':_0x44c101[_0x3dcb(0x25)]}:_0x24907c[_0x3dcb(0x7a)](_0x5281f9,_0x24907c[_0x3dcb(0x7b)],'POST',{'data':{'username':_0x59af50[_0x3dcb(0x7c)],'pin':_0x5ee1e8[_0x3dcb(0x7d)]},'debug':_0x11ad98[_0x3dcb(0x58)]});}};exports[_0x3dcb(0x2)]=validateCredentials;const createAccount=async(_0x52318a,_0x58ecfa={'debug':![]})=>{const _0x916930={'ZjvtM':function(_0xaffbb5,_0x13b415,_0x6a46c9,_0x2ea25a){return _0xaffbb5(_0x13b415,_0x6a46c9,_0x2ea25a);},'CVpjt':_0x3dcb(0x7e)};return _0x916930[_0x3dcb(0x7f)](makeDeveloperApiRequest,_0x916930[_0x3dcb(0x80)],'POST',{'data':{'username':_0x52318a['username'],'platforms':_0x52318a[_0x3dcb(0x81)]},'debug':_0x58ecfa[_0x3dcb(0x58)]});};exports['createAccount']=createAccount;const authenticate=async(_0x27ec57,_0x2483e6={'debug':![]})=>{const _0x42a276={'sEFht':function(_0x2b7c3d,_0x320a20,_0x481cde,_0x36b63a){return _0x2b7c3d(_0x320a20,_0x481cde,_0x36b63a);},'BRxZK':'auth/login'};return _0x42a276['sEFht'](makeUserApiRequest,_0x42a276[_0x3dcb(0x82)],'POST',{'data':{'username':_0x27ec57[_0x3dcb(0x7c)],'pin':_0x27ec57[_0x3dcb(0x7d)]},'debug':_0x2483e6[_0x3dcb(0x58)]});};exports[_0x3dcb(0xa)]=authenticate;const refreshToken=async(_0x265743,_0x1c53f6={'debug':![]})=>{const _0x5afc14={'ojnWT':function(_0x541731,_0x4fb47d,_0x253f46,_0x1f7207){return _0x541731(_0x4fb47d,_0x253f46,_0x1f7207);}};return _0x5afc14['ojnWT'](makeUserApiRequest,_0x3dcb(0x83),'POST',{'data':{'refreshToken':_0x265743},'debug':_0x1c53f6[_0x3dcb(0x58)]});};exports[_0x3dcb(0x5)]=refreshToken;const getPlatformData=async(_0x4df4b5,_0x4100ee={'debug':![]})=>{const _0x5be494={'ZVBpo':function(_0x4168d0,_0x4c3adf,_0x28782d,_0x4a8faf){return _0x4168d0(_0x4c3adf,_0x28782d,_0x4a8faf);}};return _0x5be494[_0x3dcb(0x84)](makeUserApiRequest,_0x3dcb(0x56)+_0x4df4b5+'/data','GET',{'debug':_0x4100ee[_0x3dcb(0x58)]});};exports[_0x3dcb(0x85)]=getPlatformData;const getUserProfile=async(_0x4dfea5={'debug':![]})=>{const _0x1045f0={'WMxFv':function(_0x1b6fe4,_0x201905,_0x16f92a,_0x563102){return _0x1b6fe4(_0x201905,_0x16f92a,_0x563102);},'SbITZ':_0x3dcb(0x46)};return _0x1045f0[_0x3dcb(0x86)](makeUserApiRequest,_0x1045f0[_0x3dcb(0x87)],'GET',{'debug':_0x4dfea5['debug']});};exports[_0x3dcb(0x7)]=getUserProfile;const updatePlatformConnections=async(_0x149b6f,_0x4b5217={'debug':![]})=>{const _0x36e414={'ISMvh':function(_0x409a18,_0x5114c0,_0x2d2546,_0x15c4db){return _0x409a18(_0x5114c0,_0x2d2546,_0x15c4db);}};return _0x36e414['ISMvh'](makeUserApiRequest,_0x3dcb(0x88),'PUT',{'data':{'platforms':_0x149b6f},'debug':_0x4b5217[_0x3dcb(0x58)]});};exports[_0x3dcb(0x3)]=updatePlatformConnections;const storePIN=async(_0x2234af,_0x546a69={})=>{const _0x274085={'qqNvD':'No\x20username\x20available\x20-\x20either\x20provide\x20username\x20or\x20ensure\x20JWT\x20token\x20is\x20valid','fGsJO':_0x3dcb(0x34),'lZSex':_0x3dcb(0x89)},{debug:debug=![],username:_0x2d3bd0}=_0x546a69,_0x33b07a=_0x2d3bd0||(0x0,_apiKeyService[_0x3dcb(0x8a)])();if(!_0x33b07a)throw new ApiError(_0x274085[_0x3dcb(0x8b)],_0x274085[_0x3dcb(0x8c)]);return makeUserApiRequest(_0x274085[_0x3dcb(0x8d)],'POST',{'data':{'username':_0x33b07a,'pin':_0x2234af},'debug':debug});};exports[_0x3dcb(0x4)]=storePIN;const getCurrentUserToken=async()=>{return await(0x0,_apiKeyService[_0x3dcb(0x8e)])();};exports['getCurrentUserToken']=getCurrentUserToken;const isCurrentUserAuthenticated=()=>{return(0x0,_apiKeyService[_0x3dcb(0x8f)])();};exports['isCurrentUserAuthenticated']=isCurrentUserAuthenticated;
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateCredentials = exports.updatePlatformConnections = exports.storePIN = exports.refreshToken = exports.isCurrentUserAuthenticated = exports.getUserProfile = exports.getPlatformData = exports.getCurrentUserToken = exports.createAccount = exports.authenticate = exports.ApiError = void 0;
|
|
7
|
+
var _netinfo = _interopRequireDefault(require("@react-native-community/netinfo"));
|
|
8
|
+
var _debugHelper = require("./debugHelper");
|
|
9
|
+
var _apiKeyService = require("../services/apiKeyService");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
// API response types
|
|
12
|
+
|
|
13
|
+
// Error types
|
|
14
|
+
|
|
15
|
+
// API error structure
|
|
16
|
+
class ApiError extends Error {
|
|
17
|
+
constructor(message, type, code, details) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.type = type;
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.details = details;
|
|
22
|
+
this.name = 'ApiError';
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Check if the device has an active network connection
|
|
28
|
+
*/
|
|
29
|
+
exports.ApiError = ApiError;
|
|
30
|
+
const checkNetworkConnection = async () => {
|
|
31
|
+
const networkState = await _netinfo.default.fetch();
|
|
32
|
+
return networkState.isConnected === true;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Make user-authenticated API request using JWT token
|
|
37
|
+
*/
|
|
38
|
+
const makeUserApiRequest = async (endpoint, method, options = {}) => {
|
|
39
|
+
const {
|
|
40
|
+
data,
|
|
41
|
+
headers = {},
|
|
42
|
+
debug = false
|
|
43
|
+
} = options;
|
|
44
|
+
try {
|
|
45
|
+
// Check for network connectivity
|
|
46
|
+
const isConnected = await checkNetworkConnection();
|
|
47
|
+
if (!isConnected) {
|
|
48
|
+
throw new ApiError('No network connection available', 'network_error');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Check if user is authenticated
|
|
52
|
+
if (!(0, _apiKeyService.isUserAuthenticated)()) {
|
|
53
|
+
throw new ApiError('User not authenticated. Please verify email first.', 'auth_error');
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Log request information if debug mode is enabled
|
|
57
|
+
if (debug) {
|
|
58
|
+
(0, _debugHelper.logDebug)('User API Request', {
|
|
59
|
+
endpoint,
|
|
60
|
+
method,
|
|
61
|
+
headers: {
|
|
62
|
+
...headers,
|
|
63
|
+
Authorization: '[REDACTED]'
|
|
64
|
+
},
|
|
65
|
+
data: data || null
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Make authenticated request using JWT token
|
|
70
|
+
const response = await (0, _apiKeyService.makeUserRequest)(endpoint, {
|
|
71
|
+
method,
|
|
72
|
+
headers,
|
|
73
|
+
...(data ? {
|
|
74
|
+
body: JSON.stringify(data)
|
|
75
|
+
} : {})
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Parse response as JSON
|
|
79
|
+
const responseData = await response.json();
|
|
80
|
+
|
|
81
|
+
// Log response if debug mode is enabled
|
|
82
|
+
if (debug) {
|
|
83
|
+
(0, _debugHelper.logDebug)('User API Response', {
|
|
84
|
+
status: response.status,
|
|
85
|
+
data: responseData
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Handle API error responses
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
var _responseData$error, _responseData$error2, _responseData$error3;
|
|
92
|
+
const errorType = response.status === 401 || response.status === 403 ? 'auth_error' : response.status === 400 ? 'validation_error' : response.status >= 500 ? 'server_error' : 'unknown_error';
|
|
93
|
+
throw new ApiError(((_responseData$error = responseData.error) === null || _responseData$error === void 0 ? void 0 : _responseData$error.message) || 'API request failed', errorType, (_responseData$error2 = responseData.error) === null || _responseData$error2 === void 0 ? void 0 : _responseData$error2.code, (_responseData$error3 = responseData.error) === null || _responseData$error3 === void 0 ? void 0 : _responseData$error3.details);
|
|
94
|
+
}
|
|
95
|
+
return responseData;
|
|
96
|
+
} catch (error) {
|
|
97
|
+
// Handle specific error types
|
|
98
|
+
if (error instanceof ApiError) {
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
if (error.name === 'AbortError') {
|
|
102
|
+
throw new ApiError('Request timed out', 'timeout_error');
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Log error if debug mode is enabled
|
|
106
|
+
if (debug) {
|
|
107
|
+
(0, _debugHelper.logDebug)('User API Error', {
|
|
108
|
+
endpoint,
|
|
109
|
+
method,
|
|
110
|
+
error: error.message || 'Unknown error'
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Return a generic error for all other cases
|
|
115
|
+
throw new ApiError(error.message || 'An unexpected error occurred', 'unknown_error');
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Make developer-authenticated API request using API key
|
|
121
|
+
*/
|
|
122
|
+
const makeDeveloperApiRequest = async (endpoint, method, options = {}) => {
|
|
123
|
+
const {
|
|
124
|
+
data,
|
|
125
|
+
headers = {},
|
|
126
|
+
debug = false
|
|
127
|
+
} = options;
|
|
128
|
+
try {
|
|
129
|
+
// Check for network connectivity
|
|
130
|
+
const isConnected = await checkNetworkConnection();
|
|
131
|
+
if (!isConnected) {
|
|
132
|
+
throw new ApiError('No network connection available', 'network_error');
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// Log request information if debug mode is enabled
|
|
136
|
+
if (debug) {
|
|
137
|
+
(0, _debugHelper.logDebug)('Developer API Request', {
|
|
138
|
+
endpoint,
|
|
139
|
+
method,
|
|
140
|
+
headers: {
|
|
141
|
+
...headers,
|
|
142
|
+
Authorization: '[REDACTED]'
|
|
143
|
+
},
|
|
144
|
+
data: data || null
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Make authenticated request using developer API key
|
|
149
|
+
const response = await (0, _apiKeyService.makeDeveloperRequest)(endpoint, {
|
|
150
|
+
method,
|
|
151
|
+
headers,
|
|
152
|
+
...(data ? {
|
|
153
|
+
body: JSON.stringify(data)
|
|
154
|
+
} : {})
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Parse response as JSON
|
|
158
|
+
const responseData = await response.json();
|
|
159
|
+
|
|
160
|
+
// Log response if debug mode is enabled
|
|
161
|
+
if (debug) {
|
|
162
|
+
(0, _debugHelper.logDebug)('Developer API Response', {
|
|
163
|
+
status: response.status,
|
|
164
|
+
data: responseData
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Handle API error responses
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
var _responseData$error4, _responseData$error5, _responseData$error6;
|
|
171
|
+
const errorType = response.status === 401 || response.status === 403 ? 'auth_error' : response.status === 400 ? 'validation_error' : response.status >= 500 ? 'server_error' : 'unknown_error';
|
|
172
|
+
throw new ApiError(((_responseData$error4 = responseData.error) === null || _responseData$error4 === void 0 ? void 0 : _responseData$error4.message) || 'API request failed', errorType, (_responseData$error5 = responseData.error) === null || _responseData$error5 === void 0 ? void 0 : _responseData$error5.code, (_responseData$error6 = responseData.error) === null || _responseData$error6 === void 0 ? void 0 : _responseData$error6.details);
|
|
173
|
+
}
|
|
174
|
+
return responseData;
|
|
175
|
+
} catch (error) {
|
|
176
|
+
// Handle specific error types
|
|
177
|
+
if (error instanceof ApiError) {
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
if (error.name === 'AbortError') {
|
|
181
|
+
throw new ApiError('Request timed out', 'timeout_error');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Log error if debug mode is enabled
|
|
185
|
+
if (debug) {
|
|
186
|
+
(0, _debugHelper.logDebug)('Developer API Error', {
|
|
187
|
+
endpoint,
|
|
188
|
+
method,
|
|
189
|
+
error: error.message || 'Unknown error'
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Return a generic error for all other cases
|
|
194
|
+
throw new ApiError(error.message || 'An unexpected error occurred', 'unknown_error');
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Validate user credentials with the API (uses JWT)
|
|
200
|
+
*/
|
|
201
|
+
const validateCredentials = async (username, options = {
|
|
202
|
+
debug: false
|
|
203
|
+
}) => {
|
|
204
|
+
try {
|
|
205
|
+
var _response$data, _response$error;
|
|
206
|
+
const response = await makeUserApiRequest('auth/validate', 'POST', {
|
|
207
|
+
data: {
|
|
208
|
+
username
|
|
209
|
+
},
|
|
210
|
+
debug: options.debug
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
isValid: response.success && ((_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.isValid) === true,
|
|
214
|
+
message: (_response$error = response.error) === null || _response$error === void 0 ? void 0 : _response$error.message
|
|
215
|
+
};
|
|
216
|
+
} catch (error) {
|
|
217
|
+
return {
|
|
218
|
+
isValid: false,
|
|
219
|
+
message: error.message
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Create a new user account (uses developer API key)
|
|
226
|
+
*/
|
|
227
|
+
exports.validateCredentials = validateCredentials;
|
|
228
|
+
const createAccount = async (credentials, options = {
|
|
229
|
+
debug: false
|
|
230
|
+
}) => {
|
|
231
|
+
return makeDeveloperApiRequest('auth/register', 'POST', {
|
|
232
|
+
data: {
|
|
233
|
+
username: credentials.username,
|
|
234
|
+
platforms: credentials.platforms
|
|
235
|
+
},
|
|
236
|
+
debug: options.debug
|
|
237
|
+
});
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Authenticate with the API using credentials (uses JWT)
|
|
242
|
+
*/
|
|
243
|
+
exports.createAccount = createAccount;
|
|
244
|
+
const authenticate = async (credentials, options = {
|
|
245
|
+
debug: false
|
|
246
|
+
}) => {
|
|
247
|
+
return makeUserApiRequest('auth/login', 'POST', {
|
|
248
|
+
data: {
|
|
249
|
+
username: credentials.username,
|
|
250
|
+
pin: credentials.userPin
|
|
251
|
+
},
|
|
252
|
+
debug: options.debug
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Refresh authentication token (uses JWT)
|
|
258
|
+
*/
|
|
259
|
+
exports.authenticate = authenticate;
|
|
260
|
+
const refreshToken = async (refreshToken, options = {
|
|
261
|
+
debug: false
|
|
262
|
+
}) => {
|
|
263
|
+
return makeUserApiRequest('auth/refresh', 'POST', {
|
|
264
|
+
data: {
|
|
265
|
+
refreshToken
|
|
266
|
+
},
|
|
267
|
+
debug: options.debug
|
|
268
|
+
});
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Get user's connected platform data (uses JWT)
|
|
273
|
+
*/
|
|
274
|
+
exports.refreshToken = refreshToken;
|
|
275
|
+
const getPlatformData = async (platform, options = {
|
|
276
|
+
debug: false
|
|
277
|
+
}) => {
|
|
278
|
+
return makeUserApiRequest(`platforms/${platform}/data`, 'GET', {
|
|
279
|
+
debug: options.debug
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Get user profile information (uses JWT)
|
|
285
|
+
*/
|
|
286
|
+
exports.getPlatformData = getPlatformData;
|
|
287
|
+
const getUserProfile = async (options = {
|
|
288
|
+
debug: false
|
|
289
|
+
}) => {
|
|
290
|
+
return makeUserApiRequest('user/profile', 'GET', {
|
|
291
|
+
debug: options.debug
|
|
292
|
+
});
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Update user platform connections (uses JWT)
|
|
297
|
+
*/
|
|
298
|
+
exports.getUserProfile = getUserProfile;
|
|
299
|
+
const updatePlatformConnections = async (platforms, options = {
|
|
300
|
+
debug: false
|
|
301
|
+
}) => {
|
|
302
|
+
return makeUserApiRequest('user/platforms', 'PUT', {
|
|
303
|
+
data: {
|
|
304
|
+
platforms
|
|
305
|
+
},
|
|
306
|
+
debug: options.debug
|
|
307
|
+
});
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Store user PIN (uses JWT and extracts username from JWT)
|
|
312
|
+
*/
|
|
313
|
+
exports.updatePlatformConnections = updatePlatformConnections;
|
|
314
|
+
const storePIN = async (pin, options = {}) => {
|
|
315
|
+
const {
|
|
316
|
+
debug = false,
|
|
317
|
+
username
|
|
318
|
+
} = options;
|
|
319
|
+
|
|
320
|
+
// Extract username from JWT if not provided
|
|
321
|
+
const userToStore = username || (0, _apiKeyService.extractUsernameFromJWT)();
|
|
322
|
+
if (!userToStore) {
|
|
323
|
+
throw new ApiError('No username available - either provide username or ensure JWT token is valid', 'auth_error');
|
|
324
|
+
}
|
|
325
|
+
return makeUserApiRequest('store-pin/mobile', 'POST', {
|
|
326
|
+
data: {
|
|
327
|
+
username: userToStore,
|
|
328
|
+
pin
|
|
329
|
+
},
|
|
330
|
+
debug
|
|
331
|
+
});
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Get current JWT token
|
|
336
|
+
*/
|
|
337
|
+
exports.storePIN = storePIN;
|
|
338
|
+
const getCurrentUserToken = async () => {
|
|
339
|
+
return await (0, _apiKeyService.getJWT)();
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Check if user is authenticated with JWT
|
|
344
|
+
*/
|
|
345
|
+
exports.getCurrentUserToken = getCurrentUserToken;
|
|
346
|
+
const isCurrentUserAuthenticated = () => {
|
|
347
|
+
return (0, _apiKeyService.isUserAuthenticated)();
|
|
348
|
+
};
|
|
349
|
+
exports.isCurrentUserAuthenticated = isCurrentUserAuthenticated;
|
|
350
|
+
//# sourceMappingURL=onairosApi.js.map
|