@onairos/react-native 3.4.1 โ 3.5.4
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/README.md +62 -13
- package/lib/commonjs/api/index.js +9 -145
- package/lib/commonjs/assets/animations/loaderani.json +1 -0
- package/lib/commonjs/assets/animations/persona-animation.json +1 -0
- package/lib/commonjs/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
- package/lib/commonjs/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
- package/lib/commonjs/assets/icons/Facebookicon.png +0 -0
- package/lib/commonjs/assets/icons/Gmail.png +0 -0
- package/lib/commonjs/assets/icons/Linkedinicon.png +0 -0
- package/lib/commonjs/assets/icons/Redditicon.png +0 -0
- package/lib/commonjs/assets/icons/YouTubeicon2.png +0 -0
- package/lib/commonjs/assets/icons/YouTubeicon3.png +0 -0
- package/lib/commonjs/assets/icons/chatgpt.png +0 -0
- package/lib/commonjs/assets/icons/claude.png +0 -0
- package/lib/commonjs/assets/icons/gemini.png +0 -0
- package/lib/commonjs/assets/icons/grok.png +0 -0
- package/lib/commonjs/assets/images/Checkbox.svg +3 -0
- package/lib/commonjs/assets/images/EnochE.svg +19 -0
- package/lib/commonjs/assets/images/Enochicon1.png +0 -0
- package/lib/commonjs/assets/images/Face_ID_logo.png +0 -0
- package/lib/commonjs/assets/images/Facebookicon.png +0 -0
- package/lib/commonjs/assets/images/Gmail.png +0 -0
- package/lib/commonjs/assets/images/Googlelogo.png +0 -0
- package/lib/commonjs/assets/images/Linkedinicon.png +0 -0
- package/lib/commonjs/assets/images/Onairoslogo.png +0 -0
- package/lib/commonjs/assets/images/Personalityprofile.svg +3 -0
- package/lib/commonjs/assets/images/Personalitytraits.svg +3 -0
- package/lib/commonjs/assets/images/Redditicon.png +0 -0
- package/lib/commonjs/assets/images/Userpreferences.svg +3 -0
- package/lib/commonjs/assets/images/YouTubeicon3.png +0 -0
- package/lib/commonjs/assets/images/arrow.svg +20 -0
- package/lib/commonjs/assets/images/basicproficon.svg +43 -0
- package/lib/commonjs/assets/images/basicprofile.svg +3 -0
- package/lib/commonjs/assets/images/chatgpt.png +0 -0
- package/lib/commonjs/assets/images/checkmark.svg +4 -0
- package/lib/commonjs/assets/images/claude.png +0 -0
- package/lib/commonjs/assets/images/contentanalysis.svg +3 -0
- package/lib/commonjs/assets/images/contenticon.svg +23 -0
- package/lib/commonjs/assets/images/gemini.png +0 -0
- package/lib/commonjs/assets/images/grok.png +0 -0
- package/lib/commonjs/assets/images/persona1.png +0 -0
- package/lib/commonjs/assets/images/persona2.png +0 -0
- package/lib/commonjs/assets/images/persona3.png +0 -0
- package/lib/commonjs/assets/images/persona4.png +0 -0
- package/lib/commonjs/assets/images/persona5.png +0 -0
- package/lib/commonjs/assets/images/personalityicon.svg +18 -0
- package/lib/commonjs/assets/images/x-close.svg +3 -0
- package/lib/commonjs/components/BodyText.js +9 -0
- package/lib/commonjs/components/BrandMark.js +10 -0
- package/lib/commonjs/components/CodeInput.js +9 -0
- package/lib/commonjs/components/EmailInput.js +8 -0
- package/lib/commonjs/components/GoogleButton.js +9 -0
- package/lib/commonjs/components/HeadingGroup.js +9 -0
- package/lib/commonjs/components/LLMDataInputModal.js +14 -0
- package/lib/commonjs/components/ModalHeader.js +9 -0
- package/lib/commonjs/components/ModalSheet.js +9 -0
- package/lib/commonjs/components/Onairos.js +14 -374
- package/lib/commonjs/components/OnairosButton.js +13 -309
- package/lib/commonjs/components/OnairosSignInButton.js +12 -0
- package/lib/commonjs/components/Overlay.js +13 -483
- package/lib/commonjs/components/PersonaImage.js +10 -0
- package/lib/commonjs/components/PersonaLoadingScreen.js +12 -0
- package/lib/commonjs/components/PersonalizationConsentScreen.js +13 -0
- package/lib/commonjs/components/PinCreationScreen.js +12 -0
- package/lib/commonjs/components/PinInput.js +9 -302
- package/lib/commonjs/components/PlatformConnectorsStep.js +22 -0
- package/lib/commonjs/components/PlatformList.js +10 -137
- package/lib/commonjs/components/PlatformToggle.js +9 -0
- package/lib/commonjs/components/PrimaryButton.js +10 -0
- package/lib/commonjs/components/SignInMatchAnimation.js +9 -0
- package/lib/commonjs/components/SignInStep.js +12 -0
- package/lib/commonjs/components/UniversalOnboarding.js +29 -1702
- package/lib/commonjs/components/VerificationStep.js +11 -0
- package/lib/commonjs/components/WelcomeScreen.js +21 -0
- package/lib/commonjs/components/icons/Basicproficon.js +8 -0
- package/lib/commonjs/components/icons/Basicprofile.js +8 -0
- package/lib/commonjs/components/icons/Checkbox.js +8 -0
- package/lib/commonjs/components/icons/Checkmark.js +8 -0
- package/lib/commonjs/components/icons/Contentanalysis.js +8 -0
- package/lib/commonjs/components/icons/Contenticon.js +8 -0
- package/lib/commonjs/components/icons/EnochE.js +8 -0
- package/lib/commonjs/components/icons/Personalityicon.js +8 -0
- package/lib/commonjs/components/icons/Personalityprofile.js +8 -0
- package/lib/commonjs/components/icons/Personalitytraits.js +8 -0
- package/lib/commonjs/components/icons/Userpreferences.js +8 -0
- package/lib/commonjs/components/icons/index.js +17 -0
- package/lib/commonjs/components/onboarding/OAuthWebView.js +14 -827
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +10 -74
- package/lib/commonjs/components/onboarding/PinInput.js +10 -283
- package/lib/commonjs/components/onboarding/PlatformConnector.js +11 -249
- package/lib/commonjs/config/api.js +7 -0
- package/lib/commonjs/constants/index.js +7 -83
- package/lib/commonjs/context/AuthContext.js +10 -0
- package/lib/commonjs/hooks/useConnectedAccounts.js +9 -0
- package/lib/commonjs/hooks/useConnections.js +8 -159
- package/lib/commonjs/hooks/useCredentials.js +10 -177
- package/lib/commonjs/hooks/useUserConnections.js +10 -0
- package/lib/commonjs/index.js +35 -106
- package/lib/commonjs/services/apiClient.js +8 -0
- package/lib/commonjs/services/apiKeyService.js +9 -952
- package/lib/commonjs/services/authService.js +10 -0
- package/lib/commonjs/services/biometricPinService.js +8 -0
- package/lib/commonjs/services/chatGPTConversationExtractor.js +8 -0
- package/lib/commonjs/services/chatGPTConversationService.js +9 -0
- package/lib/commonjs/services/claudeConversationExtractor.js +8 -0
- package/lib/commonjs/services/claudeConversationService.js +9 -0
- package/lib/commonjs/services/connectedAccountsService.js +10 -0
- package/lib/commonjs/services/googleAuthService.js +11 -0
- package/lib/commonjs/services/imageCompressionService.js +7 -0
- package/lib/commonjs/services/jwtStorageService.js +7 -0
- package/lib/commonjs/services/linkedinDOMExtractor.js +7 -0
- package/lib/commonjs/services/linkedinProfileService.js +9 -0
- package/lib/commonjs/services/linkedinScrapingService.js +8 -0
- package/lib/commonjs/services/llmDataStorage.js +8 -0
- package/lib/commonjs/services/mobileTrainingService.js +8 -0
- package/lib/commonjs/services/oauthService.js +11 -390
- package/lib/commonjs/services/pinEncryptionService.js +8 -0
- package/lib/commonjs/services/pinStorageUtils.js +7 -0
- package/lib/commonjs/services/platformAuthService.js +12 -1067
- package/lib/commonjs/services/storageService.js +8 -0
- package/lib/commonjs/services/trainingApiHelpers.js +7 -0
- package/lib/commonjs/services/userConnectionsService.js +10 -0
- package/lib/commonjs/services/youtubeMigrationService.js +10 -0
- package/lib/commonjs/theme/index.js +7 -0
- package/lib/commonjs/types/ambient.d.js +1 -2
- package/lib/commonjs/types/declarations.d.js +1 -2
- package/lib/commonjs/types/index.js +1 -6
- package/lib/commonjs/types/node-fix.d.js +1 -2
- package/lib/commonjs/types/node-override.d.js +1 -2
- package/lib/commonjs/types/opacity.d.js +1 -2
- package/lib/commonjs/types.js +1 -14
- package/lib/commonjs/utils/Portal.js +8 -98
- package/lib/commonjs/utils/api.js +9 -129
- package/lib/commonjs/utils/assetRegistry.js +33 -0
- package/lib/commonjs/utils/auth.js +9 -111
- package/lib/commonjs/utils/crypto.js +8 -62
- package/lib/commonjs/utils/debugHelper.js +1 -64
- package/lib/commonjs/utils/encryption.js +7 -76
- package/lib/commonjs/utils/eventUtils.js +1 -0
- package/lib/commonjs/utils/haptics.js +9 -0
- package/lib/commonjs/utils/imagePreloader.js +1 -0
- package/lib/commonjs/utils/networkDiagnostics.js +8 -0
- package/lib/commonjs/utils/onairosApi.js +9 -350
- package/lib/commonjs/utils/programmaticFlow.js +9 -117
- package/lib/commonjs/utils/retryHelper.js +1 -220
- package/lib/commonjs/utils/secureStorage.js +10 -349
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +1 -0
- package/lib/commonjs/utils/webviewScripts/claude.js +1 -0
- package/lib/commonjs/utils/webviewScripts/index.js +9 -0
- package/lib/commonjs/utils/webviewScripts/linkedin.js +1 -0
- package/lib/module/api/index.js +1 -139
- package/lib/module/assets/animations/loaderani.json +1 -0
- package/lib/module/assets/animations/persona-animation.json +1 -0
- package/lib/module/assets/fonts/EBGaramond-VariableFont_wght.ttf +0 -0
- package/lib/module/assets/fonts/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
- package/lib/module/assets/icons/Facebookicon.png +0 -0
- package/lib/module/assets/icons/Gmail.png +0 -0
- package/lib/module/assets/icons/Linkedinicon.png +0 -0
- package/lib/module/assets/icons/Redditicon.png +0 -0
- package/lib/module/assets/icons/YouTubeicon2.png +0 -0
- package/lib/module/assets/icons/YouTubeicon3.png +0 -0
- package/lib/module/assets/icons/chatgpt.png +0 -0
- package/lib/module/assets/icons/claude.png +0 -0
- package/lib/module/assets/icons/farcaster.png +0 -0
- package/lib/module/assets/icons/gemini.png +0 -0
- package/lib/module/assets/icons/grok.png +0 -0
- package/lib/module/assets/icons/instagram.png +0 -0
- package/lib/module/assets/icons/pinterest.png +0 -0
- package/lib/module/assets/icons/swerv_logo.png +0 -0
- package/lib/module/assets/icons/twitter.jpg +0 -0
- package/lib/module/assets/images/Checkbox.svg +3 -0
- package/lib/module/assets/images/EnochE.svg +19 -0
- package/lib/module/assets/images/Enochicon1.png +0 -0
- package/lib/module/assets/images/Face_ID_logo.png +0 -0
- package/lib/module/assets/images/Facebookicon.png +0 -0
- package/lib/module/assets/images/Gmail.png +0 -0
- package/lib/module/assets/images/Googlelogo.png +0 -0
- package/lib/module/assets/images/Linkedinicon.png +0 -0
- package/lib/module/assets/images/Onairoslogo.png +0 -0
- package/lib/module/assets/images/Personalityprofile.svg +3 -0
- package/lib/module/assets/images/Personalitytraits.svg +3 -0
- package/lib/module/assets/images/Redditicon.png +0 -0
- package/lib/module/assets/images/Userpreferences.svg +3 -0
- package/lib/module/assets/images/YouTubeicon3.png +0 -0
- package/lib/module/assets/images/arrow.svg +20 -0
- package/lib/module/assets/images/basicproficon.svg +43 -0
- package/lib/module/assets/images/basicprofile.svg +3 -0
- package/lib/module/assets/images/chatgpt.png +0 -0
- package/lib/module/assets/images/checkmark.svg +4 -0
- package/lib/module/assets/images/claude.png +0 -0
- package/lib/module/assets/images/contentanalysis.svg +3 -0
- package/lib/module/assets/images/contenticon.svg +23 -0
- package/lib/module/assets/images/gemini.png +0 -0
- package/lib/module/assets/images/grok.png +0 -0
- package/lib/module/assets/images/persona1.png +0 -0
- package/lib/module/assets/images/persona2.png +0 -0
- package/lib/module/assets/images/persona3.png +0 -0
- package/lib/module/assets/images/persona4.png +0 -0
- package/lib/module/assets/images/persona5.png +0 -0
- package/lib/module/assets/images/personalityicon.svg +18 -0
- package/lib/module/assets/images/x-close.svg +3 -0
- package/lib/module/components/BodyText.js +1 -0
- package/lib/module/components/BrandMark.js +1 -0
- package/lib/module/components/CodeInput.js +1 -0
- package/lib/module/components/EmailInput.js +1 -0
- package/lib/module/components/GoogleButton.js +1 -0
- package/lib/module/components/HeadingGroup.js +1 -0
- package/lib/module/components/LLMDataInputModal.js +8 -0
- package/lib/module/components/ModalHeader.js +1 -0
- package/lib/module/components/ModalSheet.js +1 -0
- package/lib/module/components/Onairos.js +1 -367
- package/lib/module/components/OnairosButton.js +1 -302
- package/lib/module/components/OnairosSignInButton.js +1 -0
- package/lib/module/components/Overlay.js +1 -474
- package/lib/module/components/PersonaImage.js +1 -0
- package/lib/module/components/PersonaLoadingScreen.js +1 -0
- package/lib/module/components/PersonalizationConsentScreen.js +1 -0
- package/lib/module/components/PinCreationScreen.js +1 -0
- package/lib/module/components/PinInput.js +1 -293
- package/lib/module/components/PlatformConnectorsStep.js +1 -0
- package/lib/module/components/PlatformList.js +1 -129
- package/lib/module/components/PlatformToggle.js +1 -0
- package/lib/module/components/PrimaryButton.js +1 -0
- package/lib/module/components/SignInMatchAnimation.js +1 -0
- package/lib/module/components/SignInStep.js +1 -0
- package/lib/module/components/UniversalOnboarding.js +1 -1693
- package/lib/module/components/VerificationStep.js +1 -0
- package/lib/module/components/WelcomeScreen.js +1 -0
- package/lib/module/components/icons/Basicproficon.js +1 -0
- package/lib/module/components/icons/Basicprofile.js +1 -0
- package/lib/module/components/icons/Checkbox.js +1 -0
- package/lib/module/components/icons/Checkmark.js +1 -0
- package/lib/module/components/icons/Contentanalysis.js +1 -0
- package/lib/module/components/icons/Contenticon.js +1 -0
- package/lib/module/components/icons/EnochE.js +1 -0
- package/lib/module/components/icons/Personalityicon.js +1 -0
- package/lib/module/components/icons/Personalityprofile.js +1 -0
- package/lib/module/components/icons/Personalitytraits.js +1 -0
- package/lib/module/components/icons/Userpreferences.js +1 -0
- package/lib/module/components/icons/index.js +1 -0
- package/lib/module/components/onboarding/OAuthWebView.js +1 -818
- package/lib/module/components/onboarding/OnboardingHeader.js +1 -66
- package/lib/module/components/onboarding/PinInput.js +1 -274
- package/lib/module/components/onboarding/PlatformConnector.js +1 -240
- package/lib/module/config/api.js +1 -0
- package/lib/module/constants/index.js +1 -77
- package/lib/module/context/AuthContext.js +1 -0
- package/lib/module/hooks/useConnectedAccounts.js +1 -0
- package/lib/module/hooks/useConnections.js +1 -152
- package/lib/module/hooks/useCredentials.js +6 -169
- package/lib/module/hooks/useUserConnections.js +1 -0
- package/lib/module/index.js +1 -32
- package/lib/module/services/apiClient.js +1 -0
- package/lib/module/services/apiKeyService.js +1 -925
- package/lib/module/services/authService.js +1 -0
- package/lib/module/services/biometricPinService.js +1 -0
- package/lib/module/services/chatGPTConversationExtractor.js +1 -0
- package/lib/module/services/chatGPTConversationService.js +1 -0
- package/lib/module/services/claudeConversationExtractor.js +1 -0
- package/lib/module/services/claudeConversationService.js +1 -0
- package/lib/module/services/connectedAccountsService.js +1 -0
- package/lib/module/services/googleAuthService.js +1 -0
- package/lib/module/services/imageCompressionService.js +1 -0
- package/lib/module/services/jwtStorageService.js +1 -0
- package/lib/module/services/linkedinDOMExtractor.js +1 -0
- package/lib/module/services/linkedinProfileService.js +1 -0
- package/lib/module/services/linkedinScrapingService.js +1 -0
- package/lib/module/services/llmDataStorage.js +1 -0
- package/lib/module/services/mobileTrainingService.js +1 -0
- package/lib/module/services/oauthService.js +1 -380
- package/lib/module/services/pinEncryptionService.js +7 -0
- package/lib/module/services/pinStorageUtils.js +1 -0
- package/lib/module/services/platformAuthService.js +1 -1041
- package/lib/module/services/storageService.js +1 -0
- package/lib/module/services/trainingApiHelpers.js +1 -0
- package/lib/module/services/userConnectionsService.js +1 -0
- package/lib/module/services/youtubeMigrationService.js +1 -0
- package/lib/module/theme/index.js +1 -0
- package/lib/module/types.js +1 -10
- package/lib/module/utils/Portal.js +1 -90
- package/lib/module/utils/api.js +1 -117
- package/lib/module/utils/assetRegistry.js +33 -0
- package/lib/module/utils/auth.js +1 -99
- package/lib/module/utils/crypto.js +1 -54
- package/lib/module/utils/debugHelper.js +1 -54
- package/lib/module/utils/encryption.js +1 -67
- package/lib/module/utils/eventUtils.js +1 -0
- package/lib/module/utils/haptics.js +8 -0
- package/lib/module/utils/imagePreloader.js +1 -0
- package/lib/module/utils/networkDiagnostics.js +1 -0
- package/lib/module/utils/onairosApi.js +1 -333
- package/lib/module/utils/programmaticFlow.js +1 -111
- package/lib/module/utils/retryHelper.js +1 -211
- package/lib/module/utils/secureStorage.js +6 -330
- package/lib/module/utils/webviewScripts/chatgpt.js +1 -0
- package/lib/module/utils/webviewScripts/claude.js +1 -0
- package/lib/module/utils/webviewScripts/index.js +1 -0
- package/lib/module/utils/webviewScripts/linkedin.js +1 -0
- package/package.json +62 -39
- package/lib/commonjs/api/index.js.map +0 -1
- package/lib/commonjs/assets/images/email.png +0 -0
- package/lib/commonjs/assets/images/linkedin.png +0 -0
- package/lib/commonjs/assets/images/reddit.png +0 -0
- package/lib/commonjs/assets/images/youtube.png +0 -0
- package/lib/commonjs/components/DataRequestModal.js +0 -228
- package/lib/commonjs/components/DataRequestModal.js.map +0 -1
- package/lib/commonjs/components/DataRequestScreen.js +0 -329
- package/lib/commonjs/components/DataRequestScreen.js.map +0 -1
- package/lib/commonjs/components/EmailVerificationModal.js +0 -320
- package/lib/commonjs/components/EmailVerificationModal.js.map +0 -1
- package/lib/commonjs/components/Onairos.js.map +0 -1
- package/lib/commonjs/components/OnairosButton.js.map +0 -1
- package/lib/commonjs/components/Overlay.js.map +0 -1
- package/lib/commonjs/components/PinInput.js.map +0 -1
- package/lib/commonjs/components/PlatformList.js.map +0 -1
- package/lib/commonjs/components/TrainingModal.js +0 -717
- package/lib/commonjs/components/TrainingModal.js.map +0 -1
- package/lib/commonjs/components/UniversalOnboarding.js.map +0 -1
- package/lib/commonjs/components/UniversalOnboarding.tsx.new +0 -455
- package/lib/commonjs/components/onboarding/OAuthWebView.js.map +0 -1
- package/lib/commonjs/components/onboarding/OnboardingHeader.js.map +0 -1
- package/lib/commonjs/components/onboarding/PinInput.js.map +0 -1
- package/lib/commonjs/components/onboarding/PlatformConnector.js.map +0 -1
- package/lib/commonjs/components/screens/ConnectorScreen.js +0 -146
- package/lib/commonjs/components/screens/ConnectorScreen.js.map +0 -1
- package/lib/commonjs/components/screens/LoadingScreen.js +0 -91
- package/lib/commonjs/components/screens/LoadingScreen.js.map +0 -1
- package/lib/commonjs/components/screens/PinCreationScreen.js +0 -61
- package/lib/commonjs/components/screens/PinCreationScreen.js.map +0 -1
- package/lib/commonjs/constants/index.js.map +0 -1
- package/lib/commonjs/hooks/useConnections.js.map +0 -1
- package/lib/commonjs/hooks/useCredentials.js.map +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/services/apiKeyService.js.map +0 -1
- package/lib/commonjs/services/oauthService.js.map +0 -1
- package/lib/commonjs/services/platformAuthService.js.map +0 -1
- package/lib/commonjs/types/ambient.d.js.map +0 -1
- package/lib/commonjs/types/declarations.d.js.map +0 -1
- package/lib/commonjs/types/index.d.js.map +0 -1
- package/lib/commonjs/types/index.js.map +0 -1
- package/lib/commonjs/types/node-fix.d.js.map +0 -1
- package/lib/commonjs/types/node-override.d.js.map +0 -1
- package/lib/commonjs/types/opacity.d.js.map +0 -1
- package/lib/commonjs/types/types.d.js.map +0 -1
- package/lib/commonjs/types.js.map +0 -1
- package/lib/commonjs/utils/Portal.js.map +0 -1
- package/lib/commonjs/utils/api.js.map +0 -1
- package/lib/commonjs/utils/auth.js.map +0 -1
- package/lib/commonjs/utils/crypto.js.map +0 -1
- package/lib/commonjs/utils/debugHelper.js.map +0 -1
- package/lib/commonjs/utils/encryption.js.map +0 -1
- package/lib/commonjs/utils/onairosApi.js.map +0 -1
- package/lib/commonjs/utils/programmaticFlow.js.map +0 -1
- package/lib/commonjs/utils/retryHelper.js.map +0 -1
- package/lib/commonjs/utils/secureStorage.js.map +0 -1
- package/lib/module/api/index.js.map +0 -1
- package/lib/module/assets/images/email.png +0 -0
- package/lib/module/assets/images/linkedin.png +0 -0
- package/lib/module/assets/images/reddit.png +0 -0
- package/lib/module/assets/images/youtube.png +0 -0
- package/lib/module/components/DataRequestModal.js +0 -220
- package/lib/module/components/DataRequestModal.js.map +0 -1
- package/lib/module/components/DataRequestScreen.js +0 -321
- package/lib/module/components/DataRequestScreen.js.map +0 -1
- package/lib/module/components/EmailVerificationModal.js +0 -311
- package/lib/module/components/EmailVerificationModal.js.map +0 -1
- package/lib/module/components/Onairos.js.map +0 -1
- package/lib/module/components/OnairosButton.js.map +0 -1
- package/lib/module/components/Overlay.js.map +0 -1
- package/lib/module/components/PinInput.js.map +0 -1
- package/lib/module/components/PlatformList.js.map +0 -1
- package/lib/module/components/TrainingModal.js +0 -708
- package/lib/module/components/TrainingModal.js.map +0 -1
- package/lib/module/components/UniversalOnboarding.js.map +0 -1
- package/lib/module/components/UniversalOnboarding.tsx.new +0 -455
- package/lib/module/components/onboarding/OAuthWebView.js.map +0 -1
- package/lib/module/components/onboarding/OnboardingHeader.js.map +0 -1
- package/lib/module/components/onboarding/PinInput.js.map +0 -1
- package/lib/module/components/onboarding/PlatformConnector.js.map +0 -1
- package/lib/module/components/screens/ConnectorScreen.js +0 -138
- package/lib/module/components/screens/ConnectorScreen.js.map +0 -1
- package/lib/module/components/screens/LoadingScreen.js +0 -83
- package/lib/module/components/screens/LoadingScreen.js.map +0 -1
- package/lib/module/components/screens/PinCreationScreen.js +0 -53
- package/lib/module/components/screens/PinCreationScreen.js.map +0 -1
- package/lib/module/constants/index.js.map +0 -1
- package/lib/module/hooks/useConnections.js.map +0 -1
- package/lib/module/hooks/useCredentials.js.map +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/services/apiKeyService.js.map +0 -1
- package/lib/module/services/oauthService.js.map +0 -1
- package/lib/module/services/platformAuthService.js.map +0 -1
- package/lib/module/types/ambient.d.js.map +0 -1
- package/lib/module/types/declarations.d.js.map +0 -1
- package/lib/module/types/index.d.js.map +0 -1
- package/lib/module/types/index.js.map +0 -1
- package/lib/module/types/node-fix.d.js.map +0 -1
- package/lib/module/types/node-override.d.js.map +0 -1
- package/lib/module/types/opacity.d.js.map +0 -1
- package/lib/module/types/types.d.js.map +0 -1
- package/lib/module/types.js.map +0 -1
- package/lib/module/utils/Portal.js.map +0 -1
- package/lib/module/utils/api.js.map +0 -1
- package/lib/module/utils/auth.js.map +0 -1
- package/lib/module/utils/crypto.js.map +0 -1
- package/lib/module/utils/debugHelper.js.map +0 -1
- package/lib/module/utils/encryption.js.map +0 -1
- package/lib/module/utils/onairosApi.js.map +0 -1
- package/lib/module/utils/programmaticFlow.js.map +0 -1
- package/lib/module/utils/retryHelper.js.map +0 -1
- package/lib/module/utils/secureStorage.js.map +0 -1
- package/lib/typescript/api/index.d.ts +0 -8
- package/lib/typescript/api/index.d.ts.map +0 -1
- package/lib/typescript/components/DataRequestModal.d.ts +0 -11
- package/lib/typescript/components/DataRequestModal.d.ts.map +0 -1
- package/lib/typescript/components/DataRequestScreen.d.ts +0 -11
- package/lib/typescript/components/DataRequestScreen.d.ts.map +0 -1
- package/lib/typescript/components/EmailVerificationModal.d.ts +0 -11
- package/lib/typescript/components/EmailVerificationModal.d.ts.map +0 -1
- package/lib/typescript/components/Onairos.d.ts +0 -4
- package/lib/typescript/components/Onairos.d.ts.map +0 -1
- package/lib/typescript/components/OnairosButton.d.ts +0 -12
- package/lib/typescript/components/OnairosButton.d.ts.map +0 -1
- package/lib/typescript/components/Overlay.d.ts +0 -4
- package/lib/typescript/components/Overlay.d.ts.map +0 -1
- package/lib/typescript/components/PinInput.d.ts +0 -4
- package/lib/typescript/components/PinInput.d.ts.map +0 -1
- package/lib/typescript/components/PlatformList.d.ts +0 -4
- package/lib/typescript/components/PlatformList.d.ts.map +0 -1
- package/lib/typescript/components/TrainingModal.d.ts +0 -4
- package/lib/typescript/components/TrainingModal.d.ts.map +0 -1
- package/lib/typescript/components/UniversalOnboarding.d.ts +0 -4
- package/lib/typescript/components/UniversalOnboarding.d.ts.map +0 -1
- package/lib/typescript/components/onboarding/OAuthWebView.d.ts +0 -10
- package/lib/typescript/components/onboarding/OAuthWebView.d.ts.map +0 -1
- package/lib/typescript/components/onboarding/OnboardingHeader.d.ts +0 -11
- package/lib/typescript/components/onboarding/OnboardingHeader.d.ts.map +0 -1
- package/lib/typescript/components/onboarding/PinInput.d.ts +0 -4
- package/lib/typescript/components/onboarding/PinInput.d.ts.map +0 -1
- package/lib/typescript/components/onboarding/PlatformConnector.d.ts +0 -13
- package/lib/typescript/components/onboarding/PlatformConnector.d.ts.map +0 -1
- package/lib/typescript/components/screens/ConnectorScreen.d.ts +0 -9
- package/lib/typescript/components/screens/ConnectorScreen.d.ts.map +0 -1
- package/lib/typescript/components/screens/LoadingScreen.d.ts +0 -9
- package/lib/typescript/components/screens/LoadingScreen.d.ts.map +0 -1
- package/lib/typescript/components/screens/PinCreationScreen.d.ts +0 -10
- package/lib/typescript/components/screens/PinCreationScreen.d.ts.map +0 -1
- package/lib/typescript/constants/index.d.ts +0 -53
- package/lib/typescript/constants/index.d.ts.map +0 -1
- package/lib/typescript/hooks/useConnections.d.ts +0 -9
- package/lib/typescript/hooks/useConnections.d.ts.map +0 -1
- package/lib/typescript/hooks/useCredentials.d.ts +0 -9
- package/lib/typescript/hooks/useCredentials.d.ts.map +0 -1
- package/lib/typescript/index.d.ts +0 -18
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/services/apiKeyService.d.ts +0 -132
- package/lib/typescript/services/apiKeyService.d.ts.map +0 -1
- package/lib/typescript/services/oauthService.d.ts +0 -50
- package/lib/typescript/services/oauthService.d.ts.map +0 -1
- package/lib/typescript/services/platformAuthService.d.ts +0 -144
- package/lib/typescript/services/platformAuthService.d.ts.map +0 -1
- package/lib/typescript/types/index.d.ts +0 -231
- package/lib/typescript/types/index.d.ts.map +0 -1
- package/lib/typescript/types.d.ts +0 -270
- package/lib/typescript/types.d.ts.map +0 -1
- package/lib/typescript/utils/Portal.d.ts +0 -14
- package/lib/typescript/utils/Portal.d.ts.map +0 -1
- package/lib/typescript/utils/api.d.ts +0 -6
- package/lib/typescript/utils/api.d.ts.map +0 -1
- package/lib/typescript/utils/auth.d.ts +0 -6
- package/lib/typescript/utils/auth.d.ts.map +0 -1
- package/lib/typescript/utils/crypto.d.ts +0 -4
- package/lib/typescript/utils/crypto.d.ts.map +0 -1
- package/lib/typescript/utils/debugHelper.d.ts +0 -29
- package/lib/typescript/utils/debugHelper.d.ts.map +0 -1
- package/lib/typescript/utils/encryption.d.ts +0 -19
- package/lib/typescript/utils/encryption.d.ts.map +0 -1
- package/lib/typescript/utils/onairosApi.d.ts +0 -87
- package/lib/typescript/utils/onairosApi.d.ts.map +0 -1
- package/lib/typescript/utils/programmaticFlow.d.ts +0 -23
- package/lib/typescript/utils/programmaticFlow.d.ts.map +0 -1
- package/lib/typescript/utils/retryHelper.d.ts +0 -69
- package/lib/typescript/utils/retryHelper.d.ts.map +0 -1
- package/lib/typescript/utils/secureStorage.d.ts +0 -94
- package/lib/typescript/utils/secureStorage.d.ts.map +0 -1
- package/src/api/index.ts +0 -111
- package/src/assets/images/email.png +0 -0
- package/src/assets/images/linkedin.png +0 -0
- package/src/assets/images/onairos_logo.png +0 -0
- package/src/assets/images/reddit.png +0 -0
- package/src/assets/images/youtube.png +0 -0
- package/src/components/DataRequestModal.tsx +0 -227
- package/src/components/DataRequestScreen.tsx +0 -356
- package/src/components/EmailVerificationModal.tsx +0 -364
- package/src/components/Onairos.tsx +0 -425
- package/src/components/OnairosButton.tsx +0 -359
- package/src/components/Overlay.tsx +0 -506
- package/src/components/PinInput.tsx +0 -343
- package/src/components/PlatformList.tsx +0 -145
- package/src/components/TrainingModal.tsx +0 -737
- package/src/components/UniversalOnboarding.tsx +0 -1839
- package/src/components/UniversalOnboarding.tsx.new +0 -455
- package/src/components/onboarding/OAuthWebView.tsx +0 -838
- package/src/components/onboarding/OnboardingHeader.tsx +0 -70
- package/src/components/onboarding/PinInput.tsx +0 -356
- package/src/components/onboarding/PlatformConnector.tsx +0 -302
- package/src/components/screens/ConnectorScreen.tsx +0 -153
- package/src/components/screens/LoadingScreen.tsx +0 -100
- package/src/components/screens/PinCreationScreen.tsx +0 -67
- package/src/constants/index.ts +0 -83
- package/src/hooks/useConnections.ts +0 -163
- package/src/hooks/useCredentials.ts +0 -175
- package/src/index.js +0 -14
- package/src/index.ts +0 -50
- package/src/services/SDK_API_KEY_VALIDATION.md +0 -421
- package/src/services/apiKeyService.ts +0 -984
- package/src/services/oauthService.ts +0 -412
- package/src/services/platformAuthService.ts +0 -1113
- package/src/types/ambient.d.ts +0 -29
- package/src/types/declarations.d.ts +0 -26
- package/src/types/index.d.ts +0 -274
- package/src/types/index.ts +0 -244
- package/src/types/node-fix.d.ts +0 -19
- package/src/types/node-override.d.ts +0 -24
- package/src/types/opacity.d.ts +0 -16
- package/src/types/types.d.ts +0 -18
- package/src/types.ts +0 -298
- package/src/utils/Portal.tsx +0 -83
- package/src/utils/api.js +0 -112
- package/src/utils/auth.js +0 -104
- package/src/utils/crypto.js +0 -60
- package/src/utils/debugHelper.ts +0 -53
- package/src/utils/encryption.ts +0 -69
- package/src/utils/onairosApi.ts +0 -391
- package/src/utils/programmaticFlow.ts +0 -113
- package/src/utils/retryHelper.ts +0 -275
- package/src/utils/secureStorage.ts +0 -361
- package/types/index.d.ts +0 -218
- package/types/node-env.d.ts +0 -15
- /package/{src/assets/images โ lib/commonjs/assets/icons}/farcaster.png +0 -0
- /package/{src/assets/images โ lib/commonjs/assets/icons}/instagram.png +0 -0
- /package/{src/assets/images โ lib/commonjs/assets/icons}/pinterest.png +0 -0
- /package/{src/assets/images โ lib/commonjs/assets/icons}/swerv_logo.png +0 -0
- /package/{src/assets/images โ lib/commonjs/assets/icons}/twitter.jpg +0 -0
|
@@ -1,1041 +1 @@
|
|
|
1
|
-
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
2
|
-
import { makeDeveloperRequest, getApiConfig, storeJWT, extractUsernameFromJWT } from './apiKeyService';
|
|
3
|
-
|
|
4
|
-
// ๐ CRITICAL: Use two-tier authentication system
|
|
5
|
-
// - Developer API key for email verification requests
|
|
6
|
-
// - JWT tokens for user-authenticated requests after email verification
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Initialize the platform auth service
|
|
10
|
-
* This service now uses the two-tier authentication system
|
|
11
|
-
*/
|
|
12
|
-
export const initializePlatformAuthService = async () => {
|
|
13
|
-
try {
|
|
14
|
-
// Check if app is already initialized with API key
|
|
15
|
-
const existingConfig = getApiConfig();
|
|
16
|
-
if (existingConfig && existingConfig.apiKey) {
|
|
17
|
-
console.log('๐ Platform auth service using existing app configuration');
|
|
18
|
-
console.log(`โ
Environment: ${existingConfig.environment}`);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// If no app initialization, we can't proceed
|
|
23
|
-
console.error('โ Platform auth service requires app-level API key initialization');
|
|
24
|
-
throw new Error('Platform auth service requires app-level API key initialization. Please call initializeApiKey() first.');
|
|
25
|
-
} catch (error) {
|
|
26
|
-
console.error('โ Failed to initialize platform auth service:', error);
|
|
27
|
-
throw error;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
// Configuration for each platform's authentication
|
|
32
|
-
let PLATFORM_AUTH_CONFIG = {
|
|
33
|
-
instagram: {
|
|
34
|
-
hasNativeSDK: false,
|
|
35
|
-
// Instagram uses OAuth WebView flow
|
|
36
|
-
authEndpoint: '/instagram/authorize',
|
|
37
|
-
color: '#E1306C'
|
|
38
|
-
},
|
|
39
|
-
youtube: {
|
|
40
|
-
hasNativeSDK: true,
|
|
41
|
-
// Native Google Sign-In SDK enabled
|
|
42
|
-
nativeSDKPackage: '@react-native-google-signin/google-signin',
|
|
43
|
-
authEndpoint: '/youtube/authorize',
|
|
44
|
-
color: '#FF0000',
|
|
45
|
-
clientId: '1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com',
|
|
46
|
-
redirectUri: 'onairosevents://auth/callback',
|
|
47
|
-
scope: 'https://www.googleapis.com/auth/youtube.readonly',
|
|
48
|
-
responseType: 'code'
|
|
49
|
-
},
|
|
50
|
-
reddit: {
|
|
51
|
-
hasNativeSDK: false,
|
|
52
|
-
authEndpoint: '/reddit/authorize',
|
|
53
|
-
color: '#FF4500'
|
|
54
|
-
},
|
|
55
|
-
pinterest: {
|
|
56
|
-
hasNativeSDK: false,
|
|
57
|
-
authEndpoint: '/pinterest/authorize',
|
|
58
|
-
color: '#E60023'
|
|
59
|
-
},
|
|
60
|
-
email: {
|
|
61
|
-
hasNativeSDK: false,
|
|
62
|
-
authEndpoint: '/gmail/authorize',
|
|
63
|
-
color: '#4285F4'
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Checks if a native SDK is available for the given platform
|
|
69
|
-
*/
|
|
70
|
-
export const hasNativeSDK = platform => {
|
|
71
|
-
const config = PLATFORM_AUTH_CONFIG[platform];
|
|
72
|
-
return (config === null || config === void 0 ? void 0 : config.hasNativeSDK) || false;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Gets the auth endpoint URL for a platform
|
|
77
|
-
*/
|
|
78
|
-
export const getAuthEndpoint = platform => {
|
|
79
|
-
const config = PLATFORM_AUTH_CONFIG[platform];
|
|
80
|
-
return (config === null || config === void 0 ? void 0 : config.authEndpoint) || '';
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Gets the color associated with a platform
|
|
85
|
-
*/
|
|
86
|
-
export const getPlatformColor = platform => {
|
|
87
|
-
const config = PLATFORM_AUTH_CONFIG[platform];
|
|
88
|
-
return (config === null || config === void 0 ? void 0 : config.color) || '#000000';
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Initiates the OAuth flow for a platform
|
|
93
|
-
* @param platform The platform to authenticate with
|
|
94
|
-
* @param username The username to associate with the authentication
|
|
95
|
-
* @param appName The app name to use for the OAuth session (optional)
|
|
96
|
-
* @returns A Promise that resolves to the OAuth URL to open in a WebView or null if using native SDK
|
|
97
|
-
*/
|
|
98
|
-
export const initiateOAuth = async (platform, username, appName) => {
|
|
99
|
-
try {
|
|
100
|
-
console.log('๐ Initiating OAuth for platform:', platform);
|
|
101
|
-
console.log('๐ค Username:', username);
|
|
102
|
-
console.log('๐ฑ App name:', appName);
|
|
103
|
-
|
|
104
|
-
// Check if the platform is supported
|
|
105
|
-
if (!PLATFORM_AUTH_CONFIG[platform]) {
|
|
106
|
-
console.error('โ Unsupported platform:', platform);
|
|
107
|
-
throw new Error(`Unsupported platform: ${platform}`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Check if platform has a native SDK
|
|
111
|
-
if (PLATFORM_AUTH_CONFIG[platform].hasNativeSDK) {
|
|
112
|
-
console.log('๐ฑ Platform uses native SDK, returning null');
|
|
113
|
-
// Return null to indicate that we should use the native SDK
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
console.log('๐ Platform uses OAuth WebView flow');
|
|
117
|
-
console.log('๐ Auth endpoint:', PLATFORM_AUTH_CONFIG[platform].authEndpoint);
|
|
118
|
-
|
|
119
|
-
// Pre-flight connectivity check
|
|
120
|
-
console.log('๐ Performing pre-flight connectivity check...');
|
|
121
|
-
const connectivityResult = await testApiConnectivity();
|
|
122
|
-
if (!connectivityResult.success) {
|
|
123
|
-
console.error('โ Pre-flight connectivity check failed:', connectivityResult.error);
|
|
124
|
-
throw new Error(`Cannot reach authentication server: ${connectivityResult.error}`);
|
|
125
|
-
}
|
|
126
|
-
console.log('โ
Pre-flight connectivity check passed');
|
|
127
|
-
|
|
128
|
-
// Handle Instagram with specific API format
|
|
129
|
-
if (platform === 'instagram') {
|
|
130
|
-
const state = 'djksbfds';
|
|
131
|
-
const jsonData = {
|
|
132
|
-
session: {
|
|
133
|
-
oauthState: state,
|
|
134
|
-
username: username || 'Avatar'
|
|
135
|
-
}
|
|
136
|
-
};
|
|
137
|
-
console.log('๐ค Sending Instagram OAuth request:', jsonData);
|
|
138
|
-
const response = await makeDeveloperRequest(PLATFORM_AUTH_CONFIG[platform].authEndpoint, {
|
|
139
|
-
method: 'POST',
|
|
140
|
-
body: JSON.stringify(jsonData)
|
|
141
|
-
});
|
|
142
|
-
console.log('๐ก Instagram OAuth response status:', response.status);
|
|
143
|
-
if (!response.ok) {
|
|
144
|
-
const errorText = await response.text();
|
|
145
|
-
console.error('โ Instagram OAuth API error:', errorText);
|
|
146
|
-
throw new Error(`Instagram OAuth API error: ${response.status} - ${errorText}`);
|
|
147
|
-
}
|
|
148
|
-
const responseData = await response.json();
|
|
149
|
-
console.log('๐ฅ Instagram OAuth response data:', responseData);
|
|
150
|
-
if (responseData.instagramURL) {
|
|
151
|
-
console.log('โ
Instagram OAuth URL received:', responseData.instagramURL);
|
|
152
|
-
|
|
153
|
-
// Validate the URL before returning
|
|
154
|
-
if (await validateOAuthUrl(responseData.instagramURL)) {
|
|
155
|
-
return responseData.instagramURL;
|
|
156
|
-
} else {
|
|
157
|
-
throw new Error('Received invalid Instagram OAuth URL');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
console.error('โ No Instagram URL found in response');
|
|
161
|
-
throw new Error('No Instagram URL found in response');
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// Prepare the request body for other platforms
|
|
165
|
-
const jsonData = {
|
|
166
|
-
session: {
|
|
167
|
-
oauthState: 'djksbfds',
|
|
168
|
-
// Use same state for all platforms
|
|
169
|
-
username: username || 'Avatar',
|
|
170
|
-
appName: appName || 'DefaultApp'
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
console.log(`๐ค Sending ${platform} OAuth request:`, jsonData);
|
|
174
|
-
|
|
175
|
-
// Make the authenticated request to get the OAuth URL
|
|
176
|
-
const response = await makeDeveloperRequest(PLATFORM_AUTH_CONFIG[platform].authEndpoint, {
|
|
177
|
-
method: 'POST',
|
|
178
|
-
body: JSON.stringify(jsonData)
|
|
179
|
-
});
|
|
180
|
-
console.log(`๐ก ${platform} OAuth response status:`, response.status);
|
|
181
|
-
if (!response.ok) {
|
|
182
|
-
const errorText = await response.text();
|
|
183
|
-
console.error(`โ ${platform} OAuth API error:`, errorText);
|
|
184
|
-
throw new Error(`${platform} OAuth API error: ${response.status} - ${errorText}`);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Parse the response
|
|
188
|
-
const data = await response.json();
|
|
189
|
-
console.log(`๐ฅ ${platform} OAuth response data:`, data);
|
|
190
|
-
|
|
191
|
-
// Extra logging for Gmail to help debug
|
|
192
|
-
if (platform === 'email') {
|
|
193
|
-
console.log('๐ Gmail OAuth response keys:', Object.keys(data));
|
|
194
|
-
console.log('๐ Gmail OAuth full response:', JSON.stringify(data, null, 2));
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Check if the response contains the OAuth URL based on platform
|
|
198
|
-
let oauthUrl = null;
|
|
199
|
-
switch (platform) {
|
|
200
|
-
case 'reddit':
|
|
201
|
-
oauthUrl = data.redditURL;
|
|
202
|
-
break;
|
|
203
|
-
case 'pinterest':
|
|
204
|
-
oauthUrl = data.pinterestURL;
|
|
205
|
-
break;
|
|
206
|
-
case 'youtube':
|
|
207
|
-
oauthUrl = data.youtubeURL;
|
|
208
|
-
break;
|
|
209
|
-
case 'email':
|
|
210
|
-
// Gmail might return under different field names
|
|
211
|
-
oauthUrl = data.emailURL || data.gmailURL || data.authUrl || data.url;
|
|
212
|
-
break;
|
|
213
|
-
default:
|
|
214
|
-
oauthUrl = data.url;
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
if (!oauthUrl) {
|
|
218
|
-
console.error(`โ No OAuth URL found in response for ${platform}. Response:`, data);
|
|
219
|
-
throw new Error(`No OAuth URL found in response for ${platform}`);
|
|
220
|
-
}
|
|
221
|
-
console.log(`โ
${platform} OAuth URL received:`, oauthUrl);
|
|
222
|
-
|
|
223
|
-
// Validate the URL before returning
|
|
224
|
-
if (await validateOAuthUrl(oauthUrl)) {
|
|
225
|
-
return oauthUrl;
|
|
226
|
-
} else {
|
|
227
|
-
throw new Error(`Received invalid ${platform} OAuth URL`);
|
|
228
|
-
}
|
|
229
|
-
} catch (error) {
|
|
230
|
-
console.error(`Error initiating OAuth for ${platform}:`, error);
|
|
231
|
-
throw error;
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Validates an OAuth URL to ensure it's reachable
|
|
237
|
-
* @param url The OAuth URL to validate
|
|
238
|
-
* @returns Promise<boolean> indicating if the URL is valid and reachable
|
|
239
|
-
*/
|
|
240
|
-
const validateOAuthUrl = async url => {
|
|
241
|
-
try {
|
|
242
|
-
console.log('๐ Validating OAuth URL:', url);
|
|
243
|
-
|
|
244
|
-
// Basic URL format validation
|
|
245
|
-
if (!url || typeof url !== 'string') {
|
|
246
|
-
console.error('โ Invalid URL format:', url);
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// Check if URL starts with https
|
|
251
|
-
if (!url.startsWith('https://')) {
|
|
252
|
-
console.error('โ URL must use HTTPS:', url);
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Try to parse the URL
|
|
257
|
-
try {
|
|
258
|
-
new URL(url);
|
|
259
|
-
} catch (parseError) {
|
|
260
|
-
console.error('โ URL parsing failed:', parseError);
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// Make a HEAD request to check if the URL is reachable
|
|
265
|
-
const controller = new AbortController();
|
|
266
|
-
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
|
|
267
|
-
|
|
268
|
-
try {
|
|
269
|
-
const response = await fetch(url, {
|
|
270
|
-
method: 'HEAD',
|
|
271
|
-
signal: controller.signal
|
|
272
|
-
});
|
|
273
|
-
clearTimeout(timeoutId);
|
|
274
|
-
|
|
275
|
-
// Accept any response that's not a network error
|
|
276
|
-
// OAuth pages might return various status codes
|
|
277
|
-
console.log('โ
OAuth URL validation successful, status:', response.status);
|
|
278
|
-
return true;
|
|
279
|
-
} catch (fetchError) {
|
|
280
|
-
clearTimeout(timeoutId);
|
|
281
|
-
if (fetchError.name === 'AbortError') {
|
|
282
|
-
console.warn('โ ๏ธ OAuth URL validation timeout, but proceeding anyway');
|
|
283
|
-
return true; // Allow timeout as URLs might be slow to respond
|
|
284
|
-
}
|
|
285
|
-
console.warn('โ ๏ธ OAuth URL validation failed, but proceeding anyway:', fetchError.message);
|
|
286
|
-
return true; // Allow network errors as they might be temporary
|
|
287
|
-
}
|
|
288
|
-
} catch (error) {
|
|
289
|
-
console.warn('โ ๏ธ OAuth URL validation error, but proceeding anyway:', error);
|
|
290
|
-
return true; // Allow validation errors to not block the flow
|
|
291
|
-
}
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Initiates the native SDK authentication flow for a platform
|
|
296
|
-
* @param platform The platform to authenticate with
|
|
297
|
-
* @returns A Promise that resolves to the authentication result
|
|
298
|
-
*/
|
|
299
|
-
export const initiateNativeAuth = async (platform, username) => {
|
|
300
|
-
if (platform === 'youtube') {
|
|
301
|
-
console.log('๐ Initiating native Google Sign-In for YouTube');
|
|
302
|
-
try {
|
|
303
|
-
var _currentUser$user, _userInfo$user4, _userInfo$user6, _userInfo$user7, _userInfo$user8;
|
|
304
|
-
// Check if Google Sign-In package is available
|
|
305
|
-
let GoogleSignin, statusCodes;
|
|
306
|
-
try {
|
|
307
|
-
const googleSignInModule = require('@react-native-google-signin/google-signin');
|
|
308
|
-
GoogleSignin = googleSignInModule.GoogleSignin;
|
|
309
|
-
statusCodes = googleSignInModule.statusCodes;
|
|
310
|
-
} catch (importError) {
|
|
311
|
-
console.error('โ Google Sign-In package not available:', importError);
|
|
312
|
-
throw new Error('Google Sign-In SDK not installed. Please install @react-native-google-signin/google-signin');
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// Configure Google Sign-In with better error handling
|
|
316
|
-
try {
|
|
317
|
-
const youtubeConfig = PLATFORM_AUTH_CONFIG.youtube;
|
|
318
|
-
const webClientId = youtubeConfig.clientId || '1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com';
|
|
319
|
-
const iosClientId = youtubeConfig.iosClientId || webClientId;
|
|
320
|
-
await GoogleSignin.configure({
|
|
321
|
-
webClientId: webClientId,
|
|
322
|
-
iosClientId: iosClientId,
|
|
323
|
-
scopes: ['https://www.googleapis.com/auth/youtube.readonly'],
|
|
324
|
-
offlineAccess: true,
|
|
325
|
-
hostedDomain: '',
|
|
326
|
-
forceCodeForRefreshToken: true,
|
|
327
|
-
accountName: ''
|
|
328
|
-
});
|
|
329
|
-
console.log('โ
Google Sign-In configured successfully with client ID:', webClientId.substring(0, 20) + '...');
|
|
330
|
-
} catch (configError) {
|
|
331
|
-
console.error('โ Google Sign-In configuration failed:', configError);
|
|
332
|
-
throw new Error(`Google Sign-In configuration failed: ${configError.message || configError}`);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Check if Google Play Services are available (Android only)
|
|
336
|
-
try {
|
|
337
|
-
await GoogleSignin.hasPlayServices({
|
|
338
|
-
showPlayServicesUpdateDialog: true
|
|
339
|
-
});
|
|
340
|
-
console.log('โ
Google Play Services available');
|
|
341
|
-
} catch (playServicesError) {
|
|
342
|
-
console.error('โ Google Play Services error:', playServicesError);
|
|
343
|
-
throw new Error(`Google Play Services not available: ${playServicesError.message || playServicesError}`);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// Sign in with Google
|
|
347
|
-
let userInfo;
|
|
348
|
-
try {
|
|
349
|
-
var _userInfo$user;
|
|
350
|
-
userInfo = await GoogleSignin.signIn();
|
|
351
|
-
console.log('โ
Google Sign-In successful:', (_userInfo$user = userInfo.user) === null || _userInfo$user === void 0 ? void 0 : _userInfo$user.email);
|
|
352
|
-
} catch (signInError) {
|
|
353
|
-
console.error('โ Google Sign-In failed:', signInError);
|
|
354
|
-
|
|
355
|
-
// Handle specific error codes
|
|
356
|
-
if (signInError.code === statusCodes.SIGN_IN_CANCELLED) {
|
|
357
|
-
throw new Error('Google Sign-In was cancelled by user');
|
|
358
|
-
} else if (signInError.code === statusCodes.IN_PROGRESS) {
|
|
359
|
-
throw new Error('Google Sign-In already in progress');
|
|
360
|
-
} else if (signInError.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
|
|
361
|
-
throw new Error('Google Play Services not available or outdated');
|
|
362
|
-
} else {
|
|
363
|
-
throw new Error(`Google Sign-In failed: ${signInError.message || signInError}`);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// Get access token for API calls
|
|
368
|
-
const tokens = await GoogleSignin.getTokens();
|
|
369
|
-
console.log('๐ Got Google tokens');
|
|
370
|
-
|
|
371
|
-
// Get current user info with refresh token
|
|
372
|
-
const currentUser = await GoogleSignin.getCurrentUser();
|
|
373
|
-
console.log('๐ค Current user info:', currentUser === null || currentUser === void 0 || (_currentUser$user = currentUser.user) === null || _currentUser$user === void 0 ? void 0 : _currentUser$user.email);
|
|
374
|
-
|
|
375
|
-
// Extract refresh token from server auth code
|
|
376
|
-
let refreshToken = null;
|
|
377
|
-
if (currentUser !== null && currentUser !== void 0 && currentUser.serverAuthCode) {
|
|
378
|
-
console.log('๐ Server auth code available for refresh token');
|
|
379
|
-
refreshToken = currentUser.serverAuthCode;
|
|
380
|
-
}
|
|
381
|
-
if (!refreshToken) {
|
|
382
|
-
console.warn('โ ๏ธ No refresh token available - token refresh may fail later');
|
|
383
|
-
} else {
|
|
384
|
-
console.log('โ
Refresh token available for YouTube connection');
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
// Fetch YouTube channel information
|
|
388
|
-
let channelName = 'Unknown Channel';
|
|
389
|
-
let channelId = null;
|
|
390
|
-
try {
|
|
391
|
-
console.log('๐บ Fetching YouTube channel information...');
|
|
392
|
-
const channelResponse = await fetch('https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true', {
|
|
393
|
-
headers: {
|
|
394
|
-
'Authorization': `Bearer ${tokens.accessToken}`,
|
|
395
|
-
'Accept': 'application/json'
|
|
396
|
-
}
|
|
397
|
-
});
|
|
398
|
-
if (channelResponse.ok) {
|
|
399
|
-
const channelData = await channelResponse.json();
|
|
400
|
-
if (channelData.items && channelData.items.length > 0) {
|
|
401
|
-
channelName = channelData.items[0].snippet.title;
|
|
402
|
-
channelId = channelData.items[0].id;
|
|
403
|
-
console.log('โ
YouTube channel found:', channelName);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
} catch (channelError) {
|
|
407
|
-
var _userInfo$user2, _userInfo$user3;
|
|
408
|
-
console.log('โ ๏ธ Error fetching YouTube channel info:', channelError);
|
|
409
|
-
channelName = ((_userInfo$user2 = userInfo.user) === null || _userInfo$user2 === void 0 ? void 0 : _userInfo$user2.name) || ((_userInfo$user3 = userInfo.user) === null || _userInfo$user3 === void 0 ? void 0 : _userInfo$user3.email) || 'Unknown Channel';
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
// Get authentication info
|
|
413
|
-
let authToken = (await AsyncStorage.getItem('onairos_jwt_token')) || (await AsyncStorage.getItem('enoch_token')) || (await AsyncStorage.getItem('auth_token'));
|
|
414
|
-
const storedUsername = await AsyncStorage.getItem('onairos_username');
|
|
415
|
-
const finalUsername = storedUsername || username || ((_userInfo$user4 = userInfo.user) === null || _userInfo$user4 === void 0 ? void 0 : _userInfo$user4.email) || 'youtube_user';
|
|
416
|
-
|
|
417
|
-
// Create auth token if needed
|
|
418
|
-
if (!authToken || authToken.trim().length < 20) {
|
|
419
|
-
console.log('๐ Creating authentication token for YouTube...');
|
|
420
|
-
try {
|
|
421
|
-
var _userInfo$user5;
|
|
422
|
-
const fallbackEmail = ((_userInfo$user5 = userInfo.user) === null || _userInfo$user5 === void 0 ? void 0 : _userInfo$user5.email) || `${finalUsername}@youtube.temp`;
|
|
423
|
-
|
|
424
|
-
// Create user accounts and get JWT token
|
|
425
|
-
const onairosSignupResponse = await fetch('https://api2.onairos.uk/register/enoch', {
|
|
426
|
-
method: 'POST',
|
|
427
|
-
headers: {
|
|
428
|
-
'Content-Type': 'application/json'
|
|
429
|
-
},
|
|
430
|
-
body: JSON.stringify({
|
|
431
|
-
email: fallbackEmail,
|
|
432
|
-
username: finalUsername,
|
|
433
|
-
name: finalUsername
|
|
434
|
-
})
|
|
435
|
-
});
|
|
436
|
-
if (onairosSignupResponse.ok) {
|
|
437
|
-
var _onairosResponseData$;
|
|
438
|
-
const onairosResponseData = await onairosSignupResponse.json();
|
|
439
|
-
|
|
440
|
-
// Extract token from response
|
|
441
|
-
authToken = onairosResponseData.token || ((_onairosResponseData$ = onairosResponseData.data) === null || _onairosResponseData$ === void 0 ? void 0 : _onairosResponseData$.token) || onairosResponseData.jwt;
|
|
442
|
-
if (authToken) {
|
|
443
|
-
// Store tokens
|
|
444
|
-
await AsyncStorage.setItem('onairos_jwt_token', authToken);
|
|
445
|
-
await AsyncStorage.setItem('enoch_token', authToken);
|
|
446
|
-
await AsyncStorage.setItem('auth_token', authToken);
|
|
447
|
-
await AsyncStorage.setItem('onairos_username', onairosResponseData.username || finalUsername);
|
|
448
|
-
console.log('โ
Successfully created and stored authentication token');
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
} catch (tokenError) {
|
|
452
|
-
console.warn('โ ๏ธ Error creating auth token:', tokenError);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
console.log('๐ Linking YouTube data to user:', finalUsername);
|
|
456
|
-
console.log('๐บ YouTube channel name:', channelName);
|
|
457
|
-
|
|
458
|
-
// Send tokens to backend for YouTube data processing
|
|
459
|
-
const backendResponse = await fetch('https://api2.onairos.uk/youtube/native-auth', {
|
|
460
|
-
method: 'POST',
|
|
461
|
-
headers: {
|
|
462
|
-
'Content-Type': 'application/json',
|
|
463
|
-
...(authToken && {
|
|
464
|
-
'Authorization': `Bearer ${authToken}`
|
|
465
|
-
})
|
|
466
|
-
},
|
|
467
|
-
body: JSON.stringify({
|
|
468
|
-
session: {
|
|
469
|
-
username: finalUsername,
|
|
470
|
-
platform: 'youtube',
|
|
471
|
-
timestamp: new Date().toISOString(),
|
|
472
|
-
channelName: channelName,
|
|
473
|
-
channelId: channelId
|
|
474
|
-
},
|
|
475
|
-
googleUser: userInfo.user,
|
|
476
|
-
accessToken: tokens.accessToken,
|
|
477
|
-
idToken: tokens.idToken,
|
|
478
|
-
refreshToken: refreshToken,
|
|
479
|
-
// CRITICAL: Include refresh token
|
|
480
|
-
serverAuthCode: currentUser === null || currentUser === void 0 ? void 0 : currentUser.serverAuthCode,
|
|
481
|
-
userAccountInfo: {
|
|
482
|
-
username: finalUsername,
|
|
483
|
-
email: (_userInfo$user6 = userInfo.user) === null || _userInfo$user6 === void 0 ? void 0 : _userInfo$user6.email,
|
|
484
|
-
authToken: authToken,
|
|
485
|
-
channelName: channelName,
|
|
486
|
-
channelId: channelId,
|
|
487
|
-
userIdentifier: authToken ? `user-${authToken.substring(0, 10)}` : `youtube-${(_userInfo$user7 = userInfo.user) === null || _userInfo$user7 === void 0 ? void 0 : _userInfo$user7.email}`,
|
|
488
|
-
googleId: (_userInfo$user8 = userInfo.user) === null || _userInfo$user8 === void 0 ? void 0 : _userInfo$user8.id
|
|
489
|
-
},
|
|
490
|
-
tokenExpiry: new Date(Date.now() + 3600 * 1000).toISOString(),
|
|
491
|
-
// 1 hour from now
|
|
492
|
-
requestRefreshToken: true
|
|
493
|
-
})
|
|
494
|
-
});
|
|
495
|
-
if (backendResponse.ok) {
|
|
496
|
-
const responseData = await backendResponse.json();
|
|
497
|
-
console.log('โ
YouTube connection processed by backend:', responseData);
|
|
498
|
-
return true;
|
|
499
|
-
} else {
|
|
500
|
-
const errorData = await backendResponse.text();
|
|
501
|
-
console.error('โ Backend processing failed:', backendResponse.status, errorData);
|
|
502
|
-
return false;
|
|
503
|
-
}
|
|
504
|
-
} catch (error) {
|
|
505
|
-
console.error('โ Google Sign-In error:', error);
|
|
506
|
-
const {
|
|
507
|
-
statusCodes: StatusCodes
|
|
508
|
-
} = require('@react-native-google-signin/google-signin');
|
|
509
|
-
if (error.code === StatusCodes.SIGN_IN_CANCELLED) {
|
|
510
|
-
console.log('User cancelled Google Sign-In');
|
|
511
|
-
} else if (error.code === StatusCodes.IN_PROGRESS) {
|
|
512
|
-
console.log('Google Sign-In already in progress');
|
|
513
|
-
} else if (error.code === StatusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
|
|
514
|
-
console.log('Google Play Services not available');
|
|
515
|
-
}
|
|
516
|
-
return false;
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
return false;
|
|
520
|
-
};
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
* Handles the OAuth callback
|
|
524
|
-
* @param url The callback URL
|
|
525
|
-
* @returns The authorization code extracted from the URL
|
|
526
|
-
*/
|
|
527
|
-
export const handleOAuthCallback = url => {
|
|
528
|
-
try {
|
|
529
|
-
// Parse the URL
|
|
530
|
-
const parsedUrl = new URL(url);
|
|
531
|
-
|
|
532
|
-
// Extract the authorization code
|
|
533
|
-
return parsedUrl.searchParams.get('code');
|
|
534
|
-
} catch (error) {
|
|
535
|
-
console.error('Error handling OAuth callback:', error);
|
|
536
|
-
return null;
|
|
537
|
-
}
|
|
538
|
-
};
|
|
539
|
-
|
|
540
|
-
/**
|
|
541
|
-
* Checks if a URL is an OAuth callback
|
|
542
|
-
* @param url The URL to check
|
|
543
|
-
* @returns True if the URL is an OAuth callback
|
|
544
|
-
*/
|
|
545
|
-
export const isOAuthCallback = url => {
|
|
546
|
-
// Check if the URL starts with our redirect URI
|
|
547
|
-
return url.startsWith('onairosanime://auth/');
|
|
548
|
-
};
|
|
549
|
-
|
|
550
|
-
/**
|
|
551
|
-
* Test connectivity to the Onairos API server
|
|
552
|
-
*/
|
|
553
|
-
export const testApiConnectivity = async () => {
|
|
554
|
-
try {
|
|
555
|
-
console.log('๐ Testing connectivity to Onairos API...');
|
|
556
|
-
|
|
557
|
-
// Test multiple endpoints for better reliability
|
|
558
|
-
const testEndpoints = ['https://api2.onairos.uk/health', 'https://api2.onairos.uk' // Base URL
|
|
559
|
-
];
|
|
560
|
-
let lastError = null;
|
|
561
|
-
for (const endpoint of testEndpoints) {
|
|
562
|
-
try {
|
|
563
|
-
console.log(`๐ Testing endpoint: ${endpoint}`);
|
|
564
|
-
const controller = new AbortController();
|
|
565
|
-
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10 second timeout
|
|
566
|
-
|
|
567
|
-
const response = await fetch(endpoint, {
|
|
568
|
-
method: 'GET',
|
|
569
|
-
headers: {
|
|
570
|
-
'Content-Type': 'application/json',
|
|
571
|
-
'User-Agent': 'OnairosReactNative/1.0'
|
|
572
|
-
},
|
|
573
|
-
signal: controller.signal
|
|
574
|
-
});
|
|
575
|
-
clearTimeout(timeoutId);
|
|
576
|
-
console.log(`๐ API connectivity test response for ${endpoint}:`, response.status);
|
|
577
|
-
if (response.ok || response.status === 404) {
|
|
578
|
-
// Accept 404 as it means the server is reachable
|
|
579
|
-
console.log('โ
API server is reachable');
|
|
580
|
-
return {
|
|
581
|
-
success: true
|
|
582
|
-
};
|
|
583
|
-
} else {
|
|
584
|
-
console.log(`โ ๏ธ API server responded with status ${response.status} for ${endpoint}`);
|
|
585
|
-
lastError = `API server error: ${response.status}`;
|
|
586
|
-
// Continue to next endpoint
|
|
587
|
-
}
|
|
588
|
-
} catch (fetchError) {
|
|
589
|
-
console.log(`โ Failed to reach ${endpoint}:`, fetchError);
|
|
590
|
-
if (fetchError.name === 'AbortError') {
|
|
591
|
-
lastError = 'Connection timeout - API server took too long to respond';
|
|
592
|
-
} else if (fetchError.message.includes('Network request failed')) {
|
|
593
|
-
lastError = 'Network error - check your internet connection';
|
|
594
|
-
} else if (fetchError.message.includes('not connected to the internet')) {
|
|
595
|
-
lastError = 'No internet connection';
|
|
596
|
-
} else {
|
|
597
|
-
lastError = `Network error: ${fetchError.message}`;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// Continue to next endpoint
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
console.error('โ All API connectivity tests failed');
|
|
604
|
-
return {
|
|
605
|
-
success: false,
|
|
606
|
-
error: lastError || 'Cannot reach API server'
|
|
607
|
-
};
|
|
608
|
-
} catch (error) {
|
|
609
|
-
console.error('โ API connectivity test failed:', error);
|
|
610
|
-
return {
|
|
611
|
-
success: false,
|
|
612
|
-
error: error instanceof Error ? error.message : 'Unknown error'
|
|
613
|
-
};
|
|
614
|
-
}
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
/**
|
|
618
|
-
* ๐ REFRESH GOOGLE TOKENS
|
|
619
|
-
*/
|
|
620
|
-
export const refreshGoogleTokens = async () => {
|
|
621
|
-
try {
|
|
622
|
-
console.log('๐ Attempting to refresh Google tokens...');
|
|
623
|
-
const {
|
|
624
|
-
GoogleSignin
|
|
625
|
-
} = require('@react-native-google-signin/google-signin');
|
|
626
|
-
const currentUser = await GoogleSignin.getCurrentUser();
|
|
627
|
-
if (!currentUser) {
|
|
628
|
-
console.log('โ User not signed in to Google, cannot refresh tokens');
|
|
629
|
-
return null;
|
|
630
|
-
}
|
|
631
|
-
const tokens = await GoogleSignin.getTokens();
|
|
632
|
-
console.log('โ
Successfully refreshed Google tokens');
|
|
633
|
-
return {
|
|
634
|
-
accessToken: tokens.accessToken,
|
|
635
|
-
idToken: tokens.idToken
|
|
636
|
-
};
|
|
637
|
-
} catch (error) {
|
|
638
|
-
console.error('โ Failed to refresh Google tokens:', error);
|
|
639
|
-
|
|
640
|
-
// If refresh fails, try to sign in again
|
|
641
|
-
try {
|
|
642
|
-
console.log('๐ Refresh failed, attempting re-authentication...');
|
|
643
|
-
const {
|
|
644
|
-
GoogleSignin
|
|
645
|
-
} = require('@react-native-google-signin/google-signin');
|
|
646
|
-
const userInfo = await GoogleSignin.signIn();
|
|
647
|
-
const tokens = await GoogleSignin.getTokens();
|
|
648
|
-
console.log('โ
Re-authentication successful');
|
|
649
|
-
return {
|
|
650
|
-
accessToken: tokens.accessToken,
|
|
651
|
-
idToken: tokens.idToken
|
|
652
|
-
};
|
|
653
|
-
} catch (signInError) {
|
|
654
|
-
console.error('โ Re-authentication also failed:', signInError);
|
|
655
|
-
return null;
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
};
|
|
659
|
-
|
|
660
|
-
/**
|
|
661
|
-
* ๐ REFRESH YOUTUBE TOKENS
|
|
662
|
-
*/
|
|
663
|
-
export const refreshYouTubeTokens = async () => {
|
|
664
|
-
try {
|
|
665
|
-
var _currentUser$user2;
|
|
666
|
-
console.log('๐ Refreshing YouTube tokens...');
|
|
667
|
-
|
|
668
|
-
// Get fresh tokens from Google SDK
|
|
669
|
-
const freshTokens = await refreshGoogleTokens();
|
|
670
|
-
if (!freshTokens) {
|
|
671
|
-
console.error('โ Failed to get fresh tokens from Google SDK');
|
|
672
|
-
return false;
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
// Get current user info
|
|
676
|
-
const {
|
|
677
|
-
GoogleSignin
|
|
678
|
-
} = require('@react-native-google-signin/google-signin');
|
|
679
|
-
const currentUser = await GoogleSignin.getCurrentUser();
|
|
680
|
-
if (!currentUser) {
|
|
681
|
-
console.error('โ No current Google user found');
|
|
682
|
-
return false;
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
// Get stored auth token
|
|
686
|
-
const authToken = (await AsyncStorage.getItem('onairos_jwt_token')) || (await AsyncStorage.getItem('enoch_token')) || (await AsyncStorage.getItem('auth_token'));
|
|
687
|
-
if (!authToken) {
|
|
688
|
-
console.error('โ No auth token found for YouTube refresh');
|
|
689
|
-
return false;
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
// Send refreshed tokens to backend
|
|
693
|
-
const refreshResponse = await fetch('https://api2.onairos.uk/youtube/refresh-token', {
|
|
694
|
-
method: 'POST',
|
|
695
|
-
headers: {
|
|
696
|
-
'Content-Type': 'application/json',
|
|
697
|
-
'Authorization': `Bearer ${authToken}`
|
|
698
|
-
},
|
|
699
|
-
body: JSON.stringify({
|
|
700
|
-
accessToken: freshTokens.accessToken,
|
|
701
|
-
idToken: freshTokens.idToken,
|
|
702
|
-
refreshToken: currentUser.serverAuthCode,
|
|
703
|
-
userEmail: (_currentUser$user2 = currentUser.user) === null || _currentUser$user2 === void 0 ? void 0 : _currentUser$user2.email,
|
|
704
|
-
tokenExpiry: new Date(Date.now() + 3600 * 1000).toISOString(),
|
|
705
|
-
timestamp: new Date().toISOString()
|
|
706
|
-
})
|
|
707
|
-
});
|
|
708
|
-
if (refreshResponse.ok) {
|
|
709
|
-
const responseData = await refreshResponse.json();
|
|
710
|
-
console.log('โ
YouTube tokens refreshed successfully:', responseData);
|
|
711
|
-
return true;
|
|
712
|
-
} else {
|
|
713
|
-
const errorData = await refreshResponse.text();
|
|
714
|
-
console.error('โ YouTube token refresh failed:', refreshResponse.status, errorData);
|
|
715
|
-
return false;
|
|
716
|
-
}
|
|
717
|
-
} catch (error) {
|
|
718
|
-
console.error('โ Error refreshing YouTube tokens:', error);
|
|
719
|
-
return false;
|
|
720
|
-
}
|
|
721
|
-
};
|
|
722
|
-
|
|
723
|
-
/**
|
|
724
|
-
* ๐ฏ ENHANCED OAUTH CALLBACK HANDLER
|
|
725
|
-
*/
|
|
726
|
-
export const handleOAuthCallbackUrl = url => {
|
|
727
|
-
try {
|
|
728
|
-
console.log('๐ Processing OAuth callback URL:', url);
|
|
729
|
-
|
|
730
|
-
// Parse the URL
|
|
731
|
-
const parsedUrl = new URL(url);
|
|
732
|
-
|
|
733
|
-
// Extract platform and code
|
|
734
|
-
const platform = parsedUrl.searchParams.get('platform') || parsedUrl.pathname.split('/').find(segment => ['instagram', 'youtube', 'reddit', 'pinterest', 'email'].includes(segment));
|
|
735
|
-
const code = parsedUrl.searchParams.get('code');
|
|
736
|
-
const error = parsedUrl.searchParams.get('error');
|
|
737
|
-
if (error) {
|
|
738
|
-
console.error('โ OAuth error in callback:', error);
|
|
739
|
-
return {
|
|
740
|
-
success: false
|
|
741
|
-
};
|
|
742
|
-
}
|
|
743
|
-
if (code && platform) {
|
|
744
|
-
console.log(`โ
OAuth callback processed: ${platform} with code: ${code.substring(0, 10)}...`);
|
|
745
|
-
return {
|
|
746
|
-
platform,
|
|
747
|
-
code,
|
|
748
|
-
success: true
|
|
749
|
-
};
|
|
750
|
-
}
|
|
751
|
-
console.warn('โ ๏ธ OAuth callback missing platform or code');
|
|
752
|
-
return {
|
|
753
|
-
success: false
|
|
754
|
-
};
|
|
755
|
-
} catch (error) {
|
|
756
|
-
console.error('โ Error processing OAuth callback:', error);
|
|
757
|
-
return {
|
|
758
|
-
success: false
|
|
759
|
-
};
|
|
760
|
-
}
|
|
761
|
-
};
|
|
762
|
-
|
|
763
|
-
/**
|
|
764
|
-
* ๐ง UPDATE GOOGLE CLIENT IDS
|
|
765
|
-
* Allows apps to configure their own Google client IDs
|
|
766
|
-
*/
|
|
767
|
-
export const updateGoogleClientIds = config => {
|
|
768
|
-
console.log('๐ง Updating Google client IDs configuration');
|
|
769
|
-
if (config.webClientId || config.iosClientId) {
|
|
770
|
-
// Update the YouTube configuration
|
|
771
|
-
PLATFORM_AUTH_CONFIG.youtube = {
|
|
772
|
-
...PLATFORM_AUTH_CONFIG.youtube,
|
|
773
|
-
clientId: config.webClientId || PLATFORM_AUTH_CONFIG.youtube.clientId,
|
|
774
|
-
iosClientId: config.iosClientId || PLATFORM_AUTH_CONFIG.youtube.iosClientId
|
|
775
|
-
};
|
|
776
|
-
console.log('โ
Google client IDs updated successfully');
|
|
777
|
-
console.log(' - Web Client ID:', config.webClientId ? config.webClientId.substring(0, 20) + '...' : 'not provided');
|
|
778
|
-
console.log(' - iOS Client ID:', config.iosClientId ? config.iosClientId.substring(0, 20) + '...' : 'not provided');
|
|
779
|
-
}
|
|
780
|
-
};
|
|
781
|
-
|
|
782
|
-
/**
|
|
783
|
-
* Request email verification using developer API key
|
|
784
|
-
* @param email Email address to verify
|
|
785
|
-
* @param testMode Whether to use test mode
|
|
786
|
-
* @returns Promise with verification result
|
|
787
|
-
*/
|
|
788
|
-
export const requestEmailVerification = async (email, testMode = false) => {
|
|
789
|
-
try {
|
|
790
|
-
console.log('๐ง Requesting email verification for:', email);
|
|
791
|
-
const response = await makeDeveloperRequest('/email/verification', {
|
|
792
|
-
method: 'POST',
|
|
793
|
-
body: JSON.stringify({
|
|
794
|
-
email,
|
|
795
|
-
action: 'request',
|
|
796
|
-
testMode
|
|
797
|
-
})
|
|
798
|
-
});
|
|
799
|
-
const data = await response.json();
|
|
800
|
-
if (response.ok && data.success) {
|
|
801
|
-
console.log('โ
Email verification requested successfully');
|
|
802
|
-
return {
|
|
803
|
-
success: true,
|
|
804
|
-
message: data.message || 'Verification code sent to your email'
|
|
805
|
-
};
|
|
806
|
-
} else {
|
|
807
|
-
console.error('โ Email verification request failed:', data.error);
|
|
808
|
-
return {
|
|
809
|
-
success: false,
|
|
810
|
-
error: data.error || 'Failed to send verification code'
|
|
811
|
-
};
|
|
812
|
-
}
|
|
813
|
-
} catch (error) {
|
|
814
|
-
console.error('โ Error requesting email verification:', error);
|
|
815
|
-
return {
|
|
816
|
-
success: false,
|
|
817
|
-
error: error instanceof Error ? error.message : 'Network error'
|
|
818
|
-
};
|
|
819
|
-
}
|
|
820
|
-
};
|
|
821
|
-
|
|
822
|
-
/**
|
|
823
|
-
* Verify email code and store JWT token
|
|
824
|
-
* @param email Email address
|
|
825
|
-
* @param code Verification code
|
|
826
|
-
* @param testMode Whether to use test mode
|
|
827
|
-
* @returns Promise with verification result and JWT token
|
|
828
|
-
*/
|
|
829
|
-
export const verifyEmailCode = async (email, code, testMode = false) => {
|
|
830
|
-
try {
|
|
831
|
-
console.log('๐ Verifying email code for:', email);
|
|
832
|
-
const response = await makeDeveloperRequest('/email/verification', {
|
|
833
|
-
method: 'POST',
|
|
834
|
-
body: JSON.stringify({
|
|
835
|
-
email,
|
|
836
|
-
action: 'verify',
|
|
837
|
-
code,
|
|
838
|
-
testMode
|
|
839
|
-
})
|
|
840
|
-
});
|
|
841
|
-
const data = await response.json();
|
|
842
|
-
if (response.ok && data.success) {
|
|
843
|
-
console.log('โ
Email verification successful');
|
|
844
|
-
|
|
845
|
-
// Store JWT token if received
|
|
846
|
-
if (data.token || data.jwtToken) {
|
|
847
|
-
const jwtToken = data.token || data.jwtToken;
|
|
848
|
-
await storeJWT(jwtToken);
|
|
849
|
-
console.log('๐ซ JWT token stored successfully');
|
|
850
|
-
}
|
|
851
|
-
return {
|
|
852
|
-
success: true,
|
|
853
|
-
message: data.message || 'Email verified successfully',
|
|
854
|
-
existingUser: data.existingUser || false,
|
|
855
|
-
token: data.token || data.jwtToken
|
|
856
|
-
};
|
|
857
|
-
} else {
|
|
858
|
-
console.error('โ Email verification failed:', data.error);
|
|
859
|
-
return {
|
|
860
|
-
success: false,
|
|
861
|
-
error: data.error || 'Invalid verification code'
|
|
862
|
-
};
|
|
863
|
-
}
|
|
864
|
-
} catch (error) {
|
|
865
|
-
console.error('โ Error verifying email code:', error);
|
|
866
|
-
return {
|
|
867
|
-
success: false,
|
|
868
|
-
error: error instanceof Error ? error.message : 'Network error'
|
|
869
|
-
};
|
|
870
|
-
}
|
|
871
|
-
};
|
|
872
|
-
|
|
873
|
-
/**
|
|
874
|
-
* Check email verification status
|
|
875
|
-
* @param email Email address
|
|
876
|
-
* @param testMode Whether to use test mode
|
|
877
|
-
* @returns Promise with status result
|
|
878
|
-
*/
|
|
879
|
-
export const checkEmailVerificationStatus = async (email, testMode = false) => {
|
|
880
|
-
try {
|
|
881
|
-
console.log('๐ Checking email verification status for:', email);
|
|
882
|
-
const response = await makeDeveloperRequest('/email/verification/status', {
|
|
883
|
-
method: 'POST',
|
|
884
|
-
body: JSON.stringify({
|
|
885
|
-
email,
|
|
886
|
-
testMode
|
|
887
|
-
})
|
|
888
|
-
});
|
|
889
|
-
const data = await response.json();
|
|
890
|
-
if (response.ok && data.success) {
|
|
891
|
-
return {
|
|
892
|
-
success: true,
|
|
893
|
-
isPending: data.isPending || false
|
|
894
|
-
};
|
|
895
|
-
} else {
|
|
896
|
-
return {
|
|
897
|
-
success: false,
|
|
898
|
-
error: data.error || 'Failed to check verification status'
|
|
899
|
-
};
|
|
900
|
-
}
|
|
901
|
-
} catch (error) {
|
|
902
|
-
console.error('โ Error checking email verification status:', error);
|
|
903
|
-
return {
|
|
904
|
-
success: false,
|
|
905
|
-
error: error instanceof Error ? error.message : 'Network error'
|
|
906
|
-
};
|
|
907
|
-
}
|
|
908
|
-
};
|
|
909
|
-
|
|
910
|
-
/**
|
|
911
|
-
* Disconnect a platform (uses developer API key)
|
|
912
|
-
* @param platform Platform to disconnect
|
|
913
|
-
* @param username Username associated with the platform
|
|
914
|
-
* @returns Promise with disconnect result
|
|
915
|
-
*/
|
|
916
|
-
export const disconnectPlatform = async (platform, username) => {
|
|
917
|
-
try {
|
|
918
|
-
console.log('๐ Disconnecting platform:', platform, 'for user:', username);
|
|
919
|
-
|
|
920
|
-
// Make authenticated API call to disconnect platform
|
|
921
|
-
const response = await makeDeveloperRequest('/revoke', {
|
|
922
|
-
method: 'POST',
|
|
923
|
-
body: JSON.stringify({
|
|
924
|
-
platform,
|
|
925
|
-
username
|
|
926
|
-
})
|
|
927
|
-
});
|
|
928
|
-
const data = await response.json();
|
|
929
|
-
if (response.ok && data.success) {
|
|
930
|
-
console.log(`โ
${platform} disconnected successfully`);
|
|
931
|
-
return {
|
|
932
|
-
success: true
|
|
933
|
-
};
|
|
934
|
-
} else {
|
|
935
|
-
console.error(`โ Failed to disconnect ${platform}:`, data.error);
|
|
936
|
-
return {
|
|
937
|
-
success: false,
|
|
938
|
-
error: data.error || 'Failed to disconnect platform'
|
|
939
|
-
};
|
|
940
|
-
}
|
|
941
|
-
} catch (error) {
|
|
942
|
-
console.error(`โ Error disconnecting ${platform}:`, error);
|
|
943
|
-
return {
|
|
944
|
-
success: false,
|
|
945
|
-
error: error instanceof Error ? error.message : 'Network error'
|
|
946
|
-
};
|
|
947
|
-
}
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
/**
|
|
951
|
-
* Store PIN for user (uses JWT authentication and extracts username from JWT)
|
|
952
|
-
* @param pin User PIN
|
|
953
|
-
* @param username Optional username (if not provided, extracts from JWT)
|
|
954
|
-
* @returns Promise with result
|
|
955
|
-
*/
|
|
956
|
-
export const storePIN = async (pin, username) => {
|
|
957
|
-
try {
|
|
958
|
-
// Extract username from JWT if not provided
|
|
959
|
-
const userToStore = username || extractUsernameFromJWT();
|
|
960
|
-
if (!userToStore) {
|
|
961
|
-
console.error('โ No username available - either provide username or ensure JWT token is valid');
|
|
962
|
-
return {
|
|
963
|
-
success: false,
|
|
964
|
-
error: 'No username available for PIN storage'
|
|
965
|
-
};
|
|
966
|
-
}
|
|
967
|
-
console.log('๐ Storing PIN for user:', userToStore);
|
|
968
|
-
|
|
969
|
-
// Make authenticated request to store PIN (using developer API key for now)
|
|
970
|
-
const response = await makeDeveloperRequest('/store-pin/web', {
|
|
971
|
-
method: 'POST',
|
|
972
|
-
headers: {
|
|
973
|
-
'Content-Type': 'application/json'
|
|
974
|
-
},
|
|
975
|
-
body: JSON.stringify({
|
|
976
|
-
username: userToStore,
|
|
977
|
-
pin
|
|
978
|
-
})
|
|
979
|
-
});
|
|
980
|
-
const data = await response.json();
|
|
981
|
-
if (response.ok && data.success) {
|
|
982
|
-
console.log('โ
PIN stored successfully for user:', userToStore);
|
|
983
|
-
return {
|
|
984
|
-
success: true
|
|
985
|
-
};
|
|
986
|
-
} else {
|
|
987
|
-
console.error('โ Failed to store PIN:', data.error);
|
|
988
|
-
return {
|
|
989
|
-
success: false,
|
|
990
|
-
error: data.error || 'Failed to store PIN'
|
|
991
|
-
};
|
|
992
|
-
}
|
|
993
|
-
} catch (error) {
|
|
994
|
-
console.error('โ Error storing PIN:', error);
|
|
995
|
-
return {
|
|
996
|
-
success: false,
|
|
997
|
-
error: error instanceof Error ? error.message : 'Network error'
|
|
998
|
-
};
|
|
999
|
-
}
|
|
1000
|
-
};
|
|
1001
|
-
|
|
1002
|
-
/**
|
|
1003
|
-
* ๐ซ GET STORED JWT TOKEN
|
|
1004
|
-
* Helper function to retrieve stored JWT token from email verification or other sources
|
|
1005
|
-
*/
|
|
1006
|
-
export const getStoredJwtToken = async () => {
|
|
1007
|
-
try {
|
|
1008
|
-
console.log('๐ซ Retrieving stored JWT token...');
|
|
1009
|
-
|
|
1010
|
-
// Try different storage keys in order of preference
|
|
1011
|
-
const tokenSources = ['email_verification_token', 'onairos_jwt_token', 'enoch_token', 'auth_token'];
|
|
1012
|
-
for (const source of tokenSources) {
|
|
1013
|
-
const token = await AsyncStorage.getItem(source);
|
|
1014
|
-
if (token && token.length > 20) {
|
|
1015
|
-
console.log(`โ
JWT token found in ${source}:`, token.substring(0, 20) + '...');
|
|
1016
|
-
return token;
|
|
1017
|
-
}
|
|
1018
|
-
}
|
|
1019
|
-
console.warn('โ ๏ธ No JWT token found in storage');
|
|
1020
|
-
return null;
|
|
1021
|
-
} catch (error) {
|
|
1022
|
-
console.error('โ Error retrieving JWT token:', error);
|
|
1023
|
-
return null;
|
|
1024
|
-
}
|
|
1025
|
-
};
|
|
1026
|
-
|
|
1027
|
-
/**
|
|
1028
|
-
* ๐ซ CLEAR STORED TOKENS
|
|
1029
|
-
* Helper function to clear all stored tokens (useful for logout)
|
|
1030
|
-
*/
|
|
1031
|
-
export const clearStoredTokens = async () => {
|
|
1032
|
-
try {
|
|
1033
|
-
console.log('๐งน Clearing all stored tokens...');
|
|
1034
|
-
const tokenKeys = ['email_verification_token', 'onairos_jwt_token', 'enoch_token', 'auth_token', 'email_verification_email', 'email_verification_request_id', 'email_verification_request_email', 'token_timestamp', 'user_pin_stored', 'pin_storage_timestamp'];
|
|
1035
|
-
await Promise.all(tokenKeys.map(key => AsyncStorage.removeItem(key)));
|
|
1036
|
-
console.log('โ
All tokens cleared successfully');
|
|
1037
|
-
} catch (error) {
|
|
1038
|
-
console.error('โ Error clearing tokens:', error);
|
|
1039
|
-
}
|
|
1040
|
-
};
|
|
1041
|
-
//# sourceMappingURL=platformAuthService.js.map
|
|
1
|
+
import{Platform}from'react-native';import{GoogleSignin,statusCodes}from'@react-native-google-signin/google-signin';import AsyncStorage from'@react-native-async-storage/async-storage';import{API_CONFIG,getApiHeaders,getUserAuthHeaders}from'../config/api';import{getApiConfig,isApiKeyInitialized}from'./apiKeyService';import{getJWT}from'./jwtStorageService';const getDeveloperAuthHeaders=()=>{const _0x3fe80c={'uJIBj':_0x35b4(0x0),'sCikj':function(_0x34eb99){return _0x34eb99();},'fIUSU':function(_0x299ce9,_0x204437){return _0x299ce9!==_0x204437;},'LWhfs':function(_0x52c2eb,_0x5b33c7){return _0x52c2eb!==_0x5b33c7;},'FYdLI':_0x35b4(0x1),'ThBvK':function(_0x2c851e){return _0x2c851e();},'MsIqH':_0x35b4(0x2)};if(!isApiKeyInitialized())throw new Error(_0x3fe80c[_0x35b4(0x3)]);const _0x4e6d5a=_0x3fe80c[_0x35b4(0x4)](getApiConfig);if(!(_0x3fe80c[_0x35b4(0x5)](_0x4e6d5a,null)&&_0x3fe80c[_0x35b4(0x6)](_0x4e6d5a,void 0x0)&&_0x4e6d5a[_0x35b4(0x7)]))throw new Error(_0x3fe80c[_0x35b4(0x8)]);return{..._0x3fe80c[_0x35b4(0x9)](getApiHeaders),'Authorization':_0x35b4(0xa)+_0x4e6d5a[_0x35b4(0x7)],'X-SDK-Version':_0x3fe80c[_0x35b4(0xb)],'X-SDK-Platform':'react-native'};},WEB_CLIENT_ID=_0x35b4(0xc),IOS_CLIENT_ID='1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com',OAUTH_CONFIG={'instagram':{'authUrl':_0x35b4(0xd),'clientId':_0x35b4(0xe),'redirectUri':'onairosevents://auth/callback','scope':_0x35b4(0xf),'responseType':_0x35b4(0x10),'hasNativeSDK':![]},'youtube':{'authUrl':API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x12),'clientId':_0x35b4(0xc),'redirectUri':'onairosevents://auth/callback','scope':_0x35b4(0x13),'responseType':_0x35b4(0x10),'hasNativeSDK':!![]},'reddit':{'authUrl':API_CONFIG['BASE_URL']+_0x35b4(0x14),'clientId':_0x35b4(0x15),'redirectUri':_0x35b4(0x16),'scope':_0x35b4(0x17),'responseType':'code','hasNativeSDK':![]},'pinterest':{'authUrl':API_CONFIG['BASE_URL']+_0x35b4(0x18),'clientId':_0x35b4(0x19),'redirectUri':'onairosevents://auth/callback','scope':_0x35b4(0x1a),'responseType':_0x35b4(0x10),'hasNativeSDK':![]},'facebook':{'authUrl':_0x35b4(0x1b),'clientId':_0x35b4(0x1c),'redirectUri':_0x35b4(0x16),'scope':_0x35b4(0x1d),'responseType':_0x35b4(0x10),'hasNativeSDK':![]},'linkedin':{'authUrl':API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x1e),'clientId':'','redirectUri':_0x35b4(0x16),'scope':_0x35b4(0x1f),'responseType':_0x35b4(0x10),'hasNativeSDK':![]},'gmail':{'authUrl':API_CONFIG[_0x35b4(0x11)]+'/gmail/authorize','clientId':_0x35b4(0x20),'redirectUri':_0x35b4(0x16),'scope':_0x35b4(0x21),'responseType':'code','hasNativeSDK':![]},'email':{'hasNativeSDK':![],'authUrl':API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x22)},'chatgpt':{'authUrl':_0x35b4(0x23),'clientId':'','redirectUri':'','scope':'','responseType':'','hasNativeSDK':![]},'claude':{'authUrl':_0x35b4(0x24),'clientId':'','redirectUri':'','scope':'','responseType':'','hasNativeSDK':![]},'gemini':{'authUrl':_0x35b4(0x25),'clientId':'','redirectUri':'','scope':'','responseType':'','hasNativeSDK':![]},'grok':{'authUrl':'https://x.com/i/grok','clientId':'','redirectUri':'','scope':'','responseType':'','hasNativeSDK':![]}};export const hasNativeSDK=_0x3a9155=>{var _0x593172;return((_0x593172=OAUTH_CONFIG[_0x3a9155])===null||_0x593172===void 0x0?void 0x0:_0x593172[_0x35b4(0x26)])||![];};export const testApiConnectivity=async()=>{const _0x183d7d={'iEBvT':_0x35b4(0x27),'nYEFv':function(_0x50527a,_0x553edb){return _0x50527a===_0x553edb;},'vSgbt':function(_0x51a1d6,_0x1a0f1e){return _0x51a1d6===_0x1a0f1e;},'NeVBe':function(_0x29754e,_0x69527){return _0x29754e===_0x69527;},'ueqYq':function(_0x564e56,_0x169c42){return _0x564e56===_0x169c42;},'qgDDm':'No\x20Channel','zouet':'โ\x20[CONNECTIVITY]\x20Connectivity\x20test\x20failed:','KiXHL':'โ
\x20Found\x20existing\x20authentication\x20token\x20for\x20YouTube\x20auth','WSBqm':'๐\x20Token\x20preview:','CNQar':function(_0x34620b,_0x48a724){return _0x34620b===_0x48a724;},'TQpeI':'zsoYG','PKGET':'๐\x20[CONNECTIVITY]\x20Test\x201:\x20Checking\x20general\x20internet\x20(google.com)...','IYzth':_0x35b4(0x28),'LXBLm':function(_0x273d94,_0x4177bb,_0x4428c3){return _0x273d94(_0x4177bb,_0x4428c3);},'TvoVi':_0x35b4(0x29),'MjmuK':_0x35b4(0x2a),'mvfVn':_0x35b4(0x2b),'ZtPTd':_0x35b4(0x2c),'wSrPR':_0x35b4(0x2d),'bnCmn':function(_0x2fb14a,_0x2958ee){return _0x2fb14a!==_0x2958ee;},'NhxcZ':function(_0x5f7e40,_0x3fda93,_0x479478){return _0x5f7e40(_0x3fda93,_0x479478);},'uAWXH':function(_0x1aae57,_0x501c4c){return _0x1aae57(_0x501c4c);},'NRpYJ':function(_0x3fb243,_0x117029){return _0x3fb243!==_0x117029;},'zBWGB':_0x35b4(0x2e),'wEXOk':'โ
\x20[CONNECTIVITY]\x20API\x20server\x20is\x20reachable','zZXTW':_0x35b4(0x2f),'pvvHK':function(_0x12513d,_0x27deca){return _0x12513d!==_0x27deca;},'UGerO':_0x35b4(0x30),'RBJoM':_0x35b4(0x31),'EDCCn':function(_0x35305e,_0x2fd703){return _0x35305e!==_0x2fd703;},'mVJQv':_0x35b4(0x32),'pBvad':'Internet\x20works\x20but\x20API\x20server\x20is\x20unreachable.\x20The\x20server\x20may\x20be\x20blocking\x20requests\x20from\x20this\x20device/simulator.','iDODP':function(_0x29f69f,_0x48c81f){return _0x29f69f===_0x48c81f;},'tLUyj':_0x35b4(0x33),'BfPbU':_0x35b4(0x34)},_0xcda2df={'googleTest':null,'api2Test':null};try{if(_0x183d7d[_0x35b4(0x35)](_0x183d7d['TQpeI'],_0x183d7d[_0x35b4(0x36)])){var _0x4091be,_0x4a4cf8;console[_0x35b4(0x37)](_0x35b4(0x38)),console[_0x35b4(0x37)](_0x183d7d['PKGET']);try{if(_0x183d7d['IYzth']===_0x183d7d[_0x35b4(0x39)]){const _0x4cc6a7=await _0x183d7d[_0x35b4(0x3a)](fetch,_0x183d7d[_0x35b4(0x3b)],{'method':_0x183d7d[_0x35b4(0x3c)],'mode':_0x35b4(0x3d)});_0xcda2df['googleTest']={'success':!![],'status':_0x183d7d['mvfVn']},console[_0x35b4(0x37)](_0x183d7d['ZtPTd']);}else return{'success':!![],'message':_0x35b4(0x31),'details':_0x43c4fc};}catch(_0x5e9ea8){_0xcda2df['googleTest']={'success':![],'error':_0x5e9ea8[_0x35b4(0x3e)]},console[_0x35b4(0x3f)](_0x35b4(0x40),_0x5e9ea8[_0x35b4(0x3e)]);}console[_0x35b4(0x37)](_0x183d7d[_0x35b4(0x41)]);try{if(_0x183d7d['bnCmn'](_0x35b4(0x42),_0x35b4(0x43))){const _0x1df62e=new AbortController(),_0x5cefff=_0x183d7d[_0x35b4(0x44)](setTimeout,()=>_0x1df62e[_0x35b4(0x45)](),0x7530),_0x256eff=await _0x183d7d[_0x35b4(0x3a)](fetch,API_CONFIG[_0x35b4(0x11)]+'/health',{'method':'GET','signal':_0x1df62e[_0x35b4(0x46)]});_0x183d7d[_0x35b4(0x47)](clearTimeout,_0x5cefff);const _0x48225e=await _0x256eff[_0x35b4(0x48)]()[_0x35b4(0x49)](()=>_0x35b4(0x4a));_0xcda2df[_0x35b4(0x4b)]={'success':_0x256eff['ok'],'status':_0x256eff['status'],'statusText':_0x256eff[_0x35b4(0x4c)],'response':_0x48225e[_0x35b4(0x4d)](0x0,0xc8)};if(_0x256eff['ok']){if(_0x183d7d[_0x35b4(0x4e)](_0x183d7d[_0x35b4(0x4f)],_0x183d7d[_0x35b4(0x4f)])){var _0x4486d8,_0x4c8c34;_0x5e4e78[_0x35b4(0x37)](_0x183d7d[_0x35b4(0x50)]),_0x45d1e5=(_0x183d7d[_0x35b4(0x51)](_0x4486d8=_0x5bfc0e['data'],null)||_0x183d7d[_0x35b4(0x52)](_0x4486d8,void 0x0)||_0x183d7d[_0x35b4(0x53)](_0x4486d8=_0x4486d8[_0x35b4(0x54)],null)||_0x183d7d[_0x35b4(0x52)](_0x4486d8,void 0x0)?void 0x0:_0x4486d8[_0x35b4(0x55)])||(_0x183d7d[_0x35b4(0x56)](_0x4c8c34=_0x19c7ed[_0x35b4(0x57)],null)||_0x183d7d[_0x35b4(0x51)](_0x4c8c34,void 0x0)||(_0x4c8c34=_0x4c8c34[_0x35b4(0x54)])===null||_0x183d7d['vSgbt'](_0x4c8c34,void 0x0)?void 0x0:_0x4c8c34[_0x35b4(0x58)])||_0x183d7d[_0x35b4(0x59)];}else console[_0x35b4(0x37)](_0x183d7d['wEXOk']);}else console[_0x35b4(0x37)](_0x35b4(0x5a)+_0x256eff['status']);}else return _0x59cb33[_0x35b4(0x3f)](_0x183d7d[_0x35b4(0x5b)],_0x431b94[_0x35b4(0x3e)]),{'success':![],'message':_0x35b4(0x5c)+_0xe8f120[_0x35b4(0x3e)],'details':{'error':_0x1fec83[_0x35b4(0x3e)],'results':_0x58d320}};}catch(_0x48fec9){_0xcda2df[_0x35b4(0x4b)]={'success':![],'error':_0x48fec9[_0x35b4(0x3e)],'name':_0x48fec9[_0x35b4(0x55)]},console[_0x35b4(0x3f)](_0x183d7d[_0x35b4(0x5d)],_0x48fec9['message']);}if(_0x183d7d[_0x35b4(0x5e)](_0x4091be=_0xcda2df['api2Test'],null)&&_0x183d7d[_0x35b4(0x5e)](_0x4091be,void 0x0)&&_0x4091be[_0x35b4(0x5f)]){if('WNLlR'!==_0x183d7d['UGerO'])return{'success':!![],'message':_0x183d7d[_0x35b4(0x60)],'details':_0xcda2df};else _0x3c892a[_0x35b4(0x37)](_0x183d7d[_0x35b4(0x61)]),_0x3520f9[_0x35b4(0x37)](_0x183d7d['WSBqm'],_0x5dd7b6[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62));}else return _0x183d7d[_0x35b4(0x4e)](_0x4a4cf8=_0xcda2df[_0x35b4(0x63)],null)&&_0x183d7d[_0x35b4(0x64)](_0x4a4cf8,void 0x0)&&_0x4a4cf8['success']?_0x183d7d['mVJQv']!==_0x183d7d[_0x35b4(0x65)]?{'success':!![],'message':_0x40b34f[_0x35b4(0x3e)]||_0x35b4(0x66),'existingUser':_0x551c38[_0x35b4(0x67)]||![],'token':_0x3bd0d9[_0x35b4(0x68)]}:{'success':![],'message':_0x183d7d[_0x35b4(0x69)],'details':_0xcda2df}:{'success':![],'message':_0x35b4(0x6a),'details':_0xcda2df};}else throw new _0x265bdc(_0x35b4(0x0));}catch(_0x201441){if(_0x183d7d['iDODP'](_0x183d7d[_0x35b4(0x6b)],_0x183d7d[_0x35b4(0x6c)]))_0x50d52d[_0x35b4(0x37)](_0x35b4(0x6d),_0x70abd);else return console[_0x35b4(0x3f)](_0x183d7d[_0x35b4(0x5b)],_0x201441[_0x35b4(0x3e)]),{'success':![],'message':_0x35b4(0x5c)+_0x201441['message'],'details':{'error':_0x201441['message'],'results':_0xcda2df}};}};function _0x35b4(_0x276ede,_0x35b461){_0x276ede=_0x276ede-0x0;const _0x48a076=_0x276e();let _0x341626=_0x48a076[_0x276ede];return _0x341626;}export const initiateOAuth=async(_0x3606e2,_0x3b6cb3)=>{const _0x47d752={'APLVA':function(_0x1f6b3c){return _0x1f6b3c();},'KkOtI':'SDK\x20not\x20initialized.\x20Developers\x20must\x20call\x20initializeApiKey()\x20before\x20using\x20auth\x20features.','YMbqR':function(_0x7824b8,_0x103482){return _0x7824b8!==_0x103482;},'ZWODh':'No\x20API\x20key\x20configured.\x20Please\x20initialize\x20the\x20SDK\x20with\x20a\x20valid\x20developer\x20API\x20key.','TxFxR':_0x35b4(0x2),'Tovju':_0x35b4(0x6e),'QIoRe':_0x35b4(0x6f),'yQnmG':function(_0x321b95,_0x5108cd){return _0x321b95===_0x5108cd;},'WiPxg':'pcZib','JuiRb':_0x35b4(0x70),'jnPIH':function(_0x415bc6,_0x2c0947){return _0x415bc6(_0x2c0947);},'QzaNZ':_0x35b4(0x71),'nQjks':_0x35b4(0x72),'YkSaI':_0x35b4(0x73),'XQCvT':_0x35b4(0x74),'JEQqd':_0x35b4(0x75),'BFyzC':_0x35b4(0x76),'IllVi':_0x35b4(0x77),'egGeu':_0x35b4(0x78)};try{console[_0x35b4(0x37)](_0x35b4(0x79)+_0x3606e2),console[_0x35b4(0x37)](_0x35b4(0x7a)+Platform['OS']+_0x35b4(0x7b)+Platform[_0x35b4(0x7c)]);if(_0x3606e2==='email')return console[_0x35b4(0x37)](_0x47d752[_0x35b4(0x7d)]),API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x7e);let _0x40c53f;try{if(_0x47d752[_0x35b4(0x7f)](_0x47d752[_0x35b4(0x80)],_0x47d752[_0x35b4(0x80)]))_0x40c53f=await _0x47d752['APLVA'](getUserAuthHeaders),console['log']('๐\x20[OAUTH]\x20Using\x20User\x20JWT\x20for\x20authentication');else{if(!_0x47d752[_0x35b4(0x81)](_0x35cbee))throw new _0x54c0f0(_0x47d752['KkOtI']);const _0x3ca6f8=_0x9b3a0();if(!(_0x47d752['YMbqR'](_0x3ca6f8,null)&&_0x3ca6f8!==void 0x0&&_0x3ca6f8[_0x35b4(0x7)]))throw new _0x43c98d(_0x47d752[_0x35b4(0x82)]);return{..._0x5e6539(),'Authorization':_0x35b4(0xa)+_0x3ca6f8[_0x35b4(0x7)],'X-SDK-Version':_0x47d752['TxFxR'],'X-SDK-Platform':'react-native'};}}catch(_0x50f26b){if(_0x35b4(0x70)!==_0x47d752[_0x35b4(0x83)])_0x36d006['warn'](_0x35b4(0x84)),_0x4cc15b[_0x35b4(0x85)](_0x47d752[_0x35b4(0x86)],_0x24489d[_0x35b4(0x87)](_0x4a05ec)),_0x32c246[_0x35b4(0x85)](_0x35b4(0x88));else return console[_0x35b4(0x3f)](_0x35b4(0x89)+_0x3606e2+_0x35b4(0x8a)),console['error'](_0x35b4(0x8b)),null;}const _0x50788f=API_CONFIG[_0x35b4(0x11)]+'/'+_0x3606e2+'/authorize';console['log']('๐\x20[OAUTH]\x20Proxy\x20URL:\x20'+_0x50788f),console[_0x35b4(0x37)](_0x35b4(0x8c));const _0x4d13a9={'platform':_0x3606e2,'timestamp':new Date()[_0x35b4(0x8d)]()};console[_0x35b4(0x37)](_0x35b4(0x8e),_0x4d13a9);const _0x4f6045=new AbortController(),_0x1ab5c5=setTimeout(()=>{console[_0x35b4(0x37)](_0x35b4(0x8f)+_0x3606e2+_0x35b4(0x90)),_0x4f6045[_0x35b4(0x45)]();},0x7530),_0x30cd21=await fetch(_0x50788f,{'method':'POST','headers':_0x40c53f,'body':JSON[_0x35b4(0x91)](_0x4d13a9),'signal':_0x4f6045[_0x35b4(0x46)]});_0x47d752['jnPIH'](clearTimeout,_0x1ab5c5),console['log'](_0x35b4(0x92)+_0x30cd21[_0x35b4(0x93)]+'\x20'+_0x30cd21[_0x35b4(0x4c)]);if(!_0x30cd21['ok']){const _0x5698d1=await _0x30cd21['text']();return console['error'](_0x35b4(0x94)+_0x3606e2+':\x20'+_0x30cd21[_0x35b4(0x93)]+_0x35b4(0x95)+_0x5698d1),null;}const _0x380e8c=await _0x30cd21[_0x35b4(0x96)]();console['log'](_0x35b4(0x97)+_0x3606e2+':',_0x380e8c);const _0x4953bf=_0x3606e2+_0x35b4(0x98),_0x4dd878=_0x380e8c[_0x4953bf]||_0x380e8c[_0x35b4(0x99)]||null;return console[_0x35b4(0x37)](_0x35b4(0x9a)+_0x3606e2+'\x20(key:\x20'+_0x4953bf+'):',_0x4dd878),_0x4dd878;}catch(_0x3b9c8f){var _0x1377f8;if(_0x47d752['yQnmG'](_0x3b9c8f['name'],_0x47d752[_0x35b4(0x9b)]))console[_0x35b4(0x3f)](_0x35b4(0x9c)+_0x3606e2+_0x35b4(0x9d));else{if((_0x1377f8=_0x3b9c8f[_0x35b4(0x3e)])!==null&&_0x1377f8!==void 0x0&&_0x1377f8[_0x35b4(0x9e)](_0x47d752[_0x35b4(0x9f)])){const _0x1f675d=_0x47d752['YkSaI']['split']('|');let _0x3816c7=0x0;while(!![]){switch(_0x1f675d[_0x3816c7++]){case'0':console[_0x35b4(0x3f)](_0x47d752[_0x35b4(0xa0)]);continue;case'1':console[_0x35b4(0x3f)](_0x47d752[_0x35b4(0xa1)]);continue;case'2':console[_0x35b4(0x3f)](_0x47d752[_0x35b4(0xa2)]);continue;case'3':console[_0x35b4(0x3f)]('โ\x20[OAUTH]\x20Network\x20request\x20failed\x20for\x20'+_0x3606e2+_0x35b4(0xa3));continue;case'4':console[_0x35b4(0x3f)](_0x47d752[_0x35b4(0xa4)]);continue;case'5':console[_0x35b4(0x3f)](_0x47d752['egGeu']);continue;}break;}}else console[_0x35b4(0x3f)]('โ\x20[OAUTH]\x20Error\x20initiating\x20OAuth\x20for\x20'+_0x3606e2+':',_0x3b9c8f);}return null;}};const initializeGoogleSignIn=()=>{const _0x42b711={'VgKfj':_0x35b4(0x13),'ctWgp':'openid','Ulrmy':'profile','kxNSw':_0x35b4(0x58)};GoogleSignin[_0x35b4(0xa5)]({'webClientId':WEB_CLIENT_ID,'iosClientId':IOS_CLIENT_ID,'offlineAccess':!![],'forceCodeForRefreshToken':!![],'scopes':[_0x42b711['VgKfj'],_0x42b711[_0x35b4(0xa6)],_0x42b711[_0x35b4(0xa7)],_0x42b711[_0x35b4(0xa8)]],'hostedDomain':'','accountName':''});};export const forceYouTubeReconnectionWithConsent=async _0x1a7128=>{const _0x33462c={'FSJvK':'โ\x20Still\x20no\x20refresh\x20token\x20after\x20revoke\x20method','ilHtB':_0x35b4(0xa9),'tDADA':function(_0x466338,_0x43c526){return _0x466338===_0x43c526;},'jspJR':function(_0x14c327,_0x430e89){return _0x14c327===_0x430e89;},'bXeKT':function(_0x28353c,_0x288207){return _0x28353c===_0x288207;},'jMfSO':function(_0x2ae91c,_0x200ca2){return _0x2ae91c===_0x200ca2;},'wRCDI':_0x35b4(0xaa),'IpxHD':_0x35b4(0xab),'plKfd':_0x35b4(0xac),'yIMsi':'User\x20cancelled\x20Google\x20Sign-In','HOJVu':_0x35b4(0xad),'ZQSDy':_0x35b4(0xae),'GAorj':'Falling\x20back\x20to\x20simulated\x20token\x20response','LYXWT':_0x35b4(0xaf),'DwqlU':'Google\x20Play\x20Services\x20not\x20available','wexAP':_0x35b4(0xb0),'ausEH':_0x35b4(0xb1),'XspLR':'๐\x20[YOUTUBE\x20REAUTH]\x20REFRESH\x20TOKEN\x20SENT\x20TO\x20BACKEND:','lEsHH':'๐\x20[YOUTUBE\x20REAUTH]\x20SUCCESS:\x20Full\x20YouTube\x20connection\x20with\x20refresh\x20tokens!','jgRCK':_0x35b4(0xb2),'kFACL':'โ
\x20[YOUTUBE\x20REAUTH]\x20Response\x20hasRefreshToken:','YXexv':_0x35b4(0xb3),'GkuOW':'serverAuthCode','zZgDx':'refreshToken','RrRPp':_0x35b4(0xb4),'kFCbN':_0x35b4(0xb5),'BHYnz':_0x35b4(0xb6),'ktMRa':function(_0xe471d4,_0x1aa969){return _0xe471d4===_0x1aa969;},'aXDiP':'LInOr','iFQjU':_0x35b4(0xb7),'xpDqw':function(_0x34118e,_0x4eca1f){return _0x34118e!==_0x4eca1f;},'lrNsf':'iwYvW','NWwcX':_0x35b4(0xb8),'gwynU':_0x35b4(0xb9),'uhBHD':'โน๏ธ\x20No\x20token\x20cache\x20to\x20clear','MJKWs':'๐ง\x20Configuring\x20Google\x20Sign-In\x20for\x20forced\x20consent...','HrVUf':_0x35b4(0x13),'gGRnf':_0x35b4(0xba),'hswkJ':'profile','Gmvwb':'email','JlUzN':'โ
\x20Play\x20Services\x20available','XxykM':_0x35b4(0xbb),'cNtXZ':_0x35b4(0xbc),'iCpRv':function(_0x12242b,_0x488acb){return _0x12242b===_0x488acb;},'AjgGJ':function(_0x3334d6,_0x57abf2){return _0x3334d6===_0x57abf2;},'SqiKr':function(_0x5d27fc,_0x47c414){return _0x5d27fc===_0x47c414;},'IAxuy':_0x35b4(0xbd),'SSeNr':_0x35b4(0xbe),'ccPYG':_0x35b4(0xbf),'QAPJL':'๐\x20Token\x20analysis:','IqFSd':'-\x20Access\x20token:','lujzF':_0x35b4(0xc0),'xmZye':'Present','yAdSw':_0x35b4(0xc1),'yXmnw':_0x35b4(0xc2),'scEkn':function(_0x36967b,_0x43cc40){return _0x36967b!==_0x43cc40;},'fZCYy':function(_0x61942c,_0x2aca96){return _0x61942c===_0x2aca96;},'BifNv':_0x35b4(0xc3),'PIuUm':'xVPdA','dWiEk':_0x35b4(0xc4),'GANCW':_0x35b4(0xc5),'DKonp':_0x35b4(0xc6),'VtzxN':_0x35b4(0xc7),'tEHYm':_0x35b4(0xc8),'VhKvc':function(_0x101155,_0x3cd956,_0x569dd5){return _0x101155(_0x3cd956,_0x569dd5);},'LmtwQ':_0x35b4(0xc9),'Qsvri':function(_0xa5b9b5,_0x12bd86){return _0xa5b9b5>_0x12bd86;},'rOeLD':_0x35b4(0xca),'tGxuq':_0x35b4(0xcb),'xceFx':_0x35b4(0xcc),'EzRlD':'ID:','oEWMQ':function(_0x4e3969,_0x4df74c){return _0x4e3969!==_0x4df74c;},'WWiiF':_0x35b4(0x27),'suOaA':function(_0x893fe9,_0xc6826){return _0x893fe9===_0xc6826;},'jucaU':function(_0x44ad04,_0x24e468){return _0x44ad04===_0x24e468;},'yBVkl':function(_0x40eb7d,_0x49fcc1){return _0x40eb7d===_0x49fcc1;},'IPHQe':function(_0x34446f,_0x4db1f1){return _0x34446f===_0x4db1f1;},'QVaNr':'ZVNXS','pybeS':_0x35b4(0xcd),'paIXV':function(_0x11b43b,_0x38992a){return _0x11b43b===_0x38992a;},'CZALF':function(_0x41a91c,_0x5cfeb4){return _0x41a91c===_0x5cfeb4;},'fsZcy':function(_0x31eefa,_0xd4fcb7){return _0x31eefa===_0xd4fcb7;},'DbNBu':_0x35b4(0xce),'tncRW':function(_0x152292,_0x1d57a0){return _0x152292===_0x1d57a0;},'RfjUM':function(_0x3a8e54){return _0x3a8e54();},'PulxW':function(_0x4f0b79,_0x2a5b8d){return _0x4f0b79<_0x2a5b8d;},'vTQzV':_0x35b4(0xcf),'bBmdf':_0x35b4(0xd0),'VWyBg':_0x35b4(0xd1),'zEpxS':function(_0x412cc6,_0x17ecd3){return _0x412cc6===_0x17ecd3;},'ZuwJf':function(_0x3c79db,_0x5506ee){return _0x3c79db===_0x5506ee;},'WzIhE':function(_0x463004,_0x5e865c){return _0x463004===_0x5e865c;},'SVOqU':function(_0x25aad8,_0x2cc79a){return _0x25aad8===_0x2cc79a;},'gVDxm':function(_0x10504,_0xe6aa53){return _0x10504===_0xe6aa53;},'yZpzv':function(_0x5f681e,_0x50f82f){return _0x5f681e+_0x50f82f;},'zgdlf':'signOut_and_configure','KaFcx':'๐ค\x20Sending\x20comprehensive\x20payload\x20with\x20REFRESH\x20TOKEN\x20to\x20backend:','XRXks':function(_0x315dcf,_0x22ba65){return _0x315dcf===_0x22ba65;},'mNoTn':function(_0x3e7618,_0x41459c){return _0x3e7618===_0x41459c;},'owuPa':_0x35b4(0xd2),'mxpXR':_0x35b4(0xd3),'kTFgU':_0x35b4(0xd4),'fLmMX':_0x35b4(0xd5),'HWswu':function(_0x5a80f7,_0x3ddce1){return _0x5a80f7===_0x3ddce1;},'FhbQn':function(_0x3a3fef,_0x205255,_0x18e0db){return _0x3a3fef(_0x205255,_0x18e0db);},'EkDmo':function(_0x1162f7,_0x43c937){return _0x1162f7&&_0x43c937;},'IMwCW':_0x35b4(0xd6),'YcSdp':_0x35b4(0xd7),'jSzVt':_0x35b4(0xd8),'OcMht':_0x35b4(0xd9),'bTvWD':_0x35b4(0xda),'MHLhd':'โ
\x20[YOUTUBE\x20REAUTH]\x20Backend\x20Response\x20SUCCESS:','YPEOq':function(_0x91b969,_0x46402b){return _0x91b969===_0x46402b;},'GEyam':function(_0x23ba7e,_0x2f7f61){return _0x23ba7e===_0x2f7f61;},'AphPv':function(_0x59a85c,_0x22de6d){return _0x59a85c===_0x22de6d;},'IIUyN':function(_0x1a5db9,_0x78b957){return _0x1a5db9===_0x78b957;},'HpKNz':_0x35b4(0xdb),'EXuCd':function(_0x46f8b9,_0x43f998){return _0x46f8b9===_0x43f998;},'DSRyY':_0x35b4(0xdc),'PHZEo':_0x35b4(0xdd),'AVSme':_0x35b4(0xde),'Fizkp':_0x35b4(0xdf),'hkUeX':'๐\x20[YOUTUBE\x20REAUTH]\x20SUCCESS:\x20Temporary\x20YouTube\x20connection\x20established!','jADnK':'๐\x20[YOUTUBE\x20REAUTH]\x20Mode:\x20Temporary\x20(expires\x20~1\x20hour)','RYOxL':_0x35b4(0xe0),'oOirT':'๐\x20[YOUTUBE\x20REAUTH]\x20Refresh\x20token\x20length:','cqEUd':_0x35b4(0xe1),'hGIxo':'โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20Backend\x20did\x20NOT\x20confirm\x20refresh\x20token\x20reception','kEoTz':_0x35b4(0xe2),'nIXhI':_0x35b4(0xe3),'ccnnL':function(_0x31bfe1,_0x302d5d){return _0x31bfe1===_0x302d5d;},'kHKRZ':_0x35b4(0xe4),'gyNJv':function(_0x22945c,_0x196a47,_0x45e8db){return _0x22945c(_0x196a47,_0x45e8db);},'oeCPW':_0x35b4(0xe5),'aJJbb':_0x35b4(0xe6),'cCHcq':function(_0x2b4b38,_0x176395){return _0x2b4b38===_0x176395;},'Xtise':_0x35b4(0xe7),'ZGVfN':_0x35b4(0xe8),'BfVbw':_0x35b4(0xe9),'TmKws':'๐ก\x20Solutions:','bGuoK':'\x20\x20\x203.\x20Ensure\x20user\x20clicks\x20\x22Allow\x22\x20on\x20consent\x20screen','BbvSb':_0x35b4(0xea),'lfysJ':function(_0x478b56,_0x35b052){return _0x478b56===_0x35b052;},'oczsJ':_0x35b4(0xeb),'nOfGA':_0x35b4(0xec),'SUKaR':_0x35b4(0xed),'BLNhA':function(_0x511f2c,_0x13ae5e){return _0x511f2c===_0x13ae5e;}};try{var _0x4579b7,_0x166e8a,_0x2c1d8c;console[_0x35b4(0x37)](_0x33462c[_0x35b4(0xee)]),console[_0x35b4(0x37)](_0x35b4(0xef),_0x1a7128);try{await GoogleSignin[_0x35b4(0xf0)](),console['log'](_0x33462c[_0x35b4(0xf1)]);}catch(_0x30bbae){if(_0x33462c['ktMRa'](_0x33462c[_0x35b4(0xf2)],_0x35b4(0xf3)))return _0x5c3c82[_0x35b4(0x3f)](_0x33462c[_0x35b4(0xf4)]),![];else console[_0x35b4(0x37)](_0x33462c[_0x35b4(0xf5)],_0x30bbae);}try{if(_0x33462c[_0x35b4(0xf6)](_0x35b4(0xf7),_0x35b4(0xf7))){var _0xb1822c,_0xa0f754;_0x2b7fed[_0x35b4(0x37)](_0x33462c[_0x35b4(0xf8)],_0x3d6350),_0x2cfaa6=((_0xb1822c=_0x2356c6[_0x35b4(0x57)])===null||_0x33462c[_0x35b4(0xf9)](_0xb1822c,void 0x0)||_0x33462c[_0x35b4(0xfa)](_0xb1822c=_0xb1822c[_0x35b4(0x54)],null)||_0x33462c[_0x35b4(0xfb)](_0xb1822c,void 0x0)?void 0x0:_0xb1822c['name'])||(_0x33462c[_0x35b4(0xfa)](_0xa0f754=_0x2e8cab['data'],null)||_0x33462c[_0x35b4(0xfc)](_0xa0f754,void 0x0)||(_0xa0f754=_0xa0f754['user'])===null||_0x33462c[_0x35b4(0xf9)](_0xa0f754,void 0x0)?void 0x0:_0xa0f754[_0x35b4(0x58)])||_0x33462c['wRCDI'];}else{const _0x40634f=await GoogleSignin[_0x35b4(0xfd)]();if(_0x40634f[_0x35b4(0xfe)]){if(_0x33462c['xpDqw'](_0x33462c['lrNsf'],_0x33462c[_0x35b4(0xff)]))await GoogleSignin[_0x35b4(0x100)](_0x40634f[_0x35b4(0xfe)]),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x101)]);else{const _0x2c516d={'axtgU':_0x33462c[_0x35b4(0x102)],'fAWQA':function(_0x35c7d8,_0x554361){return _0x35c7d8(_0x554361);},'gpBSb':function(_0x580f91,_0x101798,_0x460b7d){return _0x580f91(_0x101798,_0x460b7d);}};return _0x2056d4[_0x35b4(0x37)](_0x33462c[_0x35b4(0x103)]),new _0x2e1a58(_0x23905e=>{const _0x257d9e={'BptAs':_0x2c516d['axtgU'],'bYrqS':function(_0xf996cf,_0xbe10a8){return _0x2c516d[_0x35b4(0x104)](_0xf996cf,_0xbe10a8);}};_0x2c516d[_0x35b4(0x105)](_0x472c84,()=>{_0xe8106[_0x35b4(0x37)](_0x257d9e[_0x35b4(0x106)]),_0x257d9e['bYrqS'](_0x23905e,!![]);},0x3e8);});}}}}catch(_0x143228){console[_0x35b4(0x37)](_0x33462c['uhBHD']);}console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x107)]),GoogleSignin[_0x35b4(0xa5)]({'webClientId':WEB_CLIENT_ID,'iosClientId':IOS_CLIENT_ID,'offlineAccess':!![],'forceCodeForRefreshToken':!![],'scopes':[_0x33462c[_0x35b4(0x108)],_0x33462c[_0x35b4(0x109)],_0x33462c[_0x35b4(0x10a)],_0x33462c[_0x35b4(0x10b)]],'hostedDomain':'','accountName':''}),await GoogleSignin[_0x35b4(0x10c)](),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x10d)]),console[_0x35b4(0x37)](_0x35b4(0x10e)),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x10f)]);const _0x375578=await GoogleSignin[_0x35b4(0x110)]();console[_0x35b4(0x37)](_0x33462c['cNtXZ']),console['log']('๐ค\x20User\x20email:',_0x33462c[_0x35b4(0x111)](_0x4579b7=_0x375578['data'],null)||_0x4579b7===void 0x0||_0x33462c['AjgGJ'](_0x4579b7=_0x4579b7[_0x35b4(0x54)],null)||_0x33462c['SqiKr'](_0x4579b7,void 0x0)?void 0x0:_0x4579b7[_0x35b4(0x58)]);const _0x1e93e3=await GoogleSignin[_0x35b4(0xfd)](),_0x4c122a=await GoogleSignin[_0x35b4(0x112)]();console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x113)]),console[_0x35b4(0x37)](JSON[_0x35b4(0x91)](_0x375578,null,0x2)),console[_0x35b4(0x37)](_0x33462c['SSeNr']),console[_0x35b4(0x37)](JSON[_0x35b4(0x91)](_0x1e93e3,null,0x2)),console[_0x35b4(0x37)](_0x33462c['ccPYG']),console[_0x35b4(0x37)](JSON[_0x35b4(0x91)](_0x4c122a,null,0x2)),console[_0x35b4(0x37)](_0x33462c['QAPJL']),console[_0x35b4(0x37)](_0x33462c['IqFSd'],_0x1e93e3[_0x35b4(0xfe)]?_0x1e93e3[_0x35b4(0xfe)]['substring'](0x0,0x14)+_0x35b4(0x62):_0x33462c[_0x35b4(0x114)]),console[_0x35b4(0x37)](_0x35b4(0x115),_0x1e93e3['idToken']?_0x33462c['xmZye']:_0x33462c['lujzF']),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x116)],(_0x166e8a=_0x375578[_0x35b4(0x57)])!==null&&_0x33462c[_0x35b4(0xf6)](_0x166e8a,void 0x0)&&_0x166e8a[_0x35b4(0x117)]?_0x375578[_0x35b4(0x57)][_0x35b4(0x117)][_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x33462c[_0x35b4(0x114)]),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x118)],_0x33462c[_0x35b4(0xf6)](_0x4c122a,null)&&_0x33462c[_0x35b4(0x119)](_0x4c122a,void 0x0)&&_0x4c122a[_0x35b4(0x117)]?_0x4c122a['serverAuthCode'][_0x35b4(0x4d)](0x0,0x14)+'...':_0x33462c['lujzF']);const _0x4c51ee=(_0x33462c['ktMRa'](_0x2c1d8c=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x11a)](_0x2c1d8c,void 0x0)?void 0x0:_0x2c1d8c[_0x35b4(0x117)])||(_0x33462c[_0x35b4(0xfb)](_0x4c122a,null)||_0x33462c[_0x35b4(0x11b)](_0x4c122a,void 0x0)?void 0x0:_0x4c122a[_0x35b4(0x117)]);if(_0x4c51ee){if(_0x33462c[_0x35b4(0xfb)](_0x33462c[_0x35b4(0x11c)],_0x33462c[_0x35b4(0x11d)]))_0x212707[_0x35b4(0x37)](_0x33462c[_0x35b4(0x11e)]);else{var _0x4d8643,_0x4e1209,_0x263465,_0x265769,_0x51e794,_0x45fe5e;console[_0x35b4(0x37)](_0x33462c['dWiEk']),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x11f)],_0x4c51ee[_0x35b4(0x120)]('4/')?_0x33462c[_0x35b4(0x121)]:_0x33462c[_0x35b4(0x122)]),console[_0x35b4(0x37)](_0x33462c['DKonp'],_0x4c51ee['substring'](0x0,0x14)+_0x35b4(0x62));let _0x217cb5=_0x33462c[_0x35b4(0x123)],_0x5e49dc=null;try{if(_0x33462c[_0x35b4(0x124)]!==_0x33462c['VtzxN'])_0x3b9b54[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x125)]);else{console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x126)]);const _0xf6bb54=await _0x33462c[_0x35b4(0x127)](fetch,_0x33462c['LmtwQ'],{'headers':{'Authorization':_0x35b4(0xa)+_0x1e93e3[_0x35b4(0xfe)],'Accept':'application/json'}});if(_0xf6bb54['ok']){const _0x16997f=await _0xf6bb54['json']();if(_0x16997f[_0x35b4(0x128)]&&_0x33462c['Qsvri'](_0x16997f[_0x35b4(0x128)]['length'],0x0)){if(_0x33462c[_0x35b4(0xf6)](_0x33462c[_0x35b4(0x129)],_0x33462c[_0x35b4(0x12a)]))_0x217cb5=_0x16997f[_0x35b4(0x128)][0x0]['snippet'][_0x35b4(0x12b)],_0x5e49dc=_0x16997f[_0x35b4(0x128)][0x0]['id'],console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x12c)],_0x217cb5,_0x33462c['EzRlD'],_0x5e49dc);else return _0x588c01['error'](_0x35b4(0x12d)),![];}else{if(_0x33462c['oEWMQ'](_0x35b4(0x12e),_0x35b4(0x12f))){var _0x1288e7,_0x45e06a;console['log'](_0x33462c[_0x35b4(0x130)]),_0x217cb5=(_0x33462c[_0x35b4(0x131)](_0x1288e7=_0x375578[_0x35b4(0x57)],null)||_0x1288e7===void 0x0||_0x33462c[_0x35b4(0xfa)](_0x1288e7=_0x1288e7[_0x35b4(0x54)],null)||_0x1288e7===void 0x0?void 0x0:_0x1288e7[_0x35b4(0x55)])||(_0x33462c[_0x35b4(0x132)](_0x45e06a=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x133)](_0x45e06a,void 0x0)||_0x33462c[_0x35b4(0x134)](_0x45e06a=_0x45e06a[_0x35b4(0x54)],null)||_0x45e06a===void 0x0?void 0x0:_0x45e06a[_0x35b4(0x58)])||_0x35b4(0x135);}else return _0x24cf48['error'](_0x33462c[_0x35b4(0x136)],_0x4dd129),![];}}else{if(_0x33462c[_0x35b4(0x137)](_0x35b4(0x138),_0x33462c[_0x35b4(0x139)]))return{'success':![],'message':_0x35b4(0x6a),'details':_0x1db6e7};else{var _0xda3d4d,_0x55a364;console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x13a)],_0xf6bb54[_0x35b4(0x93)]),_0x217cb5=(_0x33462c[_0x35b4(0x131)](_0xda3d4d=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x13b)](_0xda3d4d,void 0x0)||_0x33462c[_0x35b4(0x13c)](_0xda3d4d=_0xda3d4d['user'],null)||_0x33462c[_0x35b4(0x13d)](_0xda3d4d,void 0x0)?void 0x0:_0xda3d4d[_0x35b4(0x55)])||(_0x33462c[_0x35b4(0x137)](_0x55a364=_0x375578['data'],null)||_0x33462c[_0x35b4(0xfa)](_0x55a364,void 0x0)||(_0x55a364=_0x55a364[_0x35b4(0x54)])===null||_0x33462c[_0x35b4(0xf9)](_0x55a364,void 0x0)?void 0x0:_0x55a364[_0x35b4(0x58)])||_0x33462c[_0x35b4(0x123)];}}}}catch(_0x33314a){if(_0x33462c[_0x35b4(0x13e)](_0x35b4(0xce),_0x33462c[_0x35b4(0x13f)]))_0x33cf12[_0x35b4(0x37)]('โ
\x20Refresh\x20token\x20already\x20available');else{var _0x145fe7,_0x4cab7e;console[_0x35b4(0x37)]('โ ๏ธ\x20Error\x20fetching\x20YouTube\x20channel\x20info:',_0x33314a),_0x217cb5=(_0x33462c[_0x35b4(0x132)](_0x145fe7=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x13d)](_0x145fe7,void 0x0)||(_0x145fe7=_0x145fe7[_0x35b4(0x54)])===null||_0x145fe7===void 0x0?void 0x0:_0x145fe7['name'])||(_0x33462c[_0x35b4(0x11a)](_0x4cab7e=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x140)](_0x4cab7e,void 0x0)||_0x33462c[_0x35b4(0x141)](_0x4cab7e=_0x4cab7e[_0x35b4(0x54)],null)||_0x33462c[_0x35b4(0x13d)](_0x4cab7e,void 0x0)?void 0x0:_0x4cab7e[_0x35b4(0x58)])||_0x33462c[_0x35b4(0x123)];}}let _0xc8a7a4=await _0x33462c[_0x35b4(0x142)](getJWT);(!_0xc8a7a4||_0x33462c[_0x35b4(0x143)](_0xc8a7a4[_0x35b4(0x144)]()[_0x35b4(0x145)],0x14))&&(console['log'](_0x33462c[_0x35b4(0x146)]),_0xc8a7a4=_0x33462c['bBmdf']);const _0x534d47={'session':{'username':_0x1a7128,'platform':_0x33462c[_0x35b4(0x147)],'timestamp':new Date()[_0x35b4(0x8d)](),'channelName':_0x217cb5,'channelId':_0x5e49dc,'forceConsent':!![]},'googleUser':(_0x4d8643=_0x375578['data'])===null||_0x4d8643===void 0x0?void 0x0:_0x4d8643[_0x35b4(0x54)],'accessToken':_0x1e93e3['accessToken'],'idToken':_0x1e93e3[_0x35b4(0x148)],'refreshToken':_0x4c51ee,'serverAuthCode':_0x4c51ee,'refresh_token':_0x4c51ee,'server_auth_code':_0x4c51ee,'authCode':_0x4c51ee,'userAccountInfo':{'username':_0x1a7128,'email':_0x33462c[_0x35b4(0xfa)](_0x4e1209=_0x375578[_0x35b4(0x57)],null)||_0x4e1209===void 0x0||_0x33462c[_0x35b4(0xfb)](_0x4e1209=_0x4e1209[_0x35b4(0x54)],null)||_0x4e1209===void 0x0?void 0x0:_0x4e1209[_0x35b4(0x58)],'authToken':_0xc8a7a4,'channelName':_0x217cb5,'channelId':_0x5e49dc,'userIdentifier':_0xc8a7a4?'user-'+_0xc8a7a4[_0x35b4(0x4d)](0x0,0xa):'youtube-'+((_0x263465=_0x375578[_0x35b4(0x57)])===null||_0x33462c[_0x35b4(0x149)](_0x263465,void 0x0)||_0x33462c[_0x35b4(0x13b)](_0x263465=_0x263465[_0x35b4(0x54)],null)||_0x33462c['ZuwJf'](_0x263465,void 0x0)?void 0x0:_0x263465[_0x35b4(0x58)]),'googleId':_0x33462c[_0x35b4(0x14a)](_0x265769=_0x375578[_0x35b4(0x57)],null)||_0x33462c['SVOqU'](_0x265769,void 0x0)||_0x33462c[_0x35b4(0x14b)](_0x265769=_0x265769['user'],null)||_0x33462c[_0x35b4(0x137)](_0x265769,void 0x0)?void 0x0:_0x265769['id'],'refreshToken':_0x4c51ee,'serverAuthCode':_0x4c51ee},'tokenExpiry':new Date(_0x33462c['yZpzv'](Date['now'](),0xe10*0x3e8))[_0x35b4(0x8d)](),'requestRefreshToken':!![],'debugInfo':{'hasRefreshToken':!![],'refreshTokenType':_0x4c51ee['startsWith']('4/')?_0x33462c[_0x35b4(0x121)]:_0x33462c[_0x35b4(0x122)],'configuredForRefresh':!![],'forcedConsent':!![],'consentMethod':_0x33462c[_0x35b4(0x14c)],'refreshTokenValue':_0x4c51ee}};console['log'](_0x33462c[_0x35b4(0x14d)],{'hasAccessToken':!!_0x534d47['accessToken'],'hasRefreshToken':!!_0x534d47[_0x35b4(0x14e)],'hasServerAuthCode':!!_0x534d47[_0x35b4(0x117)],'refreshTokenType':_0x534d47[_0x35b4(0x14f)]['refreshTokenType'],'userEmail':_0x33462c[_0x35b4(0x140)](_0x51e794=_0x375578[_0x35b4(0x57)],null)||_0x33462c['SVOqU'](_0x51e794,void 0x0)||_0x33462c[_0x35b4(0x150)](_0x51e794=_0x51e794[_0x35b4(0x54)],null)||_0x33462c[_0x35b4(0x151)](_0x51e794,void 0x0)?void 0x0:_0x51e794['email'],'forcedConsent':!![]}),console['log'](_0x33462c[_0x35b4(0x152)]),console['log'](_0x33462c[_0x35b4(0x153)]),console[_0x35b4(0x37)]('\uD83D\uDE80 [YOUTUBE REAUTH] Method: POST'),console[_0x35b4(0x37)](_0x35b4(0x154),{'Content-Type':'application/json','Authorization':_0xc8a7a4?_0xc8a7a4['substring'](0x0,0x14)+'...':_0x33462c['kTFgU']}),console['log'](_0x33462c['fLmMX'],{'hasAccessToken':!!_0x534d47[_0x35b4(0xfe)],'hasRefreshToken':!!_0x534d47[_0x35b4(0x14e)],'hasServerAuthCode':!!_0x534d47[_0x35b4(0x117)],'refreshTokenType':_0x534d47[_0x35b4(0x14f)][_0x35b4(0x155)],'userEmail':_0x33462c[_0x35b4(0x134)](_0x45fe5e=_0x375578[_0x35b4(0x57)],null)||_0x33462c[_0x35b4(0x111)](_0x45fe5e,void 0x0)||_0x33462c[_0x35b4(0x132)](_0x45fe5e=_0x45fe5e[_0x35b4(0x54)],null)||_0x33462c[_0x35b4(0x156)](_0x45fe5e,void 0x0)?void 0x0:_0x45fe5e[_0x35b4(0x58)],'channelName':_0x217cb5,'forcedConsent':!![],'requestRefreshToken':!![]}),console[_0x35b4(0x37)](_0x35b4(0x157),JSON[_0x35b4(0x91)](_0x534d47,null,0x2));const _0x43c7e4=await _0x33462c[_0x35b4(0x158)](fetch,API_CONFIG[_0x35b4(0x11)]+'/youtube/native-auth',{'method':'POST','headers':{'Content-Type':'application/json',..._0x33462c['EkDmo'](_0xc8a7a4,{'Authorization':_0xc8a7a4})},'body':JSON[_0x35b4(0x91)](_0x534d47)});console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x159)],_0x43c7e4['status']),console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x15a)],_0x43c7e4[_0x35b4(0x4c)]),console[_0x35b4(0x37)](_0x33462c['jSzVt'],_0x43c7e4['headers']);if(_0x43c7e4['ok']){if(_0x33462c[_0x35b4(0x137)](_0x33462c[_0x35b4(0x15b)],_0x33462c[_0x35b4(0x15c)]))return _0x2258e8[_0x35b4(0x3f)](_0x35b4(0x15d),_0x328c81),_0x2544c0[_0x35b4(0x37)](_0x33462c[_0x35b4(0x15e)]),{'access_token':_0x3b09d9+_0x35b4(0x15f)+_0x6cde83['random']()['toString'](0x24)[_0x35b4(0x4d)](0x7),'refresh_token':_0x3ccb4e+_0x35b4(0x160)+_0x24cb72[_0x35b4(0x161)]()['toString'](0x24)[_0x35b4(0x4d)](0x7),'expires_in':0xe10};else{var _0x4c7578,_0x5f2ef7;const _0x54d955=await _0x43c7e4['json']();console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x162)],JSON[_0x35b4(0x91)](_0x54d955,null,0x2));const _0x67576a=_0x33462c[_0x35b4(0x163)](_0x33462c[_0x35b4(0x164)](_0x4c7578=_0x54d955['validation'],null)||_0x33462c[_0x35b4(0x165)](_0x4c7578,void 0x0)?void 0x0:_0x4c7578[_0x35b4(0x166)],!![])||_0x33462c[_0x35b4(0x167)]((_0x5f2ef7=_0x54d955[_0x35b4(0x168)])===null||_0x5f2ef7===void 0x0?void 0x0:_0x5f2ef7[_0x35b4(0x169)],!![])||_0x54d955['isTemporaryMode']===!![]||_0x54d955[_0x35b4(0x3e)]&&_0x54d955[_0x35b4(0x3e)][_0x35b4(0x9e)](_0x33462c[_0x35b4(0x16a)]);if(_0x67576a){if(_0x33462c['EXuCd'](_0x33462c[_0x35b4(0x16b)],_0x33462c[_0x35b4(0x16c)]))_0xc71b80[_0x35b4(0x37)](_0x35b4(0x5a)+_0x46b1b6[_0x35b4(0x93)]);else{const _0x1daaa0=_0x33462c[_0x35b4(0x16d)][_0x35b4(0x16e)]('|');let _0x4ac29e=0x0;while(!![]){switch(_0x1daaa0[_0x4ac29e++]){case'0':console['log'](_0x35b4(0x16f),_0x4c51ee?_0x35b4(0x170):'No');continue;case'1':console[_0x35b4(0x37)](_0x35b4(0x171));continue;case'2':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x172)]);continue;case'3':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x173)]);continue;case'4':console[_0x35b4(0x37)]('๐\x20[YOUTUBE\x20REAUTH]\x20Training\x20Ready:\x20Yes');continue;case'5':console[_0x35b4(0x37)](_0x33462c['jADnK']);continue;case'6':console[_0x35b4(0x37)](_0x33462c['RYOxL']);continue;}break;}}}else{if(_0x54d955[_0x35b4(0x174)]||_0x54d955[_0x35b4(0x175)]){const _0x4f5ceb=_0x35b4(0x176)[_0x35b4(0x16e)]('|');let _0x1413da=0x0;while(!![]){switch(_0x4f5ceb[_0x1413da++]){case'0':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x177)]);continue;case'1':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x178)]);continue;case'2':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x179)],_0x54d955['hasRefreshToken']);continue;case'3':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x17a)],_0x4c51ee[_0x35b4(0x120)]('4/')?_0x33462c['GkuOW']:_0x33462c[_0x35b4(0x122)]);continue;case'4':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x17b)],_0x4c51ee[_0x35b4(0x145)]);continue;case'5':console[_0x35b4(0x37)]('๐\x20[YOUTUBE\x20REAUTH]\x20Full\x20refresh\x20token:',_0x4c51ee);continue;case'6':console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x17c)]);continue;}break;}}else return _0x33462c[_0x35b4(0x13b)](_0x33462c[_0x35b4(0x17d)],_0x33462c[_0x35b4(0x17d)])?(console[_0x35b4(0x85)](_0x33462c[_0x35b4(0x17e)]),console[_0x35b4(0x85)](_0x35b4(0x17f),_0x54d955),console[_0x35b4(0x85)](_0x33462c[_0x35b4(0x180)]),![]):{'success':![],'error':_0x169115['message']||_0x33462c['LYXWT']};}console[_0x35b4(0x37)](_0x33462c[_0x35b4(0x181)]);try{_0x33462c['ccnnL'](_0x33462c['kHKRZ'],_0x33462c['kHKRZ'])?(await _0x33462c[_0x35b4(0x182)](triggerTrainingRestart,_0x1a7128,_0xc8a7a4),console['log']('โ
\x20[YOUTUBE\x20REAUTH]\x20Training\x20restart\x20signal\x20sent\x20successfully')):_0x2895d3['log'](_0x33462c[_0x35b4(0x183)]);}catch(_0x4ccd46){console['warn'](_0x33462c[_0x35b4(0x184)],_0x4ccd46),console[_0x35b4(0x85)](_0x33462c[_0x35b4(0x185)]);}return!![];}}else{if(_0x33462c['cCHcq'](_0x33462c[_0x35b4(0x186)],_0x33462c['Xtise'])){const _0x2d0886=await _0x43c7e4[_0x35b4(0x48)]();return console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x187)],_0x43c7e4[_0x35b4(0x93)],_0x2d0886),console[_0x35b4(0x3f)](_0x35b4(0x188)),![];}else{const _0x1aef56=_0x33462c[_0x35b4(0x189)][_0x35b4(0x16e)]('|');let _0x44ac3c=0x0;while(!![]){switch(_0x1aef56[_0x44ac3c++]){case'0':_0x5786a7[_0x35b4(0x37)](_0x33462c[_0x35b4(0x177)]);continue;case'1':_0x587a36[_0x35b4(0x37)](_0x33462c[_0x35b4(0x178)]);continue;case'2':_0x34c7f6[_0x35b4(0x37)](_0x35b4(0x18a),_0x10e987[_0x35b4(0x145)]);continue;case'3':_0xc90474[_0x35b4(0x37)](_0x33462c['lEsHH']);continue;case'4':_0x3a8df9['log'](_0x33462c[_0x35b4(0x18b)],_0x424d61);continue;case'5':_0x3a5ab1[_0x35b4(0x37)](_0x33462c[_0x35b4(0x179)],_0x5e6fdf[_0x35b4(0x174)]);continue;case'6':_0x4d8e55['log'](_0x33462c['YXexv'],_0x1b401f[_0x35b4(0x120)]('4/')?_0x33462c[_0x35b4(0x121)]:_0x33462c[_0x35b4(0x122)]);continue;}break;}}}}}else return console[_0x35b4(0x3f)]('โ\x20CRITICAL:\x20No\x20refresh\x20token\x20even\x20after\x20consent\x20screen'),console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x18c)]),console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x18d)]),console[_0x35b4(0x3f)](_0x35b4(0x18e)),console[_0x35b4(0x3f)](_0x35b4(0x18f)),console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x190)]),![];}catch(_0x59004d){console['error'](_0x33462c[_0x35b4(0x191)],_0x59004d);if(_0x33462c[_0x35b4(0x192)](_0x59004d[_0x35b4(0x10)],statusCodes[_0x35b4(0x193)]))console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x194)]),console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x195)]);else{if(_0x59004d[_0x35b4(0x10)]===statusCodes[_0x35b4(0x196)]){if(_0x33462c[_0x35b4(0x119)](_0x33462c[_0x35b4(0x197)],_0x35b4(0x198)))console[_0x35b4(0x3f)](_0x35b4(0x199));else return{'success':![],'message':_0x33462c[_0x35b4(0x19a)],'details':_0x118259};}else _0x33462c['BLNhA'](_0x59004d[_0x35b4(0x10)],statusCodes['PLAY_SERVICES_NOT_AVAILABLE'])&&console[_0x35b4(0x3f)](_0x33462c[_0x35b4(0x125)]);}return![];}};export const forceYouTubeReconnectionWithRevoke=async _0x4eeca7=>{const _0x4e74e0={'OoUXp':_0x35b4(0xef),'qGrMb':function(_0x15406e){return _0x15406e();},'TOeqW':_0x35b4(0x19b),'DJKoo':_0x35b4(0x19c),'DPlpR':'โ
\x20Signed\x20out\x20completely','kzfjx':function(_0x5e5ec4,_0x507193){return _0x5e5ec4===_0x507193;},'mOPfG':function(_0x57281f,_0x5a6ba0){return _0x57281f===_0x5a6ba0;},'LsYWj':_0x35b4(0x19d),'xzvmC':_0x35b4(0x19e)};try{var _0x5660fe;console[_0x35b4(0x37)]('๐\x20FORCING\x20YouTube\x20consent\x20via\x20REVOKE\x20method...'),console['log'](_0x4e74e0[_0x35b4(0x19f)],_0x4eeca7),_0x4e74e0[_0x35b4(0x1a0)](initializeGoogleSignIn),await GoogleSignin[_0x35b4(0x10c)]();try{await GoogleSignin['revokeAccess'](),console[_0x35b4(0x37)](_0x4e74e0['TOeqW']);}catch(_0x366a69){console[_0x35b4(0x37)](_0x4e74e0[_0x35b4(0x1a1)],_0x366a69);}await GoogleSignin[_0x35b4(0xf0)](),console['log'](_0x4e74e0['DPlpR']),console[_0x35b4(0x37)]('๐\x20Signing\x20in\x20after\x20revoke\x20-\x20consent\x20screen\x20MUST\x20appear...');const _0x98f89c=await GoogleSignin[_0x35b4(0x110)](),_0x233619=await GoogleSignin[_0x35b4(0xfd)](),_0x14b955=await GoogleSignin[_0x35b4(0x112)](),_0x33dc12=(_0x4e74e0['kzfjx'](_0x5660fe=_0x98f89c[_0x35b4(0x57)],null)||_0x4e74e0[_0x35b4(0x1a2)](_0x5660fe,void 0x0)?void 0x0:_0x5660fe[_0x35b4(0x117)])||(_0x14b955===null||_0x14b955===void 0x0?void 0x0:_0x14b955[_0x35b4(0x117)]);return _0x33dc12?(console[_0x35b4(0x37)](_0x4e74e0[_0x35b4(0x1a3)]),console[_0x35b4(0x37)]('๐\x20Refresh\x20token\x20preview:',_0x33dc12[_0x35b4(0x4d)](0x0,0x14)+'...'),!![]):(console['error'](_0x4e74e0[_0x35b4(0x1a4)]),![]);}catch(_0x3f66cc){return console['error'](_0x35b4(0x1a5),_0x3f66cc),![];}};export const fixUserYouTubeConnection=async _0x3ef935=>{const _0x1a3c96={'hTKFq':'auth/callback','pjcdw':_0x35b4(0x1a6),'imYqa':_0x35b4(0x1a7),'kQpcW':function(_0x3d520a,_0x25dad7){return _0x3d520a(_0x25dad7);},'jnWHp':'๐\x20Method\x202:\x20Trying\x20forced\x20consent\x20via\x20revoke...','IRWXJ':function(_0x331706,_0xc28a24){return _0x331706!==_0xc28a24;},'oukZk':_0x35b4(0x1a8)};console[_0x35b4(0x37)](_0x35b4(0x1a9)+_0x3ef935),console[_0x35b4(0x37)](_0x1a3c96[_0x35b4(0x1aa)]);let _0x16e874=await _0x1a3c96[_0x35b4(0x1ab)](forceYouTubeReconnectionWithConsent,_0x3ef935);if(_0x16e874)return console['log']('โ
\x20'+_0x3ef935+_0x35b4(0x1ac)),!![];console[_0x35b4(0x37)](_0x1a3c96[_0x35b4(0x1ad)]),_0x16e874=await _0x1a3c96[_0x35b4(0x1ab)](forceYouTubeReconnectionWithRevoke,_0x3ef935);if(_0x16e874)return _0x1a3c96[_0x35b4(0x1ae)](_0x1a3c96[_0x35b4(0x1af)],_0x35b4(0x1b0))?(console['log']('โ
\x20'+_0x3ef935+'\x20YouTube\x20connection\x20fixed\x20via\x20Method\x202!'),!![]):_0x10698c['includes'](_0x1a3c96[_0x35b4(0x1b1)])||_0x22dbdf[_0x35b4(0x9e)](_0x1a3c96[_0x35b4(0x1b2)]);return console[_0x35b4(0x3f)](_0x35b4(0x1b3)+_0x3ef935+_0x35b4(0x1b4)),![];};function _0x276e(){const _0x12b80c=['SDK\x20not\x20initialized.\x20Developers\x20must\x20call\x20initializeApiKey()\x20before\x20using\x20auth\x20features.','No\x20API\x20key\x20configured.\x20Please\x20initialize\x20the\x20SDK\x20with\x20a\x20valid\x20developer\x20API\x20key.','3.0.72','uJIBj','sCikj','fIUSU','LWhfs','apiKey','FYdLI','ThBvK','Bearer\x20','MsIqH','1030678346906-lovkuds2ouqmoc8eu5qpo98spa6edv4o.apps.googleusercontent.com','https://api.instagram.com/oauth/authorize','demo_instagram_client_id','user_profile,user_media','code','BASE_URL','/youtube/authorize','https://www.googleapis.com/auth/youtube.readonly','/reddit/authorize','demo_reddit_client_id','onairosevents://auth/callback','identity,read','/pinterest/authorize','demo_pinterest_client_id','boards:read,pins:read','https://www.facebook.com/v12.0/dialog/oauth','demo_facebook_client_id','public_profile,email','/linkedin/authorize','openid\x20profile\x20email','demo_gmail_client_id','https://www.googleapis.com/auth/gmail.readonly','/email/authorize','https://chat.openai.com','https://claude.ai/login','https://gemini.google.com','hasNativeSDK','โ ๏ธ\x20No\x20YouTube\x20channel\x20found\x20for\x20user','nOLCL','https://www.google.com','HEAD','reachable','โ
\x20[CONNECTIVITY]\x20Google\x20is\x20reachable\x20-\x20internet\x20is\x20working','๐\x20[CONNECTIVITY]\x20Test\x202:\x20Checking\x20API\x20server...','GwNDk','โ\x20[CONNECTIVITY]\x20Cannot\x20reach\x20API\x20server:','LaIvk','API\x20is\x20reachable','QuAIv','qYlDs','TDwgv','CNQar','TQpeI','log','๐\x20[CONNECTIVITY]\x20Running\x20comprehensive\x20network\x20diagnostics...','IYzth','LXBLm','TvoVi','MjmuK','no-cors','message','error','โ\x20[CONNECTIVITY]\x20Cannot\x20reach\x20Google\x20-\x20internet\x20may\x20be\x20down:','wSrPR','geXLR','YYOSr','NhxcZ','abort','signal','uAWXH','text','catch','Unable\x20to\x20read\x20response','api2Test','statusText','substring','NRpYJ','zBWGB','iEBvT','nYEFv','vSgbt','NeVBe','user','name','ueqYq','data','email','qgDDm','โ ๏ธ\x20[CONNECTIVITY]\x20API\x20server\x20responded\x20with\x20status:\x20','zouet','Network\x20error:\x20','zZXTW','pvvHK','success','RBJoM','KiXHL','...','googleTest','EDCCn','mVJQv','Email\x20verified\x20successfully','existingUser','token','pBvad','No\x20internet\x20connectivity\x20detected.\x20Check\x20your\x20network\x20connection.','tLUyj','BfPbU','โน๏ธ\x20Token\x20clearing\x20failed\x20or\x20not\x20needed:','๐\x20[YOUTUBE\x20AUTH]\x20Response\x20data\x20keys:','๐ง\x20[OAUTH]\x20Email\x20platform\x20selected,\x20returning\x20mock\x20auth\x20URL','NQEiV','AbortError','Network\x20request\x20failed','3|0|1|2|5|4','\x20\x20\x201.\x20No\x20internet\x20connection\x20on\x20device/simulator','\x20\x20\x202.\x20API\x20server\x20(API\x20server)\x20is\x20unreachable','\x20\x20\x203.\x20DNS\x20resolution\x20failed','\x20\x20\x205.\x20iOS\x20simulator\x20network\x20sandbox\x20issue\x20-\x20try\x20on\x20physical\x20device','\x20\x20\x204.\x20SSL/TLS\x20certificate\x20issue','๐\x20[OAUTH]\x20Starting\x20OAuth\x20for\x20platform:\x20','๐ฑ\x20[OAUTH]\x20Platform:\x20',',\x20Version:\x20','Version','QIoRe','/email/authorize?action=verify','yQnmG','WiPxg','APLVA','ZWODh','JuiRb','โ ๏ธ\x20[YOUTUBE\x20AUTH]\x20Backend\x20did\x20not\x20confirm\x20refresh\x20token','warn','Tovju','keys','โ ๏ธ\x20[YOUTUBE\x20AUTH]\x20Connection\x20may\x20fail\x20when\x20tokens\x20expire','โ\x20[OAUTH]\x20User\x20not\x20authenticated\x20-\x20cannot\x20initiate\x20','\x20OAuth','โ\x20[OAUTH]\x20Please\x20log\x20in\x20first\x20before\x20connecting\x20platforms','๐\x20[OAUTH]\x20About\x20to\x20make\x20fetch\x20request...','toISOString','๐ค\x20[OAUTH]\x20Request\x20body:','โฐ\x20[OAUTH]\x20Request\x20timeout\x20for\x20','\x20-\x20aborting','stringify','๐ก\x20[OAUTH]\x20Response\x20status:\x20','status','โ\x20[OAUTH]\x20Error\x20initiating\x20OAuth\x20for\x20','\x20-\x20','json','๐\x20[OAUTH]\x20Response\x20data\x20for\x20','URL','url','๐\x20[OAUTH]\x20Auth\x20URL\x20for\x20','QzaNZ','โ\x20[OAUTH]\x20Request\x20timeout\x20for\x20','\x20-\x20the\x20server\x20took\x20too\x20long\x20to\x20respond','includes','nQjks','XQCvT','JEQqd','BFyzC','.\x20Possible\x20causes:','IllVi','configure','ctWgp','Ulrmy','kxNSw','โ ๏ธ\x20Error\x20fetching\x20YouTube\x20channel\x20info:','Unknown\x20Channel','Facebook\x20Login\x20completed\x20successfully','Initiating\x20Facebook\x20Login\x20for\x20Instagram','โ\x20Google\x20Play\x20Services\x20not\x20available','โ\x20YouTube\x20reconnection\x20error:','Invalid\x20verification\x20code','0|5|3|1|4|6|2','โ
\x20[YOUTUBE\x20REAUTH]\x20Backend\x20CONFIRMED\x20refresh\x20token\x20received','๐\x20[YOUTUBE\x20REAUTH]\x20Full\x20refresh\x20token:','๐\x20[YOUTUBE\x20REAUTH]\x20Refresh\x20token\x20type:','Internet\x20works\x20but\x20API\x20server\x20is\x20unreachable.\x20The\x20server\x20may\x20be\x20blocking\x20requests\x20from\x20this\x20device/simulator.','๐\x20FORCING\x20fresh\x20YouTube\x20consent\x20for\x20refresh\x20token...','โ
\x20Signed\x20out\x20-\x20consent\x20cache\x20cleared','โน๏ธ\x20Sign\x20out\x20not\x20needed:','QaXdj','โ
\x20Token\x20cache\x20cleared','openid','๐ฑ\x20User\x20should\x20see:\x20\x22Allow\x20[App]\x20to\x20access\x20your\x20YouTube\x20account\x20when\x20you\x27re\x20not\x20using\x20the\x20app?\x22','โ
\x20Sign-in\x20completed\x20-\x20checking\x20for\x20refresh\x20token...','๐\x20FULL\x20userInfo\x20object\x20from\x20forceYouTubeReconnectionWithConsent:','๐\x20FULL\x20tokens\x20object\x20from\x20forceYouTubeReconnectionWithConsent:','๐\x20FULL\x20currentUser\x20object\x20from\x20forceYouTubeReconnectionWithConsent:','Missing','-\x20ServerAuthCode\x20(userInfo):','-\x20ServerAuthCode\x20(currentUser):','uOWhV','โ
\x20SUCCESS:\x20Got\x20refresh\x20token\x20after\x20consent!','๐\x20Refresh\x20token\x20type:','๐\x20Refresh\x20token\x20preview:','muGuO','๐บ\x20Fetching\x20YouTube\x20channel\x20information...','https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true','CGEIe','mxOJV','โ
\x20YouTube\x20channel\x20found:','โ ๏ธ\x20Failed\x20to\x20fetch\x20YouTube\x20channel\x20info:','FJSDG','๐\x20Creating\x20authentication\x20token\x20for\x20YouTube\x20connection...','temp_token_for_youtube_connection','youtube','๐\x20[YOUTUBE\x20REAUTH]\x20=====\x20SENDING\x20REAUTH\x20SIGNAL\x20TO\x20BACKEND\x20=====','๐\x20[YOUTUBE\x20REAUTH]\x20Endpoint:\x20https://API\x20server/youtube/native-auth','NO\x20AUTH\x20TOKEN','๐\x20[YOUTUBE\x20REAUTH]\x20Payload\x20Summary:','๐ก\x20[YOUTUBE\x20REAUTH]\x20Response\x20Status:','๐ก\x20[YOUTUBE\x20REAUTH]\x20Response\x20Status\x20Text:','๐ก\x20[YOUTUBE\x20REAUTH]\x20Response\x20Headers:','GwvSF','TXcbq','temporary\x20access\x20token\x20mode','ViYQr','lScir','2|1|3|6|5|4|0','๐\x20[YOUTUBE\x20REAUTH]\x20YouTube\x20connected\x20in\x20temporary\x20mode','๐\x20[YOUTUBE\x20REAUTH]\x20Connection\x20Details:','qAGQe','โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20Expected\x20hasRefreshToken\x20or\x20refreshTokenReceived\x20in\x20response','๐\x20[YOUTUBE\x20REAUTH]\x20Signaling\x20training\x20system\x20to\x20restart...','AYpIr','โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20Training\x20restart\x20signal\x20failed:','โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20User\x20may\x20need\x20to\x20manually\x20restart\x20training','Rcwez','โ\x20[YOUTUBE\x20REAUTH]\x20Backend\x20processing\x20FAILED:','โ\x20This\x20means\x20consent\x20screen\x20did\x20not\x20appear\x20or\x20user\x20denied\x20permissions','โ\x20Error\x20forcing\x20YouTube\x20consent:','โ\x20User\x20cancelled\x20sign-in\x20-\x20no\x20refresh\x20token\x20obtained','๐ก\x20User\x20must\x20click\x20\x22Allow\x22\x20to\x20get\x20refresh\x20token','luJsQ','kFCbN','๐ค\x20User:','signOut','BHYnz','aXDiP','CslGk','FSJvK','iFQjU','xpDqw','ZvQww','ilHtB','tDADA','jspJR','bXeKT','jMfSO','getTokens','accessToken','NWwcX','clearCachedAccessToken','gwynU','IpxHD','plKfd','fAWQA','gpBSb','BptAs','MJKWs','HrVUf','gGRnf','hswkJ','Gmvwb','hasPlayServices','JlUzN','๐\x20Initiating\x20sign-in\x20-\x20consent\x20screen\x20should\x20appear...','XxykM','signIn','iCpRv','getCurrentUser','IAxuy','lujzF','-\x20ID\x20token:','yAdSw','serverAuthCode','yXmnw','scEkn','ktMRa','fZCYy','BifNv','PIuUm','yIMsi','GANCW','startsWith','GkuOW','zZgDx','wRCDI','VtzxN','HOJVu','tEHYm','VhKvc','items','rOeLD','tGxuq','title','xceFx','โ\x20YouTube\x20reconnection\x20failed','VUhuZ','yBPDG','WWiiF','suOaA','jucaU','yBVkl','SqiKr','No\x20Channel','ZQSDy','IPHQe','zjifN','QVaNr','pybeS','paIXV','CZALF','fsZcy','oEWMQ','DbNBu','AjgGJ','tncRW','RfjUM','PulxW','trim','length','vTQzV','VWyBg','idToken','zEpxS','WzIhE','gVDxm','zgdlf','KaFcx','refreshToken','debugInfo','XRXks','mNoTn','owuPa','mxpXR','๐\x20[YOUTUBE\x20REAUTH]\x20Headers:','refreshTokenType','HWswu','๐\x20[YOUTUBE\x20REAUTH]\x20FULL\x20PAYLOAD:','FhbQn','IMwCW','YcSdp','OcMht','bTvWD','Error\x20exchanging\x20code\x20for\x20token:','GAorj','_access_token_','_refresh_token_','random','MHLhd','YPEOq','GEyam','AphPv','isTemporaryMode','IIUyN','temporaryMode','enabled','HpKNz','DSRyY','PHZEo','AVSme','split','๐\x20[YOUTUBE\x20REAUTH]\x20Refresh\x20token\x20sent:','Yes','โ
\x20[YOUTUBE\x20REAUTH]\x20Training\x20will\x20work,\x20but\x20connection\x20expires\x20in\x20~1\x20hour','Fizkp','hkUeX','hasRefreshToken','refreshTokenReceived','0|2|6|1|5|3|4','ausEH','XspLR','kFACL','YXexv','oOirT','lEsHH','cqEUd','hGIxo','โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20Response\x20data:','kEoTz','nIXhI','gyNJv','DwqlU','oeCPW','aJJbb','Xtise','ZGVfN','โ\x20[YOUTUBE\x20REAUTH]\x20This\x20means\x20the\x20reauth\x20signal\x20was\x20not\x20processed','wexAP','๐\x20[YOUTUBE\x20REAUTH]\x20Refresh\x20token\x20length:','jgRCK','BfVbw','TmKws','\x20\x20\x201.\x20Try\x20the\x20revoke\x20method:\x20forceYouTubeReconnectionWithRevoke()','\x20\x20\x202.\x20Check\x20Google\x20Console\x20OAuth\x20configuration','bGuoK','BbvSb','lfysJ','SIGN_IN_CANCELLED','oczsJ','nOfGA','IN_PROGRESS','SUKaR','jpnDo','โ\x20Sign-in\x20already\x20in\x20progress','RrRPp','โ
\x20Revoked\x20existing\x20permissions\x20-\x20fresh\x20consent\x20REQUIRED','โน๏ธ\x20No\x20existing\x20permissions\x20to\x20revoke:','โ
\x20SUCCESS:\x20Got\x20refresh\x20token\x20after\x20REVOKE\x20+\x20consent!','โ\x20Still\x20no\x20refresh\x20token\x20after\x20revoke\x20method','OoUXp','qGrMb','DJKoo','mOPfG','LsYWj','xzvmC','โ\x20Error\x20with\x20revoke\x20method:','code=','๐\x20Method\x201:\x20Trying\x20forced\x20consent\x20via\x20configuration...','aKjMG','๐ง\x20Fixing\x20YouTube\x20connection\x20for\x20user:\x20','imYqa','kQpcW','\x20YouTube\x20connection\x20fixed\x20via\x20Method\x201!','jnWHp','IRWXJ','oukZk','DTwVX','hTKFq','pjcdw','โ\x20Failed\x20to\x20fix\x20','\x20YouTube\x20connection\x20with\x20both\x20methods','โน๏ธ\x20No\x20valid\x20authentication\x20token\x20found\x20for\x20YouTube\x20connection','โน๏ธ\x20User\x20should\x20authenticate\x20first\x20via\x20Google/Apple/Email\x20before\x20connecting\x20YouTube','โ
\x20Successfully\x20refreshed\x20Google\x20tokens','โ\x20Failed\x20to\x20refresh\x20Google\x20tokens:','โ
\x20Re-authentication\x20successful','โ\x20Re-authentication\x20also\x20failed:','๐\x20Attempting\x20to\x20refresh\x20Google\x20tokens...','โ\x20User\x20not\x20signed\x20in\x20to\x20Google,\x20cannot\x20refresh\x20tokens','mcRMZ','sopOh','cEANq','csxby','XudMA','๐\x20Refresh\x20failed,\x20attempting\x20re-authentication...','SvPVH','VKMvG','โน๏ธ\x20NOTE:\x20SDK\x20does\x20not\x20create\x20users\x20during\x20YouTube\x20connection','BnKXF','KeeAj','pTYuL','โ ๏ธ\x20[YOUTUBE\x20REAUTH]\x20Backend\x20did\x20NOT\x20confirm\x20refresh\x20token\x20reception','HfUwS','๐\x20YouTube\x20Token\x20Debug:','none','โ\x20Debug\x20tokens\x20failed:','crzMI','Present','aGtdb','MRUfC','TGhJH','tynIM','OhOQK','bccAy','xFmUm','DdABy','sgdpY','niOUg','โ\x20Error\x20refreshing\x20YouTube\x20tokens:','EwTgH','๐\x20Forcing\x20fresh\x20YouTube\x20reconnection\x20for\x20refresh\x20token...','uEOWf','โน๏ธ\x20Already\x20signed\x20out\x20or\x20sign\x20out\x20failed:','vwlMj','CByWx','gzXsR','โ
\x20YouTube\x20reconnected\x20successfully\x20with\x20refresh\x20token','โ ๏ธ\x20Still\x20no\x20refresh\x20token\x20after\x20reconnection','smZVQ','bmLUK','oSLyI','โ
\x20Signed\x20out\x20from\x20Google','tHpMp','nSBaB','CUvTj','PCKGA','zLCkE','pLKmS','PtrlD','CSXfx','TRnEa','pUXBr','โ
\x20Cleared\x20cached\x20access\x20token','zeEtv','bmZmz','WypEh','YwYRF','gslPp','tfSPY','POmIs','xVeDJ','mlLVH','bACpY','aNgfg','yRArK','snippet','GfCHi','Fnryd','wCEeD','DcqpW','CtpLn','pcbNj','LTdVc','tkNpw','zEhnq','CNgPu','GcUEq','ACrTm','AzTFo','โ\x20[TRAINING\x20RESTART]\x20Error\x20triggering\x20training\x20restart:','โ\x20CRITICAL:\x20No\x20refresh\x20token\x20even\x20after\x20consent\x20screen','\x20\x20\x203.\x20Ensure\x20user\x20clicks\x20\x22Allow\x22\x20on\x20consent\x20screen','๐ก\x20Solutions:','โน๏ธ\x20No\x20token\x20cache\x20to\x20clear','Failed\x20to\x20send\x20verification\x20code','โ\x20[YOUTUBE\x20AUTH]\x20Username\x20is\x20required\x20for\x20YouTube\x20authentication','๐\x20Initiating\x20native\x20Google\x20Sign-In\x20for\x20YouTube','๐\x20Signed\x20out\x20to\x20force\x20fresh\x20consent','UZguv','โน๏ธ\x20Sign\x20out\x20not\x20needed\x20or\x20failed:','๐\x20FULL\x20tokens\x20object:','๐\x20FULL\x20currentUser\x20object:','-\x20currentUser?.serverAuthCode:','-\x20tokens.accessToken:','XLGGJ','โ\x20CRITICAL:\x20No\x20refresh\x20token\x20available\x20-\x20YouTube\x20connection\x20will\x20fail\x20when\x20token\x20expires','โ ๏ธ\x20Continuing\x20without\x20refresh\x20token\x20-\x20connection\x20may\x20fail\x20later','Fnxyc','ID:','MxwEf','tqFQM','gavZa','โ
\x20Found\x20existing\x20authentication\x20token\x20for\x20YouTube\x20auth','๐\x20Token\x20preview:','๐\x20Linking\x20YouTube\x20data\x20to\x20user:','๐บ\x20YouTube\x20channel\x20name:','apple','๐ค\x20BACKEND\x20PAYLOAD\x20SUMMARY:','-\x20hasRefreshToken:','-\x20refreshTokenType:','-\x20userEmail:','-\x20channelName:','๐ค\x20Sending\x20YouTube\x20auth\x20to\x20backend\x20with\x20refresh\x20token:','๐ก\x20Backend\x20response\x20status:','๐\x20COMPLETE\x20BACKEND\x20RESPONSE:','LPIcE','๐\x20[YOUTUBE\x20AUTH]\x20YouTube\x20connected\x20in\x20temporary\x20mode','โ
\x20[YOUTUBE\x20AUTH]\x20Training\x20will\x20work,\x20but\x20connection\x20expires\x20in\x20~1\x20hour','โน๏ธ\x20[YOUTUBE\x20AUTH]\x20User\x20can\x20reconnect\x20later\x20for\x20refresh\x20tokens\x20if\x20needed','rojWF','โ\x20YouTube\x20auth\x20failed:','โ\x20Google\x20Sign-In\x20error:','User\x20cancelled\x20Google\x20Sign-In','EtByo','Google\x20Sign-In\x20already\x20in\x20progress','Google\x20Play\x20Services\x20not\x20available','koYkQ','zhbQa','HMcJJ','vRJng','elAEM','RVBSH','โ
\x20Google\x20Sign-In\x20successful:','JqbMr','bDdwp','qcKRE','๐\x20Got\x20Google\x20tokens','NCGIL','๐ค\x20Current\x20user\x20info:','EuwQe','PZBIN','๐\x20REFRESH\x20TOKEN\x20EXTRACTION:','-\x20userInfo.data?.serverAuthCode:','gOXCQ','dFMsi','-\x20tokens.idToken:','RBdYI','Present:\x20','โ
\x20Got\x20serverAuthCode\x20(refresh\x20token\x20mechanism)','DkzlY','FSPUD','MZAIx','ByDJN','hqAgr','๐ก\x20User\x20needs\x20to\x20reconnect\x20with\x20proper\x20consent\x20screen','๐ก\x20Check\x20Google\x20Sign-In\x20configuration:\x20offlineAccess,\x20forceCodeForRefreshToken','SyjeR','WWsmP','MjphR','FdWKu','cCUbT','TCBtj','TEQTn','LUoib','tZNxx','XnuHc','RGhlL','uoiBE','vroWR','bhgEe','ufmcy','CrFIK','kKiyk','eHgpI','PxwIS','HmBfL','jUKvK','CNIib','dXTFx','OMkrN','IulEF','FyUvx','ciPLt','XsXfX','lzzPO','oyxQY','CDthw','rCXVL','youtube_user','dMWpi','jjFVz','yanPb','Ggzpz','zXaMt','QACaZ','jqwir','TfXgL','FcXqC','No\x20token','fVJIx','dabRN','SqQbq','youtube-','aFYII','ImAGN','lhvDK','CMrrw','Wubmt','DYkRV','now','cFGKk','UMvHH','-\x20hasAccessToken:','eIQVR','-\x20hasServerAuthCode:','xYejQ','ryHnH','NmSBs','QeODI','Ijzia','/youtube/native-auth','zCDhX','gbkmo','IYEyw','validation','PylAA','NHFis','VaQUC','cBHHC','OsYBU','KKwHJ','GXICZ','โ
\x20[YOUTUBE\x20AUTH]\x20Full\x20YouTube\x20connection\x20with\x20persistent\x20access','EoTmo','WDoiS','abiWm','IuRRu','๐\x20BACKEND\x20ERROR\x20RESPONSE:','JTmGq','qcuBe','IGnHo','CPPdY','DHBxn','VsLrA','WgVzb','xXSui','auth/callback','dOycH','Falling\x20back\x20to\x20simulated\x20token\x20response','Exchanging\x20code\x20for\x20token\x20for\x20platform:\x20','/token','sYuNN','Error\x20exchanging\x20code\x20for\x20token:\x20','Token\x20exchange\x20successful\x20for\x20','wwoJB','JTSne','toString','TtECd','โ\x20No\x20current\x20Google\x20user\x20found','โ
\x20YouTube\x20tokens\x20refreshed\x20successfully:','๐\x20Refreshing\x20YouTube\x20tokens...','โ\x20Failed\x20to\x20get\x20fresh\x20tokens\x20from\x20Google\x20SDK','CjZkf','SxYIz','KItNT','/youtube/refresh-token','OIpWL','szLFX','jXvBX','XqIWe','egyVK','RKKQB','โ
\x20Got\x20serverAuthCode\x20from\x20sign-in\x20response','Network\x20error.\x20Please\x20check\x20your\x20connection\x20and\x20try\x20again.','โ
\x20[TRAINING\x20RESTART]\x20Training\x20restart\x20successful:','โ\x20[TRAINING\x20RESTART]\x20Training\x20restart\x20failed:','JxFAF','Vqgbk','IHwAt','๐\x20[TRAINING\x20RESTART]\x20Triggering\x20training\x20restart\x20for\x20user:','/mobile-training/restart','wZkSY','ktVRt','NnYlC','Training\x20restart\x20failed:\x20','JqDiq','tOvmS','yZWGa','UKjqf','๐\x20Current\x20token\x20status:','SPckY','๐\x20New\x20token\x20status:','โ\x20Failed\x20to\x20fix\x20YouTube\x20connection','โ\x20Error\x20testing\x20YouTube\x20refresh\x20token:','๐งช\x20Testing\x20YouTube\x20refresh\x20token\x20functionality...','ZYGrl','gszly','VBmnT','odqyP','eGaMo','โ ๏ธ\x20No\x20refresh\x20token\x20found\x20-\x20attempting\x20to\x20fix...','dbqeS','eJHjo','sioyO','oDcyP','qHxlO','seTqQ','AVSTm','iMuPK','YIBlL','request','kgAHn','๐ง\x20Requesting\x20email\x20verification\x20for:','/email/verification','Verification\x20code\x20sent\x20to\x20your\x20email','rlrVP','PMVZp','yOhMc','UBuSW','cWxWT','โ\x20Error\x20verifying\x20email\x20code:','๐\x20Verifying\x20email\x20code\x20for:','xhFYX','verify','sixNw','vUvEj','โ\x20Error\x20checking\x20email\x20verification\x20status:','Njtwt','/email/verification/status','isPending','vlUrt','Network\x20error','๐ง\x20Platform\x20auth\x20service\x20initialized','OuShz'];_0x276e=function(){return _0x12b80c;};return _0x276e();}const refreshGoogleTokens=async()=>{const _0x4b3921={'VKMvG':_0x35b4(0x1b5),'BnKXF':_0x35b4(0x1b6),'pTYuL':'โ\x20No\x20current\x20Google\x20user\x20found','mcRMZ':_0x35b4(0x1b7),'sopOh':function(_0x677b2e,_0x1ec660){return _0x677b2e!==_0x1ec660;},'csxby':_0x35b4(0x1b8),'XudMA':'EInJT','SvPVH':_0x35b4(0x1b9),'KeeAj':_0x35b4(0x1ba)};try{console[_0x35b4(0x37)](_0x35b4(0x1bb));const _0x18bb73=await GoogleSignin[_0x35b4(0x112)]();if(!_0x18bb73)return console[_0x35b4(0x37)](_0x35b4(0x1bc)),null;const _0x52ed5f=await GoogleSignin[_0x35b4(0xfd)]();return console[_0x35b4(0x37)](_0x4b3921[_0x35b4(0x1bd)]),{'accessToken':_0x52ed5f[_0x35b4(0xfe)],'idToken':_0x52ed5f[_0x35b4(0x148)]};}catch(_0x3447fc){if(_0x4b3921[_0x35b4(0x1be)]('HVrmi',_0x35b4(0x1bf))){console[_0x35b4(0x3f)](_0x4b3921[_0x35b4(0x1c0)],_0x3447fc);try{if('veizl'!==_0x4b3921[_0x35b4(0x1c1)]){console[_0x35b4(0x37)](_0x35b4(0x1c2));const _0x35f877=await GoogleSignin[_0x35b4(0x110)](),_0x50e85f=await GoogleSignin[_0x35b4(0xfd)]();return console[_0x35b4(0x37)](_0x4b3921[_0x35b4(0x1c3)]),{'accessToken':_0x50e85f[_0x35b4(0xfe)],'idToken':_0x50e85f['idToken']};}else _0x2f14e[_0x35b4(0x37)](_0x4b3921[_0x35b4(0x1c4)]),_0x2748af[_0x35b4(0x37)](_0x35b4(0x1c5)),_0x2906de['log'](_0x4b3921[_0x35b4(0x1c6)]);}catch(_0x16b663){return console[_0x35b4(0x3f)](_0x4b3921[_0x35b4(0x1c7)],_0x16b663),null;}}else return _0x13a052[_0x35b4(0x3f)](_0x4b3921[_0x35b4(0x1c8)]),![];}},debugYouTubeTokens=async()=>{const _0x242ebd={'DdABy':_0x35b4(0x1c9),'sgdpY':_0x35b4(0x17f),'CLVrJ':_0x35b4(0x1ca),'crzMI':_0x35b4(0x1cb),'OhOQK':_0x35b4(0xc0),'aGtdb':function(_0x27a760,_0x33bfc5){return _0x27a760!==_0x33bfc5;},'FhIka':function(_0x349431,_0x4f36b2){return _0x349431===_0x4f36b2;},'MRUfC':function(_0x501618,_0x5b337f){return _0x501618===_0x5b337f;},'TGhJH':function(_0x50c836,_0x32706c){return _0x50c836===_0x32706c;},'tynIM':function(_0x280585,_0x2672e5){return _0x280585===_0x2672e5;},'bccAy':_0x35b4(0x117),'xFmUm':_0x35b4(0x1cc),'esRiC':_0x35b4(0x1cd),'niOUg':_0x35b4(0x3f)};try{if(_0x242ebd['CLVrJ']!=='vHyra'){var _0x36500f;const _0x124abf=await GoogleSignin['getTokens'](),_0x481cfa=await GoogleSignin[_0x35b4(0x112)]();return console['log'](_0x242ebd[_0x35b4(0x1ce)],{'accessToken':_0x124abf[_0x35b4(0xfe)]?_0x124abf[_0x35b4(0xfe)][_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x242ebd['OhOQK'],'idToken':_0x124abf[_0x35b4(0x148)]?_0x35b4(0x1cf):_0x35b4(0xc0),'serverAuthCode':_0x481cfa!==null&&_0x242ebd[_0x35b4(0x1d0)](_0x481cfa,void 0x0)&&_0x481cfa['serverAuthCode']?_0x481cfa['serverAuthCode'][_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x35b4(0xc0),'userEmail':(_0x242ebd['FhIka'](_0x481cfa,null)||_0x242ebd[_0x35b4(0x1d1)](_0x481cfa,void 0x0)||_0x242ebd[_0x35b4(0x1d2)](_0x36500f=_0x481cfa[_0x35b4(0x54)],null)||_0x242ebd[_0x35b4(0x1d3)](_0x36500f,void 0x0)?void 0x0:_0x36500f[_0x35b4(0x58)])||_0x242ebd[_0x35b4(0x1d4)]}),{'hasRefreshToken':!!(_0x242ebd[_0x35b4(0x1d0)](_0x481cfa,null)&&_0x242ebd['aGtdb'](_0x481cfa,void 0x0)&&_0x481cfa[_0x35b4(0x117)]),'refreshTokenType':_0x242ebd['aGtdb'](_0x481cfa,null)&&_0x481cfa!==void 0x0&&_0x481cfa[_0x35b4(0x117)]?_0x242ebd[_0x35b4(0x1d5)]:_0x242ebd[_0x35b4(0x1d6)]};}else return _0x4d21cd[_0x35b4(0x85)](_0x242ebd[_0x35b4(0x1d7)]),_0x42f937[_0x35b4(0x85)](_0x242ebd[_0x35b4(0x1d8)],_0x49acf7),_0xaa0920[_0x35b4(0x85)](_0x35b4(0xe2)),![];}catch(_0x1870e4){return console[_0x35b4(0x3f)](_0x242ebd['esRiC'],_0x1870e4),{'hasRefreshToken':![],'refreshTokenType':_0x242ebd[_0x35b4(0x1d9)]};}};export const reconnectYouTube=async _0x36fc7a=>{const _0x5e1a8b={'GbnSY':_0x35b4(0x1a5),'PtrlD':'Google\x20Sign-In\x20already\x20in\x20progress','tfSPY':_0x35b4(0x1da),'aNgfg':_0x35b4(0xb7),'NSnuv':'ID:','DcqpW':function(_0x2e99e6,_0x123c5f){return _0x2e99e6!==_0x123c5f;},'CtpLn':function(_0x2824de,_0x24da31){return _0x2824de!==_0x24da31;},'pcbNj':_0x35b4(0x72),'LTdVc':'\x20\x20\x202.\x20API\x20server\x20(API\x20server)\x20is\x20unreachable','tkNpw':_0x35b4(0x76),'zEhnq':'\x20\x20\x204.\x20SSL/TLS\x20certificate\x20issue','CNgPu':'\x20\x20\x205.\x20iOS\x20simulator\x20network\x20sandbox\x20issue\x20-\x20try\x20on\x20physical\x20device','ACrTm':'Facebook\x20Login\x20completed\x20successfully','AzTFo':function(_0x9497a6,_0x39e6e1){return _0x9497a6(_0x39e6e1);},'bmZmz':function(_0x17ce66,_0x5a7523,_0x18e6cf){return _0x17ce66(_0x5a7523,_0x18e6cf);},'bmLUK':function(_0x231c10,_0x22f32a){return _0x231c10!==_0x22f32a;},'RJQxu':'WSiVe','oSLyI':_0x35b4(0x1db),'ZvowL':_0x35b4(0x1dc),'tHpMp':function(_0x3f31c7,_0x528d01){return _0x3f31c7===_0x528d01;},'nSBaB':_0x35b4(0x1dd),'PCKGA':_0x35b4(0x1de),'zLCkE':_0x35b4(0x1df),'pLKmS':'tNkxA','CSXfx':function(_0x2206a0,_0x4d119a){return _0x2206a0!==_0x4d119a;},'TRnEa':_0x35b4(0x1e0),'pUXBr':'mOLLW','zeEtv':_0x35b4(0x6d),'WypEh':_0x35b4(0xd1),'YwYRF':function(_0x5f3991,_0x26dac0){return _0x5f3991!==_0x26dac0;},'gslPp':_0x35b4(0x1e1),'AFHTB':_0x35b4(0x1e2),'POmIs':function(_0x36899e){return _0x36899e();},'xVeDJ':'KFwxc','bACpY':'โ
\x20Refresh\x20token\x20confirmed:','FXVsw':'lTiCP','yRArK':'gCoMI','GfCHi':_0x35b4(0x1e3),'Fnryd':function(_0x33c77e,_0x104b1a){return _0x33c77e!==_0x104b1a;},'wCEeD':_0x35b4(0x1e4),'GcUEq':_0x35b4(0x12d),'Djvls':'โ\x20YouTube\x20reconnection\x20error:'};try{if(_0x5e1a8b[_0x35b4(0x1e5)](_0x5e1a8b['RJQxu'],_0x5e1a8b[_0x35b4(0x1e6)])){console[_0x35b4(0x37)](_0x5e1a8b['ZvowL']);try{await GoogleSignin[_0x35b4(0xf0)](),console[_0x35b4(0x37)](_0x35b4(0x1e7));}catch(_0x2c3810){if(_0x5e1a8b[_0x35b4(0x1e8)](_0x5e1a8b[_0x35b4(0x1e9)],_0x35b4(0x1ea)))return _0x2ecc6c['error'](_0x5e1a8b['GbnSY'],_0x227e92),![];else console[_0x35b4(0x37)](_0x5e1a8b[_0x35b4(0x1eb)],_0x2c3810);}try{if(_0x5e1a8b[_0x35b4(0x1e8)](_0x5e1a8b[_0x35b4(0x1ec)],_0x5e1a8b[_0x35b4(0x1ed)]))_0x135f48['log'](_0x5e1a8b[_0x35b4(0x1ee)]);else{const _0x44a250=await GoogleSignin['getTokens']();_0x44a250[_0x35b4(0xfe)]&&(_0x5e1a8b[_0x35b4(0x1ef)](_0x5e1a8b[_0x35b4(0x1f0)],_0x5e1a8b[_0x35b4(0x1f1)])?(await GoogleSignin[_0x35b4(0x100)](_0x44a250[_0x35b4(0xfe)]),console['log'](_0x35b4(0x1f2))):(_0x15aeab[_0x35b4(0x37)](_0x35b4(0x8f)+_0x377347+_0x35b4(0x90)),_0x21f119[_0x35b4(0x45)]()));}}catch(_0x22e047){console[_0x35b4(0x37)](_0x5e1a8b[_0x35b4(0x1f3)],_0x22e047);}const _0x239356=await _0x5e1a8b[_0x35b4(0x1f4)](initiateNativeAuth,_0x5e1a8b[_0x35b4(0x1f5)],_0x36fc7a);if(_0x239356){if(_0x5e1a8b[_0x35b4(0x1f6)](_0x5e1a8b[_0x35b4(0x1f7)],_0x35b4(0x1e1)))return _0x1483c7[_0x35b4(0x3f)](_0x5e1a8b[_0x35b4(0x1f8)],_0x7c76a6),![];else{console[_0x35b4(0x37)](_0x5e1a8b['AFHTB']);const _0xa50465=await _0x5e1a8b[_0x35b4(0x1f9)](debugYouTubeTokens);return _0xa50465[_0x35b4(0x174)]?_0x5e1a8b['YwYRF'](_0x5e1a8b[_0x35b4(0x1fa)],_0x35b4(0x1fb))?console[_0x35b4(0x37)](_0x5e1a8b[_0x35b4(0x1fc)],_0xa50465[_0x35b4(0x155)]):_0x1cbb08['log'](_0x5e1a8b[_0x35b4(0x1fd)],_0x575954):_0x5e1a8b['FXVsw']===_0x5e1a8b[_0x35b4(0x1fe)]?(_0x5eecc0=_0x12edf8[_0x35b4(0x128)][0x0][_0x35b4(0x1ff)][_0x35b4(0x12b)],_0x5856b7=_0x51575c[_0x35b4(0x128)][0x0]['id'],_0x1fbacb[_0x35b4(0x37)](_0x35b4(0xcc),_0x61d877,_0x5e1a8b['NSnuv'],_0x394497)):console[_0x35b4(0x85)](_0x5e1a8b[_0x35b4(0x200)]),!![];}}else{if(_0x5e1a8b[_0x35b4(0x201)](_0x5e1a8b[_0x35b4(0x202)],_0x5e1a8b['wCEeD'])){var _0x589608;if(_0x264566[_0x35b4(0x55)]==='AbortError')_0x92aaad[_0x35b4(0x3f)](_0x35b4(0x9c)+_0xff9623+_0x35b4(0x9d));else _0x5e1a8b[_0x35b4(0x203)](_0x589608=_0x136f00['message'],null)&&_0x5e1a8b[_0x35b4(0x204)](_0x589608,void 0x0)&&_0x589608['includes'](_0x5e1a8b[_0x35b4(0x205)])?(_0x53c643[_0x35b4(0x3f)]('โ\x20[OAUTH]\x20Network\x20request\x20failed\x20for\x20'+_0x45f5ea+_0x35b4(0xa3)),_0x46ce48['error'](_0x35b4(0x74)),_0x4400b9[_0x35b4(0x3f)](_0x5e1a8b[_0x35b4(0x206)]),_0x34e981[_0x35b4(0x3f)](_0x5e1a8b[_0x35b4(0x207)]),_0x46069d['error'](_0x5e1a8b[_0x35b4(0x208)]),_0x1325c1[_0x35b4(0x3f)](_0x5e1a8b[_0x35b4(0x209)])):_0x298098[_0x35b4(0x3f)]('โ\x20[OAUTH]\x20Error\x20initiating\x20OAuth\x20for\x20'+_0xd10f74+':',_0x1cedba);return null;}else return console[_0x35b4(0x3f)](_0x5e1a8b[_0x35b4(0x20a)]),![];}}else _0x5e1a8b[_0x35b4(0x1f4)](_0x3b16d0,()=>{_0x1ca2a8[_0x35b4(0x37)](_0x5e1a8b[_0x35b4(0x20b)]),_0x5e1a8b[_0x35b4(0x20c)](_0x18f6c4,!![]);},0x3e8);}catch(_0x28e072){return console['error'](_0x5e1a8b['Djvls'],_0x28e072),![];}};export const initiateNativeAuth=async(_0x3e97c2,_0x3cf73c)=>{const _0x1fa19f={'ByDJN':'โน๏ธ\x20Already\x20signed\x20out\x20or\x20sign\x20out\x20failed:','XnuHc':_0x35b4(0x20d),'ufmcy':'2|6|5|1|4|3|0','CrFIK':_0x35b4(0x18e),'CXLJp':_0x35b4(0x20e),'kKiyk':_0x35b4(0x20f),'eHgpI':'\x20\x20\x202.\x20Check\x20Google\x20Console\x20OAuth\x20configuration','PxwIS':_0x35b4(0x210),'HmBfL':'โ\x20This\x20means\x20consent\x20screen\x20did\x20not\x20appear\x20or\x20user\x20denied\x20permissions','lzzPO':_0x35b4(0x211),'QACaZ':'โ
\x20SUCCESS:\x20Got\x20refresh\x20token\x20after\x20REVOKE\x20+\x20consent!','hqAgr':'๐\x20Refresh\x20token\x20preview:','abiWm':_0x35b4(0x212),'EuwQe':function(_0x1be15d,_0x570f9d){return _0x1be15d===_0x570f9d;},'IulEF':function(_0x5540a5,_0x48eec5){return _0x5540a5===_0x48eec5;},'FSPUD':function(_0x4d80e8,_0x78521c){return _0x4d80e8===_0x78521c;},'XsXfX':_0x35b4(0xaa),'vRJng':_0x35b4(0x213),'xXSui':'Facebook\x20Login\x20completed\x20successfully','TEQTn':function(_0x5d2d6d,_0x48c9c8,_0x14b098){return _0x5d2d6d(_0x48c9c8,_0x14b098);},'koYkQ':_0x35b4(0xd1),'zhbQa':_0x35b4(0x214),'HMcJJ':function(_0x106c24,_0x210ebe){return _0x106c24===_0x210ebe;},'elAEM':function(_0x318eb8){return _0x318eb8();},'RVBSH':_0x35b4(0x215),'diUou':_0x35b4(0x216),'oOqbl':_0x35b4(0x217),'JqbMr':function(_0x3142c,_0x36f0c9){return _0x3142c===_0x36f0c9;},'bDdwp':function(_0x102de5,_0x3b0e0b){return _0x102de5===_0x3b0e0b;},'qcKRE':'๐\x20FULL\x20userInfo\x20object:','NCGIL':_0x35b4(0x218),'PZBIN':function(_0x59af8c,_0x47e3a7){return _0x59af8c===_0x47e3a7;},'ZlGZD':_0x35b4(0x219),'DkzlY':function(_0x208d2e,_0x2ed9ff){return _0x208d2e!==_0x2ed9ff;},'gOXCQ':_0x35b4(0x21a),'dFMsi':function(_0x4c1dec,_0x5edc03){return _0x4c1dec!==_0x5edc03;},'MxDBx':_0x35b4(0xc0),'RBdYI':_0x35b4(0x21b),'sSlQs':'mrHVT','MZAIx':_0x35b4(0x21c),'wAVlF':'โ
\x20Got\x20serverAuthCode\x20from\x20sign-in\x20response','cUpRD':_0x35b4(0x21d),'phKyc':_0x35b4(0x21e),'SyjeR':'โ
\x20Refresh\x20token\x20available\x20for\x20YouTube\x20connection','WWsmP':'๐\x20Refresh\x20token\x20type:','MjphR':_0x35b4(0x117),'FdWKu':'refreshToken','TCBtj':_0x35b4(0xc8),'LUoib':function(_0x12a838,_0x173a6c){return _0x12a838>_0x173a6c;},'tZNxx':_0x35b4(0x21f),'RGhlL':_0x35b4(0x220),'uoiBE':_0x35b4(0x221),'VcUCh':_0x35b4(0x222),'tnAEi':_0x35b4(0x27),'vroWR':function(_0x1f418f,_0x4257c6){return _0x1f418f===_0x4257c6;},'bhgEe':function(_0x4a7160,_0x4ec148){return _0x4a7160===_0x4ec148;},'lhvDK':function(_0x168c37,_0x4b8f8b){return _0x168c37===_0x4b8f8b;},'FoeLi':_0x35b4(0x135),'jUKvK':function(_0x24a054,_0x2104a5){return _0x24a054!==_0x2104a5;},'CNIib':'AgssB','OMkrN':'โ ๏ธ\x20Failed\x20to\x20fetch\x20YouTube\x20channel\x20info:','FyUvx':function(_0x4a93a1,_0xa74a3b){return _0x4a93a1===_0xa74a3b;},'ciPLt':function(_0x43f318,_0x1060af){return _0x43f318===_0x1060af;},'BcnOB':_0x35b4(0xa9),'oyxQY':function(_0x5450df,_0x3d9897){return _0x5450df===_0x3d9897;},'LJjqL':function(_0x2e0b7d,_0x18301e){return _0x2e0b7d===_0x18301e;},'jMCvF':function(_0x570309,_0x3edc9f){return _0x570309===_0x3edc9f;},'CDthw':function(_0x179eda){return _0x179eda();},'rCXVL':function(_0x293c48,_0x29c7d6){return _0x293c48||_0x29c7d6;},'dMWpi':function(_0x563639,_0x468b96){return _0x563639<_0x468b96;},'jjFVz':function(_0x3724ab,_0x563e30){return _0x3724ab===_0x563e30;},'yanPb':_0x35b4(0x223),'BLjfn':_0x35b4(0x1b5),'Ggzpz':'โน๏ธ\x20NOTE:\x20SDK\x20does\x20not\x20create\x20users\x20during\x20YouTube\x20connection','zXaMt':_0x35b4(0x1b6),'jqwir':_0x35b4(0x224),'TfXgL':_0x35b4(0x225),'JBfjk':_0x35b4(0x226),'FcXqC':'๐\x20Using\x20auth\x20token\x20for\x20linking:','fVJIx':_0x35b4(0x227),'dabRN':function(_0x2189bc,_0x238502){return _0x2189bc===_0x238502;},'SqQbq':function(_0x537676,_0x2145b7){return _0x537676===_0x2145b7;},'aFYII':function(_0x14be5d,_0x3564dd){return _0x14be5d===_0x3564dd;},'ImAGN':function(_0x162044,_0x3b473a){return _0x162044===_0x3b473a;},'CMrrw':function(_0x4a0417,_0xf4c611){return _0x4a0417===_0xf4c611;},'IYEyw':function(_0x3ba5bc,_0x1d974d){return _0x3ba5bc===_0x1d974d;},'Wubmt':function(_0x1e1424,_0x184613){return _0x1e1424!==_0x184613;},'DYkRV':_0x35b4(0x228),'cFGKk':_0x35b4(0x1cc),'UMvHH':_0x35b4(0x229),'eIQVR':_0x35b4(0x22a),'xYejQ':_0x35b4(0x22b),'ryHnH':_0x35b4(0x22c),'NmSBs':_0x35b4(0x22d),'QeODI':_0x35b4(0x22e),'Ijzia':function(_0x36c32b,_0x55e2fd,_0x486f7e){return _0x36c32b(_0x55e2fd,_0x486f7e);},'tVLiL':_0x35b4(0x22f),'zCDhX':'๐ก\x20Backend\x20response\x20headers:','qgPvg':'โ
\x20YouTube\x20connection\x20successful','gbkmo':_0x35b4(0x230),'PylAA':function(_0x4a327f,_0x38d71d){return _0x4a327f===_0x38d71d;},'NHFis':function(_0x804288,_0x5899e8){return _0x804288===_0x5899e8;},'lFVFH':function(_0x51a628,_0x3127d0){return _0x51a628!==_0x3127d0;},'VaQUC':_0x35b4(0x231),'cBHHC':_0x35b4(0x232),'OsYBU':_0x35b4(0x233),'KKwHJ':_0x35b4(0x234),'GXICZ':'โ
\x20[YOUTUBE\x20AUTH]\x20Backend\x20confirmed\x20refresh\x20token\x20received','WDoiS':_0x35b4(0x235),'SAeAe':_0x35b4(0x6e),'IuRRu':_0x35b4(0x88),'tFxXy':_0x35b4(0x236),'JTmGq':_0x35b4(0x237),'qcuBe':function(_0x12c739,_0x530d88){return _0x12c739===_0x530d88;},'IGnHo':_0x35b4(0x238),'XdXED':function(_0x1998fb,_0x214e4e){return _0x1998fb===_0x214e4e;},'PCIXZ':'GnHwp','CPPdY':_0x35b4(0x239),'DHBxn':_0x35b4(0x23a),'VsLrA':_0x35b4(0x23b),'WgVzb':_0x35b4(0xac)};if(_0x3e97c2===_0x1fa19f[_0x35b4(0x23c)]){console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x23d)]);if(!_0x3cf73c||_0x1fa19f[_0x35b4(0x23e)](_0x3cf73c['trim'](),''))return console[_0x35b4(0x3f)](_0x1fa19f[_0x35b4(0x23f)]),![];try{if('sIwCH'==='sIwCH'){var _0x5b7dd0,_0x52c0ac,_0x2072a4,_0x39f5af,_0x3a973e,_0x565fa5,_0x5421c0,_0x1e6749,_0x15e0ee,_0x4f72ed;_0x1fa19f[_0x35b4(0x240)](initializeGoogleSignIn),await GoogleSignin['hasPlayServices']();try{await GoogleSignin[_0x35b4(0xf0)](),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x241)]);}catch(_0x575303){_0x35b4(0x216)!==_0x1fa19f['diUou']?_0x2d802a[_0x35b4(0x3f)]('โ\x20Failed\x20to\x20fix\x20YouTube\x20connection'):console[_0x35b4(0x37)](_0x1fa19f['oOqbl'],_0x575303);}const _0x33cd2f=await GoogleSignin['signIn']();console[_0x35b4(0x37)](_0x35b4(0x242),(_0x5b7dd0=_0x33cd2f[_0x35b4(0x57)])===null||_0x1fa19f[_0x35b4(0x243)](_0x5b7dd0,void 0x0)||_0x1fa19f[_0x35b4(0x244)](_0x5b7dd0=_0x5b7dd0[_0x35b4(0x54)],null)||_0x1fa19f[_0x35b4(0x23e)](_0x5b7dd0,void 0x0)?void 0x0:_0x5b7dd0[_0x35b4(0x58)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x245)]),console[_0x35b4(0x37)](JSON['stringify'](_0x33cd2f,null,0x2));const _0x3b0ef9=await GoogleSignin['getTokens']();console['log'](_0x35b4(0x246)),console['log'](_0x1fa19f[_0x35b4(0x247)]),console[_0x35b4(0x37)](JSON[_0x35b4(0x91)](_0x3b0ef9,null,0x2));const _0x184d10=await GoogleSignin[_0x35b4(0x112)]();console[_0x35b4(0x37)](_0x35b4(0x248),_0x1fa19f[_0x35b4(0x249)](_0x184d10,null)||_0x184d10===void 0x0||(_0x52c0ac=_0x184d10['user'])===null||_0x1fa19f[_0x35b4(0x24a)](_0x52c0ac,void 0x0)?void 0x0:_0x52c0ac[_0x35b4(0x58)]),console[_0x35b4(0x37)](_0x1fa19f['ZlGZD']),console['log'](JSON['stringify'](_0x184d10,null,0x2));let _0x5493b1=null;console[_0x35b4(0x37)](_0x35b4(0x24b)),console[_0x35b4(0x37)](_0x35b4(0x24c),_0x1fa19f['DkzlY'](_0x2072a4=_0x33cd2f[_0x35b4(0x57)],null)&&_0x1fa19f['DkzlY'](_0x2072a4,void 0x0)&&_0x2072a4[_0x35b4(0x117)]?'Present:\x20'+_0x33cd2f[_0x35b4(0x57)][_0x35b4(0x117)]['substring'](0x0,0x14)+_0x35b4(0x62):'Missing'),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x24d)],_0x1fa19f[_0x35b4(0x24e)](_0x184d10,null)&&_0x184d10!==void 0x0&&_0x184d10['serverAuthCode']?'Present:\x20'+_0x184d10[_0x35b4(0x117)][_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x35b4(0xc0)),console['log'](_0x35b4(0x24f),_0x3b0ef9['idToken']?'Present:\x20'+_0x3b0ef9[_0x35b4(0x148)][_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x1fa19f['MxDBx']),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x250)],_0x3b0ef9[_0x35b4(0xfe)]?_0x35b4(0x251)+_0x3b0ef9[_0x35b4(0xfe)][_0x35b4(0x4d)](0x0,0x14)+'...':_0x35b4(0xc0));if(_0x184d10!==null&&_0x184d10!==void 0x0&&_0x184d10[_0x35b4(0x117)])_0x5493b1=_0x184d10['serverAuthCode'],console[_0x35b4(0x37)](_0x35b4(0x252)),console['log']('๐\x20Refresh\x20token\x20preview:',_0x5493b1[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62));else(_0x39f5af=_0x33cd2f[_0x35b4(0x57)])!==null&&_0x1fa19f[_0x35b4(0x253)](_0x39f5af,void 0x0)&&_0x39f5af['serverAuthCode']&&(_0x1fa19f[_0x35b4(0x254)](_0x1fa19f['sSlQs'],_0x1fa19f[_0x35b4(0x255)])?_0x1cecc6[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x256)],_0x4c2fbc):(_0x5493b1=_0x33cd2f[_0x35b4(0x57)][_0x35b4(0x117)],console[_0x35b4(0x37)](_0x1fa19f['wAVlF']),console['log'](_0x1fa19f[_0x35b4(0x257)],_0x5493b1[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62))));!_0x5493b1?(console[_0x35b4(0x3f)](_0x1fa19f['cUpRD']),console[_0x35b4(0x3f)](_0x35b4(0x258)),console['error'](_0x35b4(0x259)),console[_0x35b4(0x85)](_0x1fa19f['phKyc'])):(console['log'](_0x1fa19f[_0x35b4(0x25a)]),console['log'](_0x1fa19f[_0x35b4(0x25b)],_0x5493b1[_0x35b4(0x120)]('4/')?_0x1fa19f[_0x35b4(0x25c)]:_0x1fa19f[_0x35b4(0x25d)]));let _0x285ba4=_0x35b4(0xaa),_0x534bd8=null;try{if('YeFMq'!==_0x35b4(0x25e)){console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x25f)]);const _0x5b14ea=await _0x1fa19f[_0x35b4(0x260)](fetch,_0x35b4(0xc9),{'headers':{'Authorization':_0x35b4(0xa)+_0x3b0ef9[_0x35b4(0xfe)],'Accept':'application/json'}});if(_0x5b14ea['ok']){const _0x300974=await _0x5b14ea[_0x35b4(0x96)]();if(_0x300974[_0x35b4(0x128)]&&_0x1fa19f[_0x35b4(0x261)](_0x300974['items'][_0x35b4(0x145)],0x0)){if(_0x1fa19f['DkzlY'](_0x1fa19f[_0x35b4(0x262)],_0x35b4(0x21f))){_0xf1ba9[_0x35b4(0x3f)](_0x1fa19f[_0x35b4(0x263)],_0x1d2abc);throw _0x3cdfc3;}else _0x285ba4=_0x300974['items'][0x0][_0x35b4(0x1ff)][_0x35b4(0x12b)],_0x534bd8=_0x300974[_0x35b4(0x128)][0x0]['id'],console[_0x35b4(0x37)](_0x35b4(0xcc),_0x285ba4,_0x1fa19f[_0x35b4(0x264)],_0x534bd8);}else{if(_0x1fa19f[_0x35b4(0x24e)](_0x1fa19f[_0x35b4(0x265)],_0x1fa19f['VcUCh'])){var _0x37057b,_0x59ed24;console[_0x35b4(0x37)](_0x1fa19f['tnAEi']),_0x285ba4=((_0x37057b=_0x33cd2f[_0x35b4(0x57)])===null||_0x1fa19f[_0x35b4(0x266)](_0x37057b,void 0x0)||_0x1fa19f[_0x35b4(0x267)](_0x37057b=_0x37057b[_0x35b4(0x54)],null)||_0x1fa19f['lhvDK'](_0x37057b,void 0x0)?void 0x0:_0x37057b['name'])||(_0x1fa19f[_0x35b4(0x266)](_0x59ed24=_0x33cd2f[_0x35b4(0x57)],null)||_0x59ed24===void 0x0||(_0x59ed24=_0x59ed24['user'])===null||_0x59ed24===void 0x0?void 0x0:_0x59ed24[_0x35b4(0x58)])||_0x1fa19f['FoeLi'];}else{const _0x3cae1a=_0x1fa19f[_0x35b4(0x268)]['split']('|');let _0x2d82ad=0x0;while(!![]){switch(_0x3cae1a[_0x2d82ad++]){case'0':return![];case'1':_0x7d01f0['error'](_0x1fa19f[_0x35b4(0x269)]);continue;case'2':_0x5d4afe[_0x35b4(0x3f)](_0x1fa19f['CXLJp']);continue;case'3':_0x1af1ff[_0x35b4(0x3f)](_0x1fa19f[_0x35b4(0x26a)]);continue;case'4':_0x35dcdf['error'](_0x1fa19f[_0x35b4(0x26b)]);continue;case'5':_0x49f2c0['error'](_0x1fa19f[_0x35b4(0x26c)]);continue;case'6':_0x371347[_0x35b4(0x3f)](_0x1fa19f[_0x35b4(0x26d)]);continue;}break;}}}}else{if(_0x1fa19f[_0x35b4(0x26e)](_0x1fa19f[_0x35b4(0x26f)],_0x35b4(0x270))){var _0x557f7e,_0x12e31e;console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x271)],_0x5b14ea[_0x35b4(0x93)]),_0x285ba4=(_0x1fa19f[_0x35b4(0x272)](_0x557f7e=_0x33cd2f['data'],null)||_0x1fa19f[_0x35b4(0x267)](_0x557f7e,void 0x0)||_0x1fa19f[_0x35b4(0x249)](_0x557f7e=_0x557f7e[_0x35b4(0x54)],null)||_0x1fa19f[_0x35b4(0x273)](_0x557f7e,void 0x0)?void 0x0:_0x557f7e[_0x35b4(0x55)])||(_0x1fa19f[_0x35b4(0x272)](_0x12e31e=_0x33cd2f[_0x35b4(0x57)],null)||_0x1fa19f[_0x35b4(0x274)](_0x12e31e,void 0x0)||_0x1fa19f[_0x35b4(0x243)](_0x12e31e=_0x12e31e[_0x35b4(0x54)],null)||_0x1fa19f[_0x35b4(0x266)](_0x12e31e,void 0x0)?void 0x0:_0x12e31e[_0x35b4(0x58)])||_0x1fa19f[_0x35b4(0x275)];}else return _0x335986['error'](_0x35b4(0x89)+_0xf05454+_0x35b4(0x8a)),_0x5bf461['error'](_0x35b4(0x8b)),null;}}else _0x37f1ab[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x276)]);}catch(_0x1d1c8e){var _0x418283,_0x340b5e;console[_0x35b4(0x37)](_0x1fa19f['BcnOB'],_0x1d1c8e),_0x285ba4=((_0x418283=_0x33cd2f[_0x35b4(0x57)])===null||_0x1fa19f[_0x35b4(0x24a)](_0x418283,void 0x0)||_0x1fa19f[_0x35b4(0x273)](_0x418283=_0x418283[_0x35b4(0x54)],null)||_0x1fa19f[_0x35b4(0x277)](_0x418283,void 0x0)?void 0x0:_0x418283[_0x35b4(0x55)])||(_0x1fa19f['LJjqL'](_0x340b5e=_0x33cd2f[_0x35b4(0x57)],null)||_0x340b5e===void 0x0||(_0x340b5e=_0x340b5e[_0x35b4(0x54)])===null||_0x1fa19f['jMCvF'](_0x340b5e,void 0x0)?void 0x0:_0x340b5e[_0x35b4(0x58)])||_0x1fa19f[_0x35b4(0x275)];}let _0xa2c142=await _0x1fa19f[_0x35b4(0x278)](getJWT);const _0x873ef6=await AsyncStorage['getItem']('onairos_username'),_0xa27f0d=_0x1fa19f[_0x35b4(0x279)](_0x873ef6,_0x3cf73c)||((_0x3a973e=_0x33cd2f[_0x35b4(0x57)])===null||_0x3a973e===void 0x0||(_0x3a973e=_0x3a973e['user'])===null||_0x3a973e===void 0x0?void 0x0:_0x3a973e[_0x35b4(0x58)])||_0x35b4(0x27a);if(!_0xa2c142||_0x1fa19f[_0x35b4(0x27b)](_0xa2c142['trim']()[_0x35b4(0x145)],0x14)){if(_0x1fa19f[_0x35b4(0x27c)](_0x1fa19f[_0x35b4(0x27d)],_0x35b4(0x223)))console[_0x35b4(0x37)](_0x1fa19f['BLjfn']),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x27e)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x27f)]);else return _0x15e43a[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x280)]),_0x11fd03['log'](_0x1fa19f[_0x35b4(0x257)],_0x5913d7[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62)),!![];}else console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x281)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x282)],_0xa2c142[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62));console['log'](_0x1fa19f['JBfjk'],_0xa27f0d),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x283)],_0xa2c142?_0xa2c142[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62):_0x35b4(0x284)),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x285)],_0x285ba4);const _0x3da39c={'session':{'username':_0xa27f0d,'platform':_0x35b4(0xd1),'timestamp':new Date()[_0x35b4(0x8d)](),'channelName':_0x285ba4,'channelId':_0x534bd8},'googleUser':(_0x565fa5=_0x33cd2f[_0x35b4(0x57)])===null||_0x565fa5===void 0x0?void 0x0:_0x565fa5[_0x35b4(0x54)],'accessToken':_0x3b0ef9[_0x35b4(0xfe)],'idToken':_0x3b0ef9[_0x35b4(0x148)],'refreshToken':_0x5493b1,'serverAuthCode':_0x5493b1,'refresh_token':_0x5493b1,'server_auth_code':_0x5493b1,'authCode':_0x5493b1,'userAccountInfo':{'username':_0xa27f0d,'email':_0x1fa19f[_0x35b4(0x273)](_0x5421c0=_0x33cd2f[_0x35b4(0x57)],null)||_0x1fa19f[_0x35b4(0x254)](_0x5421c0,void 0x0)||_0x1fa19f[_0x35b4(0x286)](_0x5421c0=_0x5421c0['user'],null)||_0x1fa19f[_0x35b4(0x287)](_0x5421c0,void 0x0)?void 0x0:_0x5421c0['email'],'authToken':_0xa2c142,'channelName':_0x285ba4,'channelId':_0x534bd8,'userIdentifier':_0xa2c142?'user-'+_0xa2c142[_0x35b4(0x4d)](0x0,0xa):_0x35b4(0x288)+(_0x1fa19f[_0x35b4(0x289)](_0x1e6749=_0x33cd2f['data'],null)||_0x1fa19f[_0x35b4(0x28a)](_0x1e6749,void 0x0)||_0x1fa19f[_0x35b4(0x28b)](_0x1e6749=_0x1e6749[_0x35b4(0x54)],null)||_0x1fa19f[_0x35b4(0x249)](_0x1e6749,void 0x0)?void 0x0:_0x1e6749['email']),'googleId':_0x1fa19f[_0x35b4(0x28c)](_0x15e0ee=_0x33cd2f[_0x35b4(0x57)],null)||_0x1fa19f[_0x35b4(0x286)](_0x15e0ee,void 0x0)||_0x1fa19f['IYEyw'](_0x15e0ee=_0x15e0ee['user'],null)||_0x1fa19f['dabRN'](_0x15e0ee,void 0x0)?void 0x0:_0x15e0ee['id'],'appleUserId':_0xa2c142!==null&&_0x1fa19f[_0x35b4(0x28d)](_0xa2c142,void 0x0)&&_0xa2c142[_0x35b4(0x9e)](_0x1fa19f[_0x35b4(0x28e)])?_0xa2c142[_0x35b4(0x16e)]('.')[0x1]:null,'refreshToken':_0x5493b1,'serverAuthCode':_0x5493b1},'tokenExpiry':new Date(Date[_0x35b4(0x28f)]()+0xe10*0x3e8)[_0x35b4(0x8d)](),'requestRefreshToken':!![],'debugInfo':{'hasRefreshToken':!!_0x5493b1,'refreshTokenType':_0x5493b1?_0x5493b1['startsWith']('4/')?_0x1fa19f[_0x35b4(0x25c)]:_0x1fa19f[_0x35b4(0x25d)]:_0x1fa19f[_0x35b4(0x290)],'configuredForRefresh':!![],'forcedConsent':!![],'refreshTokenValue':_0x5493b1}};console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x291)]),console[_0x35b4(0x37)](_0x35b4(0x292),!!_0x3da39c[_0x35b4(0xfe)]),console['log'](_0x1fa19f[_0x35b4(0x293)],!!_0x3da39c[_0x35b4(0x14e)]),console[_0x35b4(0x37)](_0x35b4(0x294),!!_0x3da39c[_0x35b4(0x117)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x295)],_0x3da39c[_0x35b4(0x14f)][_0x35b4(0x155)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x296)],_0x1fa19f['FyUvx'](_0x4f72ed=_0x33cd2f[_0x35b4(0x57)],null)||_0x1fa19f[_0x35b4(0x266)](_0x4f72ed,void 0x0)||(_0x4f72ed=_0x4f72ed[_0x35b4(0x54)])===null||_0x4f72ed===void 0x0?void 0x0:_0x4f72ed[_0x35b4(0x58)]),console['log'](_0x1fa19f[_0x35b4(0x297)],_0x285ba4),console[_0x35b4(0x37)]('๐\x20COMPLETE\x20BACKEND\x20PAYLOAD:'),console['log'](JSON['stringify'](_0x3da39c,null,0x2)),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x298)],!!_0x5493b1);const _0x49fc4d=await _0x1fa19f[_0x35b4(0x299)](fetch,API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x29a),{'method':'POST','headers':{'Content-Type':'application/json',..._0xa2c142&&{'Authorization':_0xa2c142}},'body':JSON[_0x35b4(0x91)](_0x3da39c)});console[_0x35b4(0x37)](_0x1fa19f['tVLiL'],_0x49fc4d['status']),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x29b)],_0x49fc4d['headers']);if(_0x49fc4d['ok']){var _0x3ae59c,_0x1d3a61;const _0x19b4c6=await _0x49fc4d[_0x35b4(0x96)]();console['log'](_0x1fa19f['qgPvg']),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x29c)]),console[_0x35b4(0x37)](JSON[_0x35b4(0x91)](_0x19b4c6,null,0x2));const _0x586a70=_0x1fa19f[_0x35b4(0x29d)](_0x1fa19f[_0x35b4(0x277)](_0x3ae59c=_0x19b4c6[_0x35b4(0x29e)],null)||_0x3ae59c===void 0x0?void 0x0:_0x3ae59c['isTemporaryMode'],!![])||(_0x1fa19f[_0x35b4(0x29f)](_0x1d3a61=_0x19b4c6[_0x35b4(0x168)],null)||_0x1fa19f[_0x35b4(0x2a0)](_0x1d3a61,void 0x0)?void 0x0:_0x1d3a61['enabled'])===!![]||_0x1fa19f[_0x35b4(0x28b)](_0x19b4c6[_0x35b4(0x166)],!![])||_0x19b4c6[_0x35b4(0x3e)]&&_0x19b4c6[_0x35b4(0x3e)][_0x35b4(0x9e)](_0x35b4(0xdb));if(_0x586a70)_0x1fa19f['lFVFH'](_0x1fa19f[_0x35b4(0x2a1)],_0x1fa19f[_0x35b4(0x2a1)])?(_0x36edb7=_0xa5915c['items'][0x0]['snippet']['title'],_0x6d5deb=_0x295737['items'][0x0]['id'],_0x151913[_0x35b4(0x37)](_0x35b4(0xcc),_0x37489c,_0x35b4(0x220),_0x3b32ce)):(console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2a2)]),console['log'](_0x1fa19f[_0x35b4(0x2a3)]),console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2a4)]));else{if(_0x19b4c6['hasRefreshToken']||_0x19b4c6[_0x35b4(0x175)])console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2a5)]),console['log'](_0x35b4(0x2a6));else{if(_0x35b4(0x2a7)===_0x1fa19f[_0x35b4(0x2a8)])return{'success':![],'error':_0x413707[_0x35b4(0x3e)]||_0x1fa19f[_0x35b4(0x2a9)]};else console['warn']('โ ๏ธ\x20[YOUTUBE\x20AUTH]\x20Backend\x20did\x20not\x20confirm\x20refresh\x20token'),console[_0x35b4(0x85)](_0x1fa19f['SAeAe'],Object[_0x35b4(0x87)](_0x19b4c6)),console['warn'](_0x1fa19f[_0x35b4(0x2aa)]);}}return!![];}else{const _0x469a99=await _0x49fc4d[_0x35b4(0x48)]();return console[_0x35b4(0x3f)](_0x1fa19f['tFxXy'],_0x49fc4d[_0x35b4(0x93)]),console[_0x35b4(0x3f)](_0x35b4(0x2ab)),console['error'](_0x469a99),![];}}else{var _0x1678b8,_0x5c3465;_0x2a582d['log'](_0x35b4(0xcd),_0x375f9b[_0x35b4(0x93)]),_0x2e8a6b=((_0x1678b8=_0x52da8f[_0x35b4(0x57)])===null||_0x1678b8===void 0x0||_0x1fa19f[_0x35b4(0x249)](_0x1678b8=_0x1678b8[_0x35b4(0x54)],null)||_0x1678b8===void 0x0?void 0x0:_0x1678b8[_0x35b4(0x55)])||(_0x1fa19f[_0x35b4(0x272)](_0x5c3465=_0x437a6f[_0x35b4(0x57)],null)||_0x1fa19f[_0x35b4(0x272)](_0x5c3465,void 0x0)||(_0x5c3465=_0x5c3465['user'])===null||_0x1fa19f['FSPUD'](_0x5c3465,void 0x0)?void 0x0:_0x5c3465[_0x35b4(0x58)])||_0x1fa19f[_0x35b4(0x275)];}}catch(_0x40f047){console[_0x35b4(0x3f)](_0x1fa19f[_0x35b4(0x2ac)],_0x40f047);if(_0x1fa19f[_0x35b4(0x2ad)](_0x40f047['code'],statusCodes[_0x35b4(0x193)]))console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2ae)]);else{if(_0x40f047[_0x35b4(0x10)]===statusCodes[_0x35b4(0x196)]){if(_0x1fa19f['XdXED'](_0x1fa19f['PCIXZ'],_0x1fa19f[_0x35b4(0x2af)]))return _0x570045[_0x35b4(0x3f)](_0x1fa19f['vRJng']),![];else console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2b0)]);}else _0x1fa19f[_0x35b4(0x243)](_0x40f047[_0x35b4(0x10)],statusCodes['PLAY_SERVICES_NOT_AVAILABLE'])&&console['log'](_0x1fa19f[_0x35b4(0x2b1)]);}return![];}}if(_0x3e97c2==='instagram')return console[_0x35b4(0x37)](_0x1fa19f[_0x35b4(0x2b2)]),new Promise(_0xea3f03=>{_0x1fa19f[_0x35b4(0x260)](setTimeout,()=>{console['log'](_0x1fa19f[_0x35b4(0x2b3)]),_0xea3f03(!![]);},0x3e8);});return![];};export const isOAuthCallback=_0x57f1a5=>{const _0x4471f4={'FDEVb':_0x35b4(0x2b4),'tvvgN':'code='};return _0x57f1a5[_0x35b4(0x9e)](_0x4471f4['FDEVb'])||_0x57f1a5[_0x35b4(0x9e)](_0x4471f4['tvvgN']);};export const exchangeCodeForToken=async(_0x58acfb,_0x2b873f)=>{const _0x32d7e9={'TtECd':_0x35b4(0x258),'sYuNN':function(_0x48f54d,_0x3c9bc4,_0x6c569a){return _0x48f54d(_0x3c9bc4,_0x6c569a);},'TQNOd':function(_0x4d06dd,_0xd655e1){return _0x4d06dd===_0xd655e1;},'wwoJB':_0x35b4(0x2b5),'JTSne':_0x35b4(0x2b6)};console['log'](_0x35b4(0x2b7)+_0x2b873f);try{const _0x5b8d84=API_CONFIG[_0x35b4(0x11)]+'/'+_0x2b873f+_0x35b4(0x2b8),_0x1993d9=await _0x32d7e9[_0x35b4(0x2b9)](fetch,_0x5b8d84,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON[_0x35b4(0x91)]({'code':_0x58acfb,'platform':_0x2b873f})});if(!_0x1993d9['ok']){console[_0x35b4(0x3f)](_0x35b4(0x2ba)+_0x1993d9[_0x35b4(0x93)]);throw new Error('Token\x20exchange\x20failed\x20with\x20status\x20'+_0x1993d9[_0x35b4(0x93)]);}const _0x1f74bc=await _0x1993d9['json']();return console[_0x35b4(0x37)](_0x35b4(0x2bb)+_0x2b873f),_0x1f74bc;}catch(_0x3a12c8){if(_0x32d7e9['TQNOd'](_0x32d7e9[_0x35b4(0x2bc)],_0x32d7e9[_0x35b4(0x2bc)]))return console['error'](_0x35b4(0x15d),_0x3a12c8),console['log'](_0x32d7e9[_0x35b4(0x2bd)]),{'access_token':_0x2b873f+_0x35b4(0x15f)+Math[_0x35b4(0x161)]()[_0x35b4(0x2be)](0x24)[_0x35b4(0x4d)](0x7),'refresh_token':_0x2b873f+_0x35b4(0x160)+Math['random']()[_0x35b4(0x2be)](0x24)['substring'](0x7),'expires_in':0xe10};else _0x3d7890['error'](_0x35b4(0x21d)),_0x4239f8[_0x35b4(0x3f)](_0x32d7e9[_0x35b4(0x2bf)]),_0x2e4ab7[_0x35b4(0x3f)](_0x35b4(0x259)),_0x5221ec['warn'](_0x35b4(0x21e));}};export const refreshYouTubeTokens=async()=>{const _0xcb540b={'hqKJP':'No\x20API\x20key\x20configured.\x20Please\x20initialize\x20the\x20SDK\x20with\x20a\x20valid\x20developer\x20API\x20key.','CjZkf':_0x35b4(0x2c0),'SxYIz':function(_0x361693){return _0x361693();},'KItNT':'โ\x20No\x20auth\x20token\x20found\x20for\x20YouTube\x20refresh','INVgb':function(_0x398c01,_0x3b146a,_0xe9fbf8){return _0x398c01(_0x3b146a,_0xe9fbf8);},'OIpWL':function(_0xa77b8a,_0x3e6a51){return _0xa77b8a===_0x3e6a51;},'szLFX':function(_0x1954dd,_0x32b1e3){return _0x1954dd*_0x32b1e3;},'jXvBX':_0x35b4(0x2c1),'PvESd':'โ\x20YouTube\x20token\x20refresh\x20failed:','XqIWe':function(_0x569943,_0x3dd8f1){return _0x569943!==_0x3dd8f1;},'RKKQB':'egyVK'};try{var _0x89cff9;console[_0x35b4(0x37)](_0x35b4(0x2c2));const _0x3c4322=await GoogleSignin[_0x35b4(0xfd)]();if(!_0x3c4322)return console[_0x35b4(0x3f)](_0x35b4(0x2c3)),![];const _0xff06ce=await GoogleSignin[_0x35b4(0x112)]();if(!_0xff06ce)return console['error'](_0xcb540b[_0x35b4(0x2c4)]),![];const _0x11f81b=await _0xcb540b[_0x35b4(0x2c5)](getJWT);if(!_0x11f81b)return console['error'](_0xcb540b[_0x35b4(0x2c6)]),![];const _0x296ea0=await _0xcb540b['INVgb'](fetch,API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x2c7),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x11f81b},'body':JSON['stringify']({'accessToken':_0x3c4322[_0x35b4(0xfe)],'idToken':_0x3c4322[_0x35b4(0x148)],'refreshToken':_0xff06ce[_0x35b4(0x117)],'userEmail':_0xcb540b[_0x35b4(0x2c8)](_0x89cff9=_0xff06ce[_0x35b4(0x54)],null)||_0xcb540b[_0x35b4(0x2c8)](_0x89cff9,void 0x0)?void 0x0:_0x89cff9[_0x35b4(0x58)],'tokenExpiry':new Date(Date[_0x35b4(0x28f)]()+_0xcb540b[_0x35b4(0x2c9)](0xe10,0x3e8))['toISOString'](),'timestamp':new Date()[_0x35b4(0x8d)]()})});if(_0x296ea0['ok']){const _0x150f25=await _0x296ea0['json']();return console['log'](_0xcb540b[_0x35b4(0x2ca)],_0x150f25),!![];}else{const _0x40df8e=await _0x296ea0[_0x35b4(0x48)]();return console[_0x35b4(0x3f)](_0xcb540b['PvESd'],_0x296ea0[_0x35b4(0x93)],_0x40df8e),![];}}catch(_0x4598af){if(_0xcb540b[_0x35b4(0x2cb)](_0x35b4(0x2cc),_0xcb540b[_0x35b4(0x2cd)]))throw new _0xd3f18d(_0xcb540b['hqKJP']);else return console[_0x35b4(0x3f)]('โ\x20Error\x20refreshing\x20YouTube\x20tokens:',_0x4598af),![];}};const triggerTrainingRestart=async(_0xd77f0,_0x52bba2)=>{const _0x213534={'IHwAt':_0x35b4(0x2ce),'FXCct':'๐\x20Refresh\x20token\x20preview:','yZWGa':'โ\x20Error\x20verifying\x20email\x20code:','UKjqf':_0x35b4(0x2cf),'yEaUK':function(_0x556178,_0x336c28){return _0x556178!==_0x336c28;},'Vqgbk':'UpJPt','wHazM':function(_0x4b4c5d,_0x5c955d,_0x110301){return _0x4b4c5d(_0x5c955d,_0x110301);},'wZkSY':'youtube_reauth','ktVRt':_0x35b4(0xd1),'NnYlC':_0x35b4(0x2d0),'zMScn':_0x35b4(0x2d1),'XEzaC':function(_0x1b41c4,_0x12d5f9){return _0x1b41c4===_0x12d5f9;},'JqDiq':_0x35b4(0x2d2),'tOvmS':_0x35b4(0x20d)};try{if(_0x213534['yEaUK'](_0x213534[_0x35b4(0x2d3)],_0x213534[_0x35b4(0x2d3)]))_0x817156=_0x3905e9[_0x35b4(0x57)][_0x35b4(0x117)],_0x129e05[_0x35b4(0x37)](_0x213534[_0x35b4(0x2d4)]),_0x58cd45[_0x35b4(0x37)](_0x213534['FXCct'],_0x52b90b[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62));else{console[_0x35b4(0x37)](_0x35b4(0x2d5),_0xd77f0);const _0x20961c=await _0x213534['wHazM'](fetch,API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x2d6),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x52bba2},'body':JSON[_0x35b4(0x91)]({'username':_0xd77f0,'reason':_0x213534[_0x35b4(0x2d7)],'platform':_0x213534[_0x35b4(0x2d8)],'timestamp':new Date()[_0x35b4(0x8d)](),'requestNewTraining':!![]})});if(_0x20961c['ok']){const _0x557569=await _0x20961c[_0x35b4(0x96)]();console[_0x35b4(0x37)](_0x213534[_0x35b4(0x2d9)],_0x557569);}else{const _0xaf867c=await _0x20961c['text']();console['error'](_0x213534['zMScn'],_0x20961c['status'],_0xaf867c);throw new Error(_0x35b4(0x2da)+_0x20961c['status']);}}}catch(_0x24c1b7){if(_0x213534['XEzaC'](_0x213534['JqDiq'],_0x213534[_0x35b4(0x2db)])){console[_0x35b4(0x3f)](_0x213534[_0x35b4(0x2dc)],_0x24c1b7);throw _0x24c1b7;}else return _0x2f8573[_0x35b4(0x3f)](_0x213534[_0x35b4(0x2dd)],_0x3ff78e),{'success':![],'error':_0x213534[_0x35b4(0x2de)]};}};export const testYouTubeRefreshToken=async _0x4355c9=>{const _0xdf9df6={'tNaDG':'๐ง\x20[OAUTH]\x20Email\x20platform\x20selected,\x20returning\x20mock\x20auth\x20URL','YIBlL':_0x35b4(0x252),'nMLXt':_0x35b4(0xc6),'ZYGrl':'๐ค\x20User:','gszly':function(_0x30a500){return _0x30a500();},'VBmnT':_0x35b4(0x2df),'odqyP':function(_0x5f2f3e,_0xa5d47f){return _0x5f2f3e===_0xa5d47f;},'eGaMo':_0x35b4(0x2e0),'dbqeS':function(_0x582926,_0x23c148){return _0x582926(_0x23c148);},'eJHjo':'โ
\x20YouTube\x20connection\x20fixed!\x20Testing\x20again...','sioyO':_0x35b4(0x2e1),'oDcyP':_0x35b4(0x2e2),'qHxlO':'โ
\x20Refresh\x20token\x20already\x20available','seTqQ':function(_0x4f6752,_0x24a617){return _0x4f6752!==_0x24a617;},'iMuPK':'IQjyA','OpIDC':_0x35b4(0x2e3)};console[_0x35b4(0x37)](_0x35b4(0x2e4)),console[_0x35b4(0x37)](_0xdf9df6[_0x35b4(0x2e5)],_0x4355c9);try{const _0x1c34bf=await _0xdf9df6[_0x35b4(0x2e6)](debugYouTubeTokens);console[_0x35b4(0x37)](_0xdf9df6[_0x35b4(0x2e7)],_0x1c34bf);if(!_0x1c34bf[_0x35b4(0x174)]){if(_0xdf9df6[_0x35b4(0x2e8)](_0xdf9df6[_0x35b4(0x2e9)],_0xdf9df6[_0x35b4(0x2e9)])){console[_0x35b4(0x37)](_0x35b4(0x2ea));const _0xf50656=await _0xdf9df6[_0x35b4(0x2eb)](fixUserYouTubeConnection,_0x4355c9);if(_0xf50656){console[_0x35b4(0x37)](_0xdf9df6[_0x35b4(0x2ec)]);const _0x20831d=await debugYouTubeTokens();console['log'](_0xdf9df6[_0x35b4(0x2ed)],_0x20831d);}else console['error'](_0xdf9df6[_0x35b4(0x2ee)]);}else return _0x188f79['log'](_0xdf9df6['tNaDG']),_0x3b1ea3['BASE_URL']+_0x35b4(0x7e);}else console['log'](_0xdf9df6[_0x35b4(0x2ef)]);}catch(_0x57c1a4){_0xdf9df6[_0x35b4(0x2f0)](_0x35b4(0x2f1),_0xdf9df6[_0x35b4(0x2f2)])?console['error'](_0xdf9df6['OpIDC'],_0x57c1a4):(_0x24d97e=_0x25c4c0[_0x35b4(0x117)],_0x4603fe['log'](_0xdf9df6[_0x35b4(0x2f3)]),_0x4c070a[_0x35b4(0x37)](_0xdf9df6['nMLXt'],_0x2c0a70[_0x35b4(0x4d)](0x0,0x14)+_0x35b4(0x62)));}};export const requestEmailVerification=async(_0x51237e,_0x5952c2=![])=>{const _0x20ff83={'GCmbp':_0x35b4(0x23a),'vBjBD':function(_0x25a119,_0x44b799){return _0x25a119===_0x44b799;},'yOhMc':_0x35b4(0x23b),'BmjHi':_0x35b4(0x2f4),'rlrVP':_0x35b4(0x2f5),'PMVZp':'Failed\x20to\x20send\x20verification\x20code','UBuSW':'โ\x20Error\x20requesting\x20email\x20verification:','cWxWT':'Network\x20error.\x20Please\x20check\x20your\x20connection\x20and\x20try\x20again.'};try{console[_0x35b4(0x37)](_0x35b4(0x2f6),_0x51237e);const _0x2cb577=await fetch(API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x2f7),{'method':'POST','headers':getDeveloperAuthHeaders(),'body':JSON[_0x35b4(0x91)]({'email':_0x51237e,'action':_0x20ff83['BmjHi'],'testMode':_0x5952c2})}),_0x32bd3a=await _0x2cb577[_0x35b4(0x96)]();if(_0x2cb577['ok'])return{'success':!![],'message':_0x32bd3a[_0x35b4(0x3e)]||_0x35b4(0x2f8)};else{if(_0x20ff83['vBjBD'](_0x20ff83[_0x35b4(0x2f9)],_0x20ff83[_0x35b4(0x2f9)]))return{'success':![],'error':_0x32bd3a[_0x35b4(0x3e)]||_0x20ff83[_0x35b4(0x2fa)]};else{_0x199dae[_0x35b4(0x3f)](_0x35b4(0x237),_0x34b6ea);if(_0x14f126['code']===_0x4180e6[_0x35b4(0x193)])_0x598829['log'](_0x35b4(0x238));else{if(_0x475c66[_0x35b4(0x10)]===_0x693821['IN_PROGRESS'])_0xe11257[_0x35b4(0x37)](_0x20ff83['GCmbp']);else _0x20ff83['vBjBD'](_0x550d97[_0x35b4(0x10)],_0x143bee['PLAY_SERVICES_NOT_AVAILABLE'])&&_0xe4859c['log'](_0x20ff83[_0x35b4(0x2fb)]);}return![];}}}catch(_0x2dcfc0){return console[_0x35b4(0x3f)](_0x20ff83[_0x35b4(0x2fc)],_0x2dcfc0),{'success':![],'error':_0x20ff83[_0x35b4(0x2fd)]};}};export const verifyEmailCode=async(_0x23e6f1,_0x413ad6,_0x3a5a03=![])=>{const _0xf8ae3c={'xhFYX':function(_0x1c7487,_0x611c26,_0x58ffc7){return _0x1c7487(_0x611c26,_0x58ffc7);},'hIqJA':function(_0x137403){return _0x137403();},'sixNw':_0x35b4(0x66),'vUvEj':_0x35b4(0x2fe)};try{console[_0x35b4(0x37)](_0x35b4(0x2ff),_0x23e6f1);const _0x2bdd56=await _0xf8ae3c[_0x35b4(0x300)](fetch,API_CONFIG[_0x35b4(0x11)]+_0x35b4(0x2f7),{'method':'POST','headers':_0xf8ae3c['hIqJA'](getDeveloperAuthHeaders),'body':JSON[_0x35b4(0x91)]({'email':_0x23e6f1,'code':_0x413ad6,'action':_0x35b4(0x301),'testMode':_0x3a5a03})}),_0x49af6d=await _0x2bdd56[_0x35b4(0x96)]();return _0x2bdd56['ok']?{'success':!![],'message':_0x49af6d[_0x35b4(0x3e)]||_0xf8ae3c[_0x35b4(0x302)],'existingUser':_0x49af6d[_0x35b4(0x67)]||![],'token':_0x49af6d['token']}:{'success':![],'error':_0x49af6d[_0x35b4(0x3e)]||_0x35b4(0xaf)};}catch(_0x2e1d39){return console[_0x35b4(0x3f)](_0xf8ae3c[_0x35b4(0x303)],_0x2e1d39),{'success':![],'error':_0x35b4(0x2cf)};}};export const checkEmailVerificationStatus=async(_0x446f27,_0x59e905=![])=>{const _0xe88a1f={'Njtwt':function(_0x10f10e,_0x4fa202,_0x2e9cc7){return _0x10f10e(_0x4fa202,_0x2e9cc7);},'vSTAg':function(_0x3663eb){return _0x3663eb();},'vlUrt':_0x35b4(0x304)};try{const _0x649367=await _0xe88a1f[_0x35b4(0x305)](fetch,API_CONFIG['BASE_URL']+_0x35b4(0x306),{'method':'POST','headers':_0xe88a1f['vSTAg'](getDeveloperAuthHeaders),'body':JSON[_0x35b4(0x91)]({'email':_0x446f27,'testMode':_0x59e905})}),_0x51c4ad=await _0x649367[_0x35b4(0x96)]();return{'success':_0x649367['ok'],'isPending':_0x51c4ad[_0x35b4(0x307)]||![],'message':_0x51c4ad[_0x35b4(0x3e)]};}catch(_0x103c11){return console['error'](_0xe88a1f[_0x35b4(0x308)],_0x103c11),{'success':![],'isPending':![],'error':_0x35b4(0x309)};}};export const initializePlatformAuthService=()=>{const _0x7957de={'OuShz':_0x35b4(0x30a)};console[_0x35b4(0x37)](_0x7957de[_0x35b4(0x30b)]),initializeGoogleSignIn();};
|