@onairos/react-native 3.7.2 → 3.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/api/index.js +219 -9
- package/lib/commonjs/components/BodyText.js +27 -9
- package/lib/commonjs/components/BrandMark.js +111 -10
- package/lib/commonjs/components/CodeInput.js +116 -9
- package/lib/commonjs/components/EmailInput.js +30 -8
- package/lib/commonjs/components/GoogleButton.js +56 -9
- package/lib/commonjs/components/HeadingGroup.js +43 -9
- package/lib/commonjs/components/LLMDataInputModal.js +664 -14
- package/lib/commonjs/components/ModalHeader.js +99 -9
- package/lib/commonjs/components/ModalSheet.js +47 -9
- package/lib/commonjs/components/Onairos.js +380 -14
- package/lib/commonjs/components/OnairosButton.js +313 -13
- package/lib/commonjs/components/OnairosSignInButton.js +130 -12
- package/lib/commonjs/components/Overlay.js +465 -13
- package/lib/commonjs/components/PersonaImage.js +137 -10
- package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
- package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
- package/lib/commonjs/components/PinCreationScreen.js +403 -12
- package/lib/commonjs/components/PinInput.js +464 -9
- package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
- package/lib/commonjs/components/PlatformList.js +137 -10
- package/lib/commonjs/components/PlatformToggle.js +180 -9
- package/lib/commonjs/components/PrimaryButton.js +180 -10
- package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
- package/lib/commonjs/components/SignInStep.js +345 -12
- package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
- package/lib/commonjs/components/VerificationStep.js +176 -11
- package/lib/commonjs/components/WelcomeScreen.js +461 -22
- package/lib/commonjs/components/icons/Basicproficon.js +37 -8
- package/lib/commonjs/components/icons/Basicprofile.js +21 -8
- package/lib/commonjs/components/icons/Checkbox.js +21 -8
- package/lib/commonjs/components/icons/Checkmark.js +27 -8
- package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
- package/lib/commonjs/components/icons/Contenticon.js +39 -8
- package/lib/commonjs/components/icons/EnochE.js +41 -8
- package/lib/commonjs/components/icons/Personalityicon.js +30 -8
- package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
- package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
- package/lib/commonjs/components/icons/Userpreferences.js +21 -8
- package/lib/commonjs/components/icons/index.js +84 -17
- package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
- package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
- package/lib/commonjs/components/onboarding/PinInput.js +283 -10
- package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
- package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
- package/lib/commonjs/config/api.js +56 -7
- package/lib/commonjs/constants/index.js +120 -7
- package/lib/commonjs/context/AuthContext.js +345 -10
- package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
- package/lib/commonjs/hooks/useConnections.js +102 -8
- package/lib/commonjs/hooks/useCredentials.js +178 -10
- package/lib/commonjs/hooks/useUserConnections.js +148 -10
- package/lib/commonjs/index.js +439 -34
- package/lib/commonjs/services/apiClient.js +298 -8
- package/lib/commonjs/services/biometricPinService.js +180 -8
- package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
- package/lib/commonjs/services/chatGPTConversationService.js +275 -9
- package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
- package/lib/commonjs/services/claudeConversationService.js +158 -9
- package/lib/commonjs/services/connectedAccountsService.js +310 -10
- package/lib/commonjs/services/googleAuthService.js +252 -11
- package/lib/commonjs/services/hingeDataExtractor.js +105 -8
- package/lib/commonjs/services/hingeDataService.js +150 -9
- package/lib/commonjs/services/imageCompressionService.js +260 -7
- package/lib/commonjs/services/instagramDataExtractor.js +126 -8
- package/lib/commonjs/services/instagramDataService.js +163 -9
- package/lib/commonjs/services/jwtStorageService.js +276 -7
- package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
- package/lib/commonjs/services/linkedinProfileService.js +222 -9
- package/lib/commonjs/services/linkedinScrapingService.js +230 -8
- package/lib/commonjs/services/llmDataStorage.js +294 -8
- package/lib/commonjs/services/mobileTrainingService.js +186 -8
- package/lib/commonjs/services/netflixDataExtractor.js +120 -8
- package/lib/commonjs/services/netflixDataService.js +198 -9
- package/lib/commonjs/services/pinEncryptionService.js +84 -8
- package/lib/commonjs/services/pinStorageUtils.js +105 -7
- package/lib/commonjs/services/platformAuthService.js +1484 -12
- package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
- package/lib/commonjs/services/sephoraDataService.js +200 -9
- package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
- package/lib/commonjs/services/spotifyDataService.js +241 -9
- package/lib/commonjs/services/storageService.js +404 -8
- package/lib/commonjs/services/telegramDataExtractor.js +115 -8
- package/lib/commonjs/services/telegramDataService.js +499 -9
- package/lib/commonjs/services/trainingApiHelpers.js +73 -7
- package/lib/commonjs/services/userConnectionsService.js +340 -10
- package/lib/commonjs/services/youtubeMigrationService.js +416 -10
- package/lib/commonjs/theme/index.js +250 -7
- package/lib/commonjs/types/ambient.d.js +2 -1
- package/lib/commonjs/types/declarations.d.js +2 -1
- package/lib/commonjs/types/index.js +6 -1
- package/lib/commonjs/types/node-fix.d.js +2 -1
- package/lib/commonjs/types/node-override.d.js +2 -1
- package/lib/commonjs/types/opacity.d.js +2 -1
- package/lib/commonjs/types.js +14 -1
- package/lib/commonjs/utils/Portal.js +98 -8
- package/lib/commonjs/utils/api.js +130 -9
- package/lib/commonjs/utils/assetRegistry.js +210 -35
- package/lib/commonjs/utils/auth.js +112 -9
- package/lib/commonjs/utils/connectorTests.js +613 -29
- package/lib/commonjs/utils/crypto.js +62 -8
- package/lib/commonjs/utils/debugHelper.js +64 -1
- package/lib/commonjs/utils/encryption.js +76 -7
- package/lib/commonjs/utils/eventUtils.js +288 -1
- package/lib/commonjs/utils/haptics.js +66 -9
- package/lib/commonjs/utils/imagePreloader.js +6 -1
- package/lib/commonjs/utils/networkDiagnostics.js +226 -8
- package/lib/commonjs/utils/onairosApi.js +350 -9
- package/lib/commonjs/utils/programmaticFlow.js +117 -9
- package/lib/commonjs/utils/retryHelper.js +220 -1
- package/lib/commonjs/utils/secureStorage.js +349 -10
- package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
- package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
- package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
- package/lib/commonjs/utils/webviewScripts/index.js +698 -15
- package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
- package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
- package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
- package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
- package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
- package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
- package/lib/module/api/index.js +211 -1
- package/lib/module/components/BodyText.js +20 -1
- package/lib/module/components/BrandMark.js +104 -1
- package/lib/module/components/CodeInput.js +109 -1
- package/lib/module/components/EmailInput.js +23 -1
- package/lib/module/components/GoogleButton.js +49 -1
- package/lib/module/components/HeadingGroup.js +36 -1
- package/lib/module/components/LLMDataInputModal.js +656 -7
- package/lib/module/components/ModalHeader.js +92 -1
- package/lib/module/components/ModalSheet.js +39 -1
- package/lib/module/components/Onairos.js +373 -1
- package/lib/module/components/OnairosButton.js +305 -1
- package/lib/module/components/OnairosSignInButton.js +121 -1
- package/lib/module/components/Overlay.js +456 -1
- package/lib/module/components/PersonaImage.js +129 -1
- package/lib/module/components/PersonaLoadingScreen.js +310 -1
- package/lib/module/components/PersonalizationConsentScreen.js +460 -1
- package/lib/module/components/PinCreationScreen.js +396 -1
- package/lib/module/components/PinInput.js +456 -1
- package/lib/module/components/PlatformConnectorsStep.js +1302 -6
- package/lib/module/components/PlatformList.js +129 -1
- package/lib/module/components/PlatformToggle.js +173 -1
- package/lib/module/components/PrimaryButton.js +172 -1
- package/lib/module/components/SignInMatchAnimation.js +189 -1
- package/lib/module/components/SignInStep.js +338 -1
- package/lib/module/components/UniversalOnboarding.js +2770 -1
- package/lib/module/components/VerificationStep.js +168 -1
- package/lib/module/components/WelcomeScreen.js +453 -1
- package/lib/module/components/icons/Basicproficon.js +30 -1
- package/lib/module/components/icons/Basicprofile.js +14 -1
- package/lib/module/components/icons/Checkbox.js +14 -1
- package/lib/module/components/icons/Checkmark.js +20 -1
- package/lib/module/components/icons/Contentanalysis.js +14 -1
- package/lib/module/components/icons/Contenticon.js +32 -1
- package/lib/module/components/icons/EnochE.js +34 -1
- package/lib/module/components/icons/Personalityicon.js +23 -1
- package/lib/module/components/icons/Personalityprofile.js +14 -1
- package/lib/module/components/icons/Personalitytraits.js +14 -1
- package/lib/module/components/icons/Userpreferences.js +14 -1
- package/lib/module/components/icons/index.js +13 -1
- package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
- package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
- package/lib/module/components/onboarding/PinInput.js +274 -1
- package/lib/module/components/onboarding/PlatformConnector.js +240 -1
- package/lib/module/config/PLATFORM_APIS.md +849 -0
- package/lib/module/config/api.js +47 -1
- package/lib/module/constants/index.js +114 -1
- package/lib/module/context/AuthContext.js +335 -1
- package/lib/module/hooks/useConnectedAccounts.js +106 -1
- package/lib/module/hooks/useConnections.js +95 -1
- package/lib/module/hooks/useCredentials.js +171 -6
- package/lib/module/hooks/useUserConnections.js +140 -1
- package/lib/module/index.js +172 -1
- package/lib/module/services/apiClient.js +295 -1
- package/lib/module/services/biometricPinService.js +169 -1
- package/lib/module/services/chatGPTConversationExtractor.js +149 -1
- package/lib/module/services/chatGPTConversationService.js +268 -1
- package/lib/module/services/claudeConversationExtractor.js +97 -1
- package/lib/module/services/claudeConversationService.js +151 -1
- package/lib/module/services/connectedAccountsService.js +293 -1
- package/lib/module/services/googleAuthService.js +241 -1
- package/lib/module/services/hingeDataExtractor.js +99 -1
- package/lib/module/services/hingeDataService.js +143 -1
- package/lib/module/services/imageCompressionService.js +250 -1
- package/lib/module/services/instagramDataExtractor.js +120 -1
- package/lib/module/services/instagramDataService.js +156 -1
- package/lib/module/services/jwtStorageService.js +257 -1
- package/lib/module/services/linkedinDOMExtractor.js +234 -1
- package/lib/module/services/linkedinProfileService.js +210 -1
- package/lib/module/services/linkedinScrapingService.js +219 -1
- package/lib/module/services/llmDataStorage.js +277 -1
- package/lib/module/services/mobileTrainingService.js +173 -1
- package/lib/module/services/netflixDataExtractor.js +114 -1
- package/lib/module/services/netflixDataService.js +191 -1
- package/lib/module/services/pinEncryptionService.js +74 -6
- package/lib/module/services/pinStorageUtils.js +93 -1
- package/lib/module/services/platformAuthService.js +1461 -1
- package/lib/module/services/sephoraDataExtractor.js +134 -1
- package/lib/module/services/sephoraDataService.js +193 -1
- package/lib/module/services/spotifyDataExtractor.js +142 -1
- package/lib/module/services/spotifyDataService.js +234 -1
- package/lib/module/services/storageService.js +383 -1
- package/lib/module/services/telegramDataExtractor.js +109 -1
- package/lib/module/services/telegramDataService.js +493 -1
- package/lib/module/services/trainingApiHelpers.js +67 -1
- package/lib/module/services/userConnectionsService.js +329 -1
- package/lib/module/services/youtubeMigrationService.js +405 -1
- package/lib/module/theme/index.js +245 -1
- package/lib/module/types.js +10 -1
- package/lib/module/utils/Portal.js +90 -1
- package/lib/module/utils/api.js +118 -1
- package/lib/module/utils/assetRegistry.js +200 -34
- package/lib/module/utils/auth.js +100 -1
- package/lib/module/utils/connectorTests.js +600 -27
- package/lib/module/utils/crypto.js +54 -1
- package/lib/module/utils/debugHelper.js +54 -1
- package/lib/module/utils/encryption.js +67 -1
- package/lib/module/utils/eventUtils.js +270 -1
- package/lib/module/utils/haptics.js +59 -8
- package/lib/module/utils/imagePreloader.js +3 -1
- package/lib/module/utils/networkDiagnostics.js +217 -1
- package/lib/module/utils/onairosApi.js +333 -1
- package/lib/module/utils/programmaticFlow.js +111 -1
- package/lib/module/utils/retryHelper.js +211 -1
- package/lib/module/utils/secureStorage.js +330 -6
- package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
- package/lib/module/utils/webviewScripts/claude.js +370 -1
- package/lib/module/utils/webviewScripts/hinge.js +405 -1
- package/lib/module/utils/webviewScripts/index.js +434 -1
- package/lib/module/utils/webviewScripts/instagram.js +448 -1
- package/lib/module/utils/webviewScripts/linkedin.js +874 -1
- package/lib/module/utils/webviewScripts/netflix.js +376 -1
- package/lib/module/utils/webviewScripts/sephora.js +510 -1
- package/lib/module/utils/webviewScripts/spotify.js +413 -1
- package/lib/module/utils/webviewScripts/telegram.js +672 -1
- package/package.json +2 -2
|
@@ -1,7 +1,1303 @@
|
|
|
1
|
+
import React, { useState, useEffect, useRef, useCallback } from 'react';
|
|
2
|
+
import { View, Text, StyleSheet, ScrollView, Vibration, TouchableOpacity, Image, Animated } from 'react-native';
|
|
3
|
+
import { COLORS, SPACING } from '../theme';
|
|
4
|
+
import { triggerHaptic, HapticType } from '../utils/haptics';
|
|
5
|
+
import PersonaImage from './PersonaImage';
|
|
6
|
+
import PrimaryButton from './PrimaryButton';
|
|
7
|
+
import PersonalizationConsentScreen from './PersonalizationConsentScreen';
|
|
8
|
+
import PinCreationScreen from './PinCreationScreen';
|
|
9
|
+
import PersonaLoadingScreen from './PersonaLoadingScreen';
|
|
10
|
+
// LLMDataInputModal removed - LLM platforms use same toggle as OAuth platforms
|
|
11
|
+
import { useConnections } from '../hooks/useConnections';
|
|
12
|
+
import { getPlatformIcon, getConnectedAccountsLookup } from '../services/connectedAccountsService';
|
|
13
|
+
import { initiateOAuth, initiateNativeAuth, hasNativeSDK } from '../services/platformAuthService';
|
|
14
|
+
import { OAuthWebView } from './onboarding/OAuthWebView';
|
|
15
|
+
import { isLLMPlatform, getLLMPlatformUrl, isLinkedInPlatform } from '../utils/webviewScripts';
|
|
16
|
+
// useAuth removed - SDK doesn't have AuthProvider context
|
|
1
17
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import React,{useState,useEffect,useRef,useCallback}from'react';import{View,Text,StyleSheet,ScrollView,Vibration,TouchableOpacity,Image,Animated}from'react-native';function _0x334c(_0x40fc5f,_0x334c89){_0x40fc5f=_0x40fc5f-0x0;const _0x518a5a=_0x40fc();let _0x572d4d=_0x518a5a[_0x40fc5f];return _0x572d4d;}import{COLORS,SPACING}from'../theme';import{triggerHaptic,HapticType}from'../utils/haptics';import _0x57614b from'./PersonaImage';import _0x55724b from'./PrimaryButton';import _0x20d6ce from'./PersonalizationConsentScreen';import _0x925f58 from'./PinCreationScreen';import _0x297def from'./PersonaLoadingScreen';import{useConnections}from'../hooks/useConnections';import{getPlatformIcon}from'../services/connectedAccountsService';import{initiateOAuth,initiateNativeAuth,hasNativeSDK}from'../services/platformAuthService';function _0x40fc(){const _0x5b9cb4=['daily','Daily','Always\x20up-to-date\x20data.','weekly','Weekly','Balanced\x20freshness\x20and\x20efficiency.','biweekly','Biweekly','Less\x20frequent,\x20more\x20efficient.','❌\x20[REFRESH]\x20Error\x20saving\x20refresh\x20frequency:','UdJtU','eCEBN','wTZkD','❌\x20[STORAGE]\x20Error\x20saving\x20to\x20user_connected_platforms:','CnYFm','Error\x20initializing\x20username:','🔄\x20[PLATFORMS]\x20Loading\x20connected\x20platforms\x20from\x20storage...','✅\x20[PLATFORMS]\x20Loaded\x20from\x20user_connected_platforms:','✅\x20[PLATFORMS]\x20Loaded\x20from\x20platform_account_details:','claude','gemini','grok','ZxgZW','FFpBM','@onairos:linkedin_connected','RPzmZ','WRnfH','✅\x20[PLATFORMS]\x20Updated\x20connectedPlatforms\x20state\x20with:','qqEgf','iwXeR','MpkxP','pwjRy','STuHT','onairos_username','LeayZ','efYZR','zgBdf','TDLyn','❌\x20[TOGGLE]\x20No\x20username\x20available\x20-\x20cannot\x20proceed\x20with\x20OAuth','iCDkO','izlDd','vAPHn','jeRbS','NULL','naBWa','user_connected_platforms','adLbs','uNbpH','❌\x20[STORAGE]\x20Error\x20removing\x20from\x20user_connected_platforms:','dmgsW','zQEKJ','IbGDi','jMSYw','USkSu','BxJID','pgVkY','mkNbj','faeys','Creyv','vAPUl','youtube','gmail','zBTRe','JLpCn','SeBfP','NZysj','WgyBB','...)','HLiPC','RNqXi','fRoVu','Highly\x20Recommended','#10B981','#9CA3AF','rwRAj','✅\x20[PLATFORMS]\x20Loaded\x20LinkedIn\x20connection','pinterest','GRKoZ','GpnMQ','svxyj','Initializing...','YouTube','Use\x20your\x20watch\x20history,\x20likes,\x20and\x20subscriptions\x20to\x20enrich\x20your\x20model.','reddit','Use\x20your\x20professional\x20network\x20and\x20career\x20interests\x20to\x20enrich\x20your\x20model.','Gmail','Use\x20your\x20ChatGPT\x20conversations\x20and\x20memories\x20to\x20enrich\x20your\x20model.','Use\x20your\x20Claude\x20conversations\x20to\x20enrich\x20your\x20model.','Use\x20your\x20Gemini\x20conversations\x20to\x20enrich\x20your\x20model.','Use\x20your\x20Grok\x20conversations\x20from\x20X\x20to\x20enrich\x20your\x20model.','dIAhR','VfyVW','yjnYg','Build\x20your\x20persona','Connect\x20platforms\x20to\x20build\x20your\x20private\x20persona','normal','Model\x20Refresh\x20Frequency','Continue','Skip','qkkqh','lZXsW','RmSwX','kSpSH','WKAqT','JTBMr','dbElC','Value','current','YRDtl','yABPN','WZPdR','TMKgo','VdayX','kcVhQ','dyosX','uKEBD','YtcUv','yVkZm','yfmRb','snfbn','JDsIB','BtZpL','cGgpe','eyQDG','dIgUz','lwyOG','sQnGw','JSgAX','ZaRAz','eNYFa','ZBkwr','SUCCESS','log','✅\x20[PERSONA]\x20Applied\x20pending\x20connection:\x20','RcYMR','LEJGk','WRWzQ','forEach','oQXIL','RPmyE','GcbrG','error','add','nativeEvent','contentOffset','layoutMeasurement','width','contentSize','FXGzW','geRdN','vFZqk','QbMfi','RVhYj','YJeZu','GBvch','AZTHx','zLVoy','ZAjLD','mKpGy','LqEGB','QXJyw','cpWaT','dOnoQ','FrJoV','SdXzA','getItem','parse','push','SNKQE','aUAXK','isArray','LUhGD','ThSLp','JUPwn','platform','uHeLN','toLowerCase','DHlZJ','xONOk','map','gGPsz','xIbBb','lpZcb','aOCPe','CiLhU','@onairos:llm_connected:','iEXMv','sbsBN','LILkN','includes','cEndS','mNstR','✅\x20[PLATFORMS]\x20Loaded\x20LLM\x20platform:\x20','xfkUd','eovUc','MdZpo','kvGxB','user_','qSzsL','CFYKX','connected','KqvNw','MMXMj','XoUOP','xEsqH','length','sMCYA','UEXKZ','LodpM','gqedK','DIgsH','LnRrT','has','ntgHv','ChXSg','GTOwD','from','Wdskk','plrMT','bFAwK','LCVrf','KENDl','HzppD','KMoeI','iOCxK','SbirH','GrAKw','udvru','split','name','floor','random','setItem','XQjYZ','CWqmu','vibrate','bmmpy','fGtsI','PojKS','PmJRM','oRbsy','cHDtX','NYzkZ','oMAPQ','sequence','timing','start','Vnpwf','FvmmT','AeZHc','pidCC','nQfzc','mcXtB','NXxsC','moqGe','NfgSk','eBvKq','OnFSC','kalKj','ewqTV','linkedin','zPKEz','lYQUw','vSvRU','SCdlU','FftEC','JzGuV','cFRoR','cgOyM','Claude','DXoPp','ZLayN','Gemini','bwtxw','find','filter','vVcQx','jvsWB','BUTTON_PRESS','tOMHc','bSaMX','🔄\x20[TOGGLE]\x20Platform\x20toggle:\x20','\x20=\x20','cKQuR','NfEbZ','QXCJC','👤\x20[TOGGLE]\x20Username\x20check\x20-\x20stored:\x20\x22','\x22,\x20state:\x20\x22','\x22,\x20valid:\x20\x22','trim','BIazC','iKKNN','isChatPlatform','🤖\x20[LLM]\x20Opening\x20WebView\x20for\x20','\x20login\x20and\x20export...','fHwmi','ERzOd','CPOvj','setValue','🌐\x20[LLM]\x20Opening\x20','\x20URL:','❌\x20[LLM]\x20No\x20URL\x20configured\x20for\x20platform:\x20','Jeusv','ERROR','KZwBf','NwHgK','dbFqd','kOzMb','connecting','WyxVY','🌐\x20[LINKEDIN]\x20Opening\x20LinkedIn\x20URL:','SmJjl','iSKSD','NCSQF','OFBbK','UNXEe','vURtv','yvjgd','🌐\x20[TOGGLE]\x20Starting\x20OAuth\x20flow\x20for\x20','...','wjKHr','substring','rAKGf','✅\x20[TOGGLE]\x20Setting\x20WebView\x20state\x20-\x20showing\x20modal\x20for\x20','liztC','❌\x20[TOGGLE]\x20OAuth\x20failed\x20for\x20','\x20-\x20no\x20URL\x20returned','delete','kublz','IvDBs','disconnected','Yyapo','NvQLe','rDame','✅\x20[STORAGE]\x20Removed\x20','\x20from\x20user_connected_platforms:','rSQkv','removeItem','lsTdv','loop','BdoBE','IsKjO','sLkIp','xRCgK','sHgMq','fIqAA','createElement','IIzku','https://privacy.onairos.io/','KZaCc','DctkL','auqBJ','Linking','openURL','gHJzF','BgmSH','bplZZ','vpFQC','YWVul','vHeqG','OyNlT','size','hRuEh','UKULT','kyjfP','WUgMI','IKmQz','RgpwS','KfGHJ','bMnge','FTRaK','uITcz','💼\x20[LINKEDIN]\x20Opening\x20WebView\x20for\x20LinkedIn\x20login...','JSWVQ','IfOOa','@onairos:model_refresh_frequency','✅\x20[REFRESH]\x20Model\x20refresh\x20frequency\x20set\x20to:\x20','pOprC','wVrGw','xRxCc','kXNCG','adCBf','LwBTn','DhuNy','DdnXg','platformIconButton','platformIconButtonSelected','pinterestIcon','eiNUt','chatgpt','chatgptIcon','dmgNj','claudeIcon','WUySK','connectingDot','jCHNB','mmwtm','leYoW','EFznp','sTAlT','cdHon','success','JWLGZ','✅\x20[STORAGE]\x20Added\x20','\x20to\x20user_connected_platforms:','hviUW','tRWCu','FGFJl','mustm','stringify','toISOString','✅\x20[LLM]\x20','\x20connection\x20stored\x20locally','ndEgY','✅\x20[LINKEDIN]\x20Connection\x20stored\x20locally','VgKZI','JUXWb','sBbuR','SET\x20(','LLwPU','iRdMb','gVIzv','📊\x20[STATE]\x20WebView\x20state\x20changed\x20-\x20showOAuthWebView:\x20',',\x20oauthUrl:\x20','rDTfy','ikqLp','jjfhc','mtgya','gTSJp','wkvZY','fhZiJ','DopxM','Laatk','vaWTl','EuteH','fsaWX','nUDIj','nCNGV','TmLmk','zPeFU','platformCard','platformCardTitle','recommendedBadge','kDAFX','customToggleTrack','YZBEo','customToggleThumb','oIces','iIhCT','✅\x20[WEBVIEW]\x20Rendering\x20OAuthWebView\x20for\x20','\x20with\x20URL:\x20','kBjsU','jkckz','min','Ekjzz','fPkYD','lzvxn','MvPzf','GYOQc','whCut','LimTB','tSVJI','BvImw','oiwOw','SeRai','container','scrollContent','backButtonText','headingContainer','title','UkjIW','subtitle','pTmeb','personaContainer','platformIconsOverlay','platformIconsScrollContent','platformIconsCentered','vlOCB','XYCHS','icon','platformIcon','youtubeIcon','gmailIcon','grokIcon','connectedDot','kOWgC','pageIndicatorContainer','scrollBarTrack','scrollBarThumb','EWbrS','gLWhS','View','interpolate','scrollIndicatorText','cardContainer','BZzJT','LPgPy','yUuGm','wzPxc','cardHeader','recommendedBadgeText','descriptionContainer','platformCardDescription','refreshFrequencySection','refreshFrequencyDescription','How\x20often\x20should\x20your\x20model\x20be\x20refreshed\x20from\x20platforms?','refreshSegmentedControl','refreshSegment','value','refreshSegmentText','label','aRrwN','buttonWrapper','XThhV','kewGR','xDITD','qzhcJ','McWDB','ksLVb','holdProgressBar','skipButton','skipButtonText','LClGd','create','surface','#F0F0F3','center','600','100%','IBM\x20Plex\x20Sans','700','grey800','left','Inter','grey600','absolute','row','#000','#3B82F6','#FFA500','#FFFFFF','space-between','#EFF6FF','#2563EB','auto','#F9FAFB','#F5F5F7','#E0E0E4','#1C1C1E','#8E8E93','500','400','#E5E7EB','#8B5CF6','relative','hidden','grey500','bold'];_0x40fc=function(){return _0x5b9cb4;};return _0x40fc();}import{OAuthWebView}from'./onboarding/OAuthWebView';import{isLLMPlatform,getLLMPlatformUrl,isLinkedInPlatform}from'../utils/webviewScripts';import{setTemporaryPin}from'../services/pinStorageUtils';import AsyncStorage from'@react-native-async-storage/async-storage';export const MODEL_REFRESH_OPTIONS=[{'value':_0x334c(0x0),'label':_0x334c(0x1),'description':_0x334c(0x2)},{'value':_0x334c(0x3),'label':_0x334c(0x4),'description':_0x334c(0x5)},{'value':_0x334c(0x6),'label':_0x334c(0x7),'description':_0x334c(0x8)}];const PlatformConnectorsStep=({onUpdate:_0x426113,onSkip:_0x3bc8d0,loading:loading=![],onPinComplete:_0x1c286e,onReviewerBypass:_0x2dd414,onLogout:_0x47d54e,allowedPlatforms:_0x373f0b,recommendedPlatforms:_0x4e460d,initialConnectedPlatforms:_0x49a5b3,onRefreshFrequencyChange:_0x5207bc,initialRefreshFrequency:initialRefreshFrequency='weekly'})=>{const _0x45ac4c={'eNYFa':function(_0x1074d0,_0x1ab5c9,_0xa8a771){return _0x1074d0(_0x1ab5c9,_0xa8a771);},'LEJGk':function(_0x10cdfa,_0x3e2593){return _0x10cdfa-_0x3e2593;},'NISUT':function(_0x9b372c,_0x4178d7){return _0x9b372c/_0x4178d7;},'snfbn':function(_0x308812,_0x5ac02a){return _0x308812(_0x5ac02a);},'WRWzQ':function(_0x16a035,_0x563548){return _0x16a035>_0x563548;},'RVhYj':_0x334c(0x9),'oAxDY':_0x334c(0xa),'BtZpL':_0x334c(0xb),'cGgpe':function(_0x3b5e41,_0x5a4c6a){return _0x3b5e41!==_0x5a4c6a;},'eyQDG':'SCWZE','dIgUz':'GOpst','lwyOG':function(_0x16b53a,_0x28b2ab){return _0x16b53a>_0x28b2ab;},'sQnGw':function(_0x998a35,_0xb95833){return _0x998a35===_0xb95833;},'JSgAX':_0x334c(0xc),'RcYMR':function(_0x127253,_0x110462){return _0x127253(_0x110462);},'mKpGy':_0x334c(0xd),'LqEGB':_0x334c(0xe),'QXJyw':function(_0x30f7e8,_0x5dde55){return _0x30f7e8&&_0x5dde55;},'cpWaT':function(_0x228988,_0x21fb10){return _0x228988(_0x21fb10);},'dOnoQ':_0x334c(0xf),'CXbMR':function(_0x326bea,_0x44f715){return _0x326bea*_0x44f715;},'FrJoV':function(_0x509a71,_0x3b4ffb){return _0x509a71(_0x3b4ffb);},'SdXzA':_0x334c(0x10),'SNKQE':_0x334c(0x11),'aUAXK':'platform_account_details','xONOk':_0x334c(0x12),'gGPsz':'chatgpt','xIbBb':_0x334c(0x13),'ZLayN':_0x334c(0x14),'lpZcb':_0x334c(0x15),'aOCPe':'dcezX','CiLhU':'syten','iEXMv':_0x334c(0x16),'FTRaK':function(_0xb1bdf0,_0x5442cf){return _0xb1bdf0===_0x5442cf;},'QeUBT':_0x334c(0x17),'cEndS':'xwtim','eovUc':_0x334c(0x18),'MdZpo':_0x334c(0x19),'xEsqH':'linkedin','KqvNw':function(_0x3fae60,_0x4eaf75){return _0x3fae60===_0x4eaf75;},'xygLn':_0x334c(0x1a),'MMXMj':'bLhUy','JTBMr':function(_0x45261e,_0x2c2112){return _0x45261e(_0x2c2112);},'bFAwK':'❌\x20[PLATFORMS]\x20Error\x20loading\x20connected\x20platforms\x20from\x20storage:','KlRHX':function(_0x200c71,_0x61ddda){return _0x200c71(_0x61ddda);},'GBvch':_0x334c(0x1b),'vPEbD':_0x334c(0x1c),'AZTHx':_0x334c(0x1d),'zLVoy':function(_0x501b21,_0x82c3aa){return _0x501b21===_0x82c3aa;},'ZAjLD':_0x334c(0x1e),'lBYkH':function(_0x57c5c4){return _0x57c5c4();},'KENDl':_0x334c(0x1f),'UKULT':function(_0x36450b,_0x1ed033){return _0x36450b(_0x1ed033);},'iOCxK':function(_0x549cf6,_0x3276f0){return _0x549cf6===_0x3276f0;},'SbirH':_0x334c(0x20),'GrAKw':function(_0x32e46d,_0x4d1eca){return _0x32e46d===_0x4d1eca;},'udvru':function(_0x48821e,_0x105e93){return _0x48821e===_0x105e93;},'SvhiE':function(_0x4e5dc0,_0x2ef0aa){return _0x4e5dc0*_0x2ef0aa;},'XQjYZ':_0x334c(0x21),'fGtsI':_0x334c(0x22),'PmJRM':function(_0x3e9c32,_0x4f4fca){return _0x3e9c32*_0x4f4fca;},'XZSDl':function(_0x18c0b0,_0x43b2da){return _0x18c0b0(_0x43b2da);},'LCVrf':function(_0x12f77a){return _0x12f77a();},'cHDtX':function(_0x278f4d){return _0x278f4d();},'eotNb':_0x334c(0x23),'oMAPQ':_0x334c(0x24),'kOWgC':function(_0x201d21,_0x85e855){return _0x201d21>_0x85e855;},'FvmmT':function(_0x55f38d,_0x221d39){return _0x55f38d/_0x221d39;},'AeZHc':function(_0xf336e,_0x13209d){return _0xf336e(_0x13209d);},'jvsWB':function(_0xa77c5e,_0x52bbfe){return _0xa77c5e(_0x52bbfe);},'KZaCc':function(_0x4e9813,_0x94f971){return _0x4e9813!==_0x94f971;},'vVcQx':_0x334c(0x25),'SpGOg':'YBdqi','ERzOd':function(_0x1924ad,_0x3c8e95){return _0x1924ad(_0x3c8e95);},'UBmyn':function(_0x270e03,_0x2df269){return _0x270e03(_0x2df269);},'IIzku':function(_0x4bd5e4,_0x3c0477){return _0x4bd5e4(_0x3c0477);},'yfmRb':function(_0x667f37,_0x1cc7ce){return _0x667f37(_0x1cc7ce);},'tOMHc':_0x334c(0x26),'bSaMX':function(_0x25ae8e,_0x284908){return _0x25ae8e(_0x284908);},'wkvZY':function(_0x56c4d7,_0x838d8d){return _0x56c4d7(_0x838d8d);},'cKQuR':_0x334c(0x27),'QXCJC':function(_0x170502,_0x37cd01){return _0x170502||_0x37cd01;},'vpFQC':function(_0x32ebe2,_0x4c3bb1){return _0x32ebe2===_0x4c3bb1;},'fHwmi':function(_0x1697a9,_0x4b44fd){return _0x1697a9(_0x4b44fd);},'CPOvj':_0x334c(0x28),'Jeusv':function(_0x4dd1c3,_0x555b22){return _0x4dd1c3(_0x555b22);},'lZXsW':function(_0x21d28b,_0x2f5ff3){return _0x21d28b(_0x2f5ff3);},'kcVhQ':function(_0x5a2b42,_0x1b2000){return _0x5a2b42(_0x1b2000);},'KZwBf':_0x334c(0x29),'NwHgK':'vgiDR','dbFqd':function(_0x563618,_0x2d4eed){return _0x563618(_0x2d4eed);},'kOzMb':function(_0x20d400,_0xe81e72){return _0x20d400(_0xe81e72);},'WyxVY':'https://www.linkedin.com/login','SmJjl':function(_0xe6d98f,_0x3e7a6a,_0x232dc1){return _0xe6d98f(_0x3e7a6a,_0x232dc1);},'UNXEe':function(_0x261587,_0x178584){return _0x261587(_0x178584);},'yvjgd':_0x334c(0x2a),'wjKHr':function(_0x359e6c,_0x58d7a4){return _0x359e6c+_0x58d7a4;},'soGpO':'...','rAKGf':_0x334c(0x2b),'liztC':function(_0x135e68,_0x3beca0){return _0x135e68(_0x3beca0);},'sLkIp':function(_0x2cb5a9,_0x3fde49){return _0x2cb5a9(_0x3fde49);},'VgKZI':function(_0x21f2ca,_0x33f858){return _0x21f2ca(_0x33f858);},'kublz':function(_0x529e14,_0x15b02e){return _0x529e14(_0x15b02e);},'IvDBs':function(_0x24190e,_0x3efd42){return _0x24190e(_0x3efd42);},'Yyapo':_0x334c(0x2c),'NvQLe':'QOUDG','rDame':_0x334c(0x2d),'rSQkv':_0x334c(0x2e),'InVrl':_0x334c(0x2f),'WzByh':_0x334c(0x30),'FYDbc':function(_0x306af0,_0xb5ff55){return _0x306af0===_0xb5ff55;},'lsTdv':_0x334c(0x31),'bBrGV':'ubmhX','BPntQ':function(_0x8f7f2b,_0x55fe9f){return _0x8f7f2b===_0x55fe9f;},'BdoBE':_0x334c(0x32),'xRCgK':function(_0x196100,_0x197637){return _0x196100(_0x197637);},'sHgMq':_0x334c(0x33),'DctkL':_0x334c(0x34),'BgmSH':function(_0x1336e2,_0x4aaf1f){return _0x1336e2!==_0x4aaf1f;},'bplZZ':_0x334c(0x35),'YWVul':_0x334c(0x36),'vHeqG':_0x334c(0x37),'OyNlT':_0x334c(0x38),'QQdKd':'rtenu','IKmQz':function(_0x489f3a,_0x164c43){return _0x489f3a===_0x164c43;},'RgpwS':_0x334c(0x39),'KfGHJ':function(_0x5de0f8,_0xcaaa7b){return _0x5de0f8(_0xcaaa7b);},'bMnge':function(_0xb9b3e3,_0x596329){return _0xb9b3e3(_0x596329);},'wCIOR':function(_0x7feca2,_0x882c8f){return _0x7feca2(_0x882c8f);},'yABPN':function(_0x37c33d,_0x5775e3){return _0x37c33d(_0x5775e3);},'zvDqj':_0x334c(0x3a),'IfOOa':function(_0x3293c2,_0xd3ac59){return _0x3293c2(_0xd3ac59);},'dbElC':function(_0x48e9fe,_0x8d96cc){return _0x48e9fe(_0x8d96cc);},'pOprC':function(_0x1b0e14,_0x11b6b1){return _0x1b0e14!==_0x11b6b1;},'wVrGw':'CEBHD','xRxCc':_0x334c(0x3b),'DhuNy':function(_0x363b43,_0x456c4f){return _0x363b43===_0x456c4f;},'DdnXg':'connecting','cdHon':function(_0x2d20e6,_0x10a087){return _0x2d20e6===_0x10a087;},'pidCC':_0x334c(0x3c),'zPeFU':function(_0x449209,_0x59924f){return _0x449209===_0x59924f;},'FftEC':_0x334c(0x3d),'eiNUt':function(_0x4ddb00,_0x3a0f4c){return _0x4ddb00===_0x3a0f4c;},'dmgNj':function(_0x56036b,_0x2d2369){return _0x56036b===_0x2d2369;},'WUySK':'contain','kXNCG':function(_0x285f7b,_0x34bb39){return _0x285f7b!==_0x34bb39;},'adCBf':_0x334c(0x3e),'LwBTn':'VOqiq','mmwtm':function(_0x3ebe39,_0x21dbfd){return _0x3ebe39===_0x21dbfd;},'jCHNB':_0x334c(0x3f),'EFznp':function(_0x3f3cb7,_0x57b044){return _0x3f3cb7(_0x57b044);},'taYjQ':function(_0x466146,_0x1fa15e){return _0x466146(_0x1fa15e);},'sTAlT':_0x334c(0x40),'JWLGZ':'error','kalKj':function(_0x4761a3,_0x837340){return _0x4761a3(_0x837340);},'hviUW':_0x334c(0x41),'mustm':function(_0x4280d3,_0x45e21b){return _0x4280d3(_0x45e21b);},'ndEgY':_0x334c(0x42),'zOhhW':function(_0x2ae964,_0x37db9b){return _0x2ae964(_0x37db9b);},'dyosX':function(_0x133b0a,_0x4e8bc4){return _0x133b0a(_0x4e8bc4);},'JUXWb':function(_0x2aaa12,_0x198fac){return _0x2aaa12(_0x198fac);},'sBbuR':function(_0x380fb0,_0x31a484){return _0x380fb0(_0x31a484);},'bwtxw':function(_0x4806cd,_0x1e3211){return _0x4806cd(_0x1e3211);},'kBjsU':function(_0x274cd7,_0x156f0e){return _0x274cd7+_0x156f0e;},'LLwPU':_0x334c(0x43),'iRdMb':function(_0x17a61e,_0x432c48){return _0x17a61e===_0x432c48;},'DvcmX':_0x334c(0x44),'gVIzv':_0x334c(0x45),'VdayX':function(_0x5537b6,_0x3b71cc){return _0x5537b6(_0x3b71cc);},'mtgya':function(_0x2814ce,_0x10b135){return _0x2814ce(_0x10b135);},'kSpSH':function(_0x533c28,_0x52172a){return _0x533c28(_0x52172a);},'gTSJp':function(_0x3f5431){return _0x3f5431();},'fhZiJ':function(_0x1cfa9b,_0x324b4c){return _0x1cfa9b!==_0x324b4c;},'bKDha':_0x334c(0x46),'vaWTl':function(_0x5d8a75){return _0x5d8a75();},'YtcUv':function(_0x3189b4,_0x500319){return _0x3189b4(_0x500319);},'kDAFX':_0x334c(0x47),'TzLPH':_0x334c(0x48),'YZBEo':_0x334c(0x49),'EuteH':function(_0x4cef8e,_0x13204d){return _0x4cef8e!==_0x13204d;},'nUDIj':'TJVUn','oIces':_0x334c(0x4a),'COpSc':function(_0x2a3f3b,_0xdbf012){return _0x2a3f3b(_0xdbf012);},'XDorJ':function(_0x1b9175,_0x5295a5){return _0x1b9175||_0x5295a5;},'jkckz':function(_0x4e29fd,_0x1d045f){return _0x4e29fd+_0x1d045f;},'lzvxn':_0x334c(0x4b),'LimTB':function(_0x32adff,_0x506d60){return _0x32adff(_0x506d60);},'tSVJI':function(_0x21aebb,_0x2064f5){return _0x21aebb(_0x2064f5);},'yZRHQ':function(_0x4dbc1d,_0x5051eb){return _0x4dbc1d===_0x5051eb;},'oiwOw':function(_0x2cf365,_0x34ea6d){return _0x2cf365(_0x34ea6d);},'vlOCB':function(_0xeff979,_0x493292){return _0xeff979===_0x493292;},'XYCHS':function(_0x18e5ac,_0x25a0ed){return _0x18e5ac===_0x25a0ed;},'eBvKq':_0x334c(0x4c),'BZzJT':_0x334c(0x4d),'LPgPy':function(_0x202edb,_0x47e950){return _0x202edb===_0x47e950;},'yUuGm':function(_0x587458,_0x3a680a){return _0x587458===_0x3a680a;},'wzPxc':function(_0x199194,_0x555fb2){return _0x199194===_0x555fb2;},'xDITD':function(_0x3659f6,_0x36375f){return _0x3659f6>_0x36375f;},'qzhcJ':function(_0x5b36f0,_0x27cef8){return _0x5b36f0===_0x27cef8;},'McWDB':_0x334c(0x4e),'ksLVb':_0x334c(0x4f),'qkkqh':function(_0x49fc49,_0x325751){return _0x49fc49(_0x325751);},'RmSwX':function(_0x1bbfe5,_0x388c19){return _0x1bbfe5(_0x388c19);},'WKAqT':function(_0x126b18,_0x148ef6){return _0x126b18(_0x148ef6);},'yVkZm':function(_0xf50660,_0x56c971){return _0xf50660(_0x56c971);},'YRDtl':function(_0x53d30b,_0x1fec1b){return _0x53d30b(_0x1fec1b);},'jWJJa':function(_0x531621,_0x484a61){return _0x531621(_0x484a61);},'WZPdR':function(_0x1eb57b,_0x221d60){return _0x1eb57b(_0x221d60);},'TMKgo':_0x334c(0x50),'uKEBD':function(_0x40ce93,_0x540511){return _0x40ce93(_0x540511);},'BznMI':function(_0x3b0d30,_0x28259b,_0xdc57d6){return _0x3b0d30(_0x28259b,_0xdc57d6);},'YJeZu':function(_0x237e2f,_0x69ff00,_0x24d82f){return _0x237e2f(_0x69ff00,_0x24d82f);},'NYzkZ':function(_0x8aabcd,_0x11cdff,_0x39dc20){return _0x8aabcd(_0x11cdff,_0x39dc20);},'Vnpwf':function(_0x246302,_0x1144fc,_0x28ef98){return _0x246302(_0x1144fc,_0x28ef98);},'nQfzc':_0x334c(0x51),'mcXtB':function(_0x1fee0b,_0x2a41c4){return _0x1fee0b(_0x2a41c4);},'NXxsC':_0x334c(0x52),'moqGe':_0x334c(0x53),'NfgSk':'Use\x20your\x20posts\x20and\x20comments\x20to\x20enrich\x20your\x20model.','OnFSC':'Pinterest','ewqTV':'Use\x20your\x20pins,\x20boards,\x20and\x20interests\x20to\x20enrich\x20your\x20model.','zPKEz':'LinkedIn','lYQUw':function(_0x524d87,_0x2deef6){return _0x524d87(_0x2deef6);},'vSvRU':_0x334c(0x54),'qyVur':_0x334c(0x55),'SCdlU':function(_0x2783e7,_0xce5355){return _0x2783e7(_0xce5355);},'JzGuV':'Use\x20your\x20email\x20information\x20to\x20enrich\x20your\x20model.','cFRoR':'ChatGPT','cgOyM':_0x334c(0x56),'LoAQH':function(_0x4636a4,_0x359822){return _0x4636a4(_0x359822);},'DXoPp':_0x334c(0x57),'CRpni':_0x334c(0x58),'Erhiu':'Grok','lXHAi':_0x334c(0x59),'xosQW':function(_0x119d4c,_0x50d28a,_0x56c220){return _0x119d4c(_0x50d28a,_0x56c220);},'eAlIh':function(_0x1d16ba,_0x39b24d){return _0x1d16ba+_0x39b24d;},'Ekjzz':function(_0xe57982,_0x4e5e7e){return _0xe57982!==_0x4e5e7e;},'fPkYD':_0x334c(0x5a),'MvPzf':function(_0x236923,_0x2358d0){return _0x236923===_0x2358d0;},'GYOQc':_0x334c(0x5b),'BvImw':function(_0x21033e,_0x530dc9){return _0x21033e===_0x530dc9;},'kfwUj':_0x334c(0x5c),'SeRai':'SfdOl','UkjIW':_0x334c(0x5d),'pTmeb':_0x334c(0x5e),'iQRdL':_0x334c(0x5f),'EWbrS':function(_0x2c704e,_0x25dede){return _0x2c704e*_0x25dede;},'gLWhS':function(_0x4d8948,_0x2c0d7d){return _0x4d8948>_0x2c0d7d;},'vDXPj':_0x334c(0x60),'aRrwN':function(_0x276787,_0x57e488){return _0x276787===_0x57e488;},'XThhV':_0x334c(0x61),'kewGR':function(_0x3b6648,_0x31560b){return _0x3b6648===_0x31560b;},'LClGd':_0x334c(0x62)};var _0x313e62;const [_0x12b47b,_0x4a5bc6]=_0x45ac4c[_0x334c(0x63)](useState,()=>new Set(_0x49a5b3||[])),[_0x469f5b,_0x1cea89]=useState(![]),[_0x32a359,_0x34f81]=_0x45ac4c[_0x334c(0x64)](useState,![]),[_0x5a0f7c,_0x5123f6]=_0x45ac4c[_0x334c(0x65)](useState,![]),[_0x4b7ab1,_0x4b4af0]=_0x45ac4c[_0x334c(0x66)](useState,''),[_0xd85c2a,_0x292894]=useState({}),[_0x7ff725,_0x371830]=useState(![]),[_0x4e3d6e,_0x351dc9]=useState(''),[_0x44aac3,_0x352132]=_0x45ac4c[_0x334c(0x67)](useState,''),[_0x2f5827,_0x4ecefb]=_0x45ac4c[_0x334c(0x68)](useState,null),[_0x3d038d,_0xb82265]=useState(0x0),_0x1259dd=_0x45ac4c[_0x334c(0x69)](useRef,new Animated[(_0x334c(0x6a))](0x0))[_0x334c(0x6b)],[_0x55d8d1,_0x6f73cb]=_0x45ac4c['yVkZm'](useState,''),_0x39df7f=useRef(null),[_0x153ac9,_0x29e5bc]=_0x45ac4c[_0x334c(0x6c)](useState,!![]),_0x39a012=_0x45ac4c['jWJJa'](useRef,new Animated[(_0x334c(0x6a))](0x0))[_0x334c(0x6b)],[_0x37302c,_0x235e7f]=useState(0x0),_0x4d2c5d=_0x45ac4c[_0x334c(0x6d)](useRef,0x0),[_0x531d35,_0x38cd96]=useState(''),[_0x1c1b26,_0x25a135]=useState(0x0),[_0x533705,_0x293f33]=_0x45ac4c[_0x334c(0x6e)](useState,_0x45ac4c[_0x334c(0x6f)]),[_0x427874,_0x4695de]=_0x45ac4c[_0x334c(0x70)](useState,![]),[_0x66fc96,_0x3bc161]=useState(![]),[_0x1c0494,_0x40694d]=useState(null),[_0x2cb56d,_0x592cbe]=_0x45ac4c['UBmyn'](useState,null),_0x28541f=useRef(null),[_0x41ec96,_0x421d4f]=_0x45ac4c[_0x334c(0x71)](useState,![]),[_0x6c4b0a,_0x567f3f]=_0x45ac4c[_0x334c(0x72)](useState,''),[_0x6b94d0,_0x1ee7c9]=_0x45ac4c[_0x334c(0x73)](useState,null),[_0x163b53,_0x4fbbf3]=_0x45ac4c[_0x334c(0x74)](useState,![]),[_0x4fe761,_0x23e36e]=_0x45ac4c[_0x334c(0x66)](useState,![]),[_0xfa2275,_0xa54e68]=_0x45ac4c[_0x334c(0x75)](useState,null),[_0x4ae0ee,_0x145487]=_0x45ac4c[_0x334c(0x76)](useState,initialRefreshFrequency),{connectPlatform:_0xcae876,disconnectPlatform:_0x2c9fdc,isConnecting:_0x1a1f6e}=useConnections(),_0x18f415=null;_0x45ac4c['BznMI'](useEffect,()=>{const _0x4bd990={'KJwOw':function(_0x254b4b,_0xeb72bb){return _0x45ac4c[_0x334c(0x77)](_0x254b4b,_0xeb72bb);},'cxsWe':function(_0x4fa465,_0x437fef){return _0x4fa465===_0x437fef;},'oQXIL':_0x45ac4c['oAxDY'],'RPmyE':_0x334c(0x78),'ENQix':_0x45ac4c[_0x334c(0x79)]};if(_0x45ac4c[_0x334c(0x7a)](_0x45ac4c[_0x334c(0x7b)],_0x45ac4c[_0x334c(0x7c)])){if(_0x49a5b3&&_0x45ac4c[_0x334c(0x7d)](_0x49a5b3['length'],0x0)){if(_0x45ac4c[_0x334c(0x7e)](_0x45ac4c[_0x334c(0x7f)],_0x334c(0x80))){const _0x24947a={'ZBkwr':function(_0xacc031,_0x2fee62){return _0xacc031(_0x2fee62);}},_0x395349=_0x45ac4c[_0x334c(0x81)](_0x5d4af1,()=>{_0x24947a[_0x334c(0x82)](_0xb27015,_0x28e822=>{const _0x122f51=new _0x1b64ae(_0x28e822);return _0x122f51['add'](_0x1fe4d5),_0x122f51;}),_0x24947a[_0x334c(0x82)](_0x1d2db1,_0x491dd9[_0x334c(0x83)]),_0x4dc38e[_0x334c(0x84)](_0x334c(0x85)+_0x7b8167),_0x24947a['ZBkwr'](_0xbfea3e,null);},0x12c);return()=>_0x2e5bb1(_0x395349);}else _0x45ac4c[_0x334c(0x86)](_0x4a5bc6,_0x4e4211=>{const _0x3406ab={'FXGzW':function(_0x56a8b5,_0x1f1d95){return _0x45ac4c[_0x334c(0x87)](_0x56a8b5,_0x1f1d95);},'kzjHT':function(_0x42c88b,_0x5e2d1d){return _0x45ac4c['NISUT'](_0x42c88b,_0x5e2d1d);},'geRdN':function(_0x5cca7c,_0x1ff74c){return _0x45ac4c[_0x334c(0x77)](_0x5cca7c,_0x1ff74c);},'vFZqk':function(_0x10b542,_0xc82d0a){return _0x45ac4c[_0x334c(0x88)](_0x10b542,_0xc82d0a);},'QbMfi':function(_0x5b6046,_0x2ae45b){return _0x5b6046(_0x2ae45b);}},_0x3c155b=new Set(_0x4e4211);let _0x1c1c99=![];return _0x49a5b3[_0x334c(0x89)](_0x5192ec=>{const _0x456d39={'GcbrG':function(_0x50c78c,_0x3781dc){return _0x4bd990['KJwOw'](_0x50c78c,_0x3781dc);}};if(_0x4bd990['cxsWe'](_0x4bd990[_0x334c(0x8a)],_0x4bd990['oQXIL']))!_0x3c155b['has'](_0x5192ec)&&(_0x4bd990['cxsWe'](_0x4bd990[_0x334c(0x8b)],_0x4bd990['ENQix'])?(_0x456d39[_0x334c(0x8c)](_0x213b19,_0x48d857=>({..._0x48d857,[_0x1f263a]:_0x334c(0x8d)})),_0x456d39[_0x334c(0x8c)](_0x424793,_0x2a0a27['ERROR'])):(_0x3c155b[_0x334c(0x8e)](_0x5192ec),_0x1c1c99=!![]));else{const _0x17d891=_0x1dadb2[_0x334c(0x8f)][_0x334c(0x90)]['x'],_0x5aefed=_0x57f0cc['nativeEvent'][_0x334c(0x91)][_0x334c(0x92)],_0x2acfe3=_0x208c3e[_0x334c(0x8f)][_0x334c(0x93)]['width'];_0x5d2888[_0x334c(0x6b)]=_0x17d891;const _0x30d31e=_0x3406ab[_0x334c(0x94)](_0x2acfe3,_0x5aefed),_0x49ff48=_0x30d31e>0x0?_0x3406ab['kzjHT'](_0x17d891,_0x30d31e):0x0;_0x3406ab[_0x334c(0x95)](_0xdbaf7f,_0x49ff48),_0x3406ab[_0x334c(0x96)](_0x17d891,0xa)&&_0xb7568b&&_0x3406ab[_0x334c(0x97)](_0x48d43e,![]);}}),_0x1c1c99?_0x3c155b:_0x4e4211;});}}else _0x562bdd[_0x334c(0x8d)](_0x45ac4c[_0x334c(0x98)],_0x56294f);},[_0x49a5b3]),_0x45ac4c[_0x334c(0x99)](useEffect,()=>{const _0x1cb9df={'mNstR':function(_0x38afa7,_0x4afc7b){return _0x45ac4c['KlRHX'](_0x38afa7,_0x4afc7b);},'plrMT':_0x45ac4c[_0x334c(0x9a)],'sMCYA':_0x45ac4c['vPEbD'],'UEXKZ':_0x45ac4c[_0x334c(0x9b)],'LodpM':function(_0x54a534,_0x3654fc){return _0x45ac4c[_0x334c(0x9c)](_0x54a534,_0x3654fc);},'gqedK':_0x45ac4c[_0x334c(0x9d)]},_0x2437bb=async()=>{const _0x522970={'LUhGD':_0x45ac4c[_0x334c(0x9e)],'ThSLp':function(_0x318fa8,_0x3e3cee){return _0x45ac4c[_0x334c(0x7e)](_0x318fa8,_0x3e3cee);},'JUPwn':_0x45ac4c[_0x334c(0x9f)],'uHeLN':function(_0x30a84d,_0x3d18cb){return _0x30a84d===_0x3d18cb;},'sbsBN':function(_0x46b5fa,_0x2a3f65){return _0x45ac4c[_0x334c(0xa0)](_0x46b5fa,_0x2a3f65);},'xfkUd':function(_0x14838c,_0x2de3c5){return _0x45ac4c[_0x334c(0xa1)](_0x14838c,_0x2de3c5);},'kvGxB':_0x45ac4c[_0x334c(0xa2)],'qSzsL':function(_0x2f0903,_0x46932e){return _0x45ac4c['CXbMR'](_0x2f0903,_0x46932e);},'CFYKX':function(_0x5bd856,_0x572d61){return _0x45ac4c[_0x334c(0xa1)](_0x5bd856,_0x572d61);},'XoUOP':function(_0x3fc6a5,_0x518b33){return _0x45ac4c[_0x334c(0xa3)](_0x3fc6a5,_0x518b33);}};try{console[_0x334c(0x84)](_0x45ac4c[_0x334c(0xa4)]);const _0x1b9fb8=[],_0x1fb27d=await AsyncStorage[_0x334c(0xa5)]('user_connected_platforms');if(_0x1fb27d){const _0x3200b5=JSON[_0x334c(0xa6)](_0x1fb27d);Array['isArray'](_0x3200b5)&&(_0x1b9fb8[_0x334c(0xa7)](..._0x3200b5),console[_0x334c(0x84)](_0x45ac4c[_0x334c(0xa8)],_0x3200b5));}const _0x4a2540=await AsyncStorage[_0x334c(0xa5)](_0x45ac4c[_0x334c(0xa9)]);if(_0x4a2540){const _0x2c0adc=JSON[_0x334c(0xa6)](_0x4a2540);Array[_0x334c(0xaa)](_0x2c0adc)&&(_0x2c0adc['forEach'](_0x3a644e=>{const _0xa6a85={'DHlZJ':_0x522970[_0x334c(0xab)]};if(_0x522970[_0x334c(0xac)](_0x522970[_0x334c(0xad)],_0x522970[_0x334c(0xad)])){var _0x458ea6;const _0x29c3fe=_0x522970[_0x334c(0xac)](_0x458ea6=_0x3a644e[_0x334c(0xae)],null)||_0x522970[_0x334c(0xaf)](_0x458ea6,void 0x0)?void 0x0:_0x458ea6[_0x334c(0xb0)]();_0x29c3fe&&!_0x1b9fb8['includes'](_0x29c3fe)&&_0x1b9fb8[_0x334c(0xa7)](_0x29c3fe);}else _0x3d94cc[_0x334c(0x8d)](_0xa6a85[_0x334c(0xb1)],_0x108960);}),console[_0x334c(0x84)](_0x45ac4c[_0x334c(0xb2)],_0x2c0adc[_0x334c(0xb3)](_0x20e846=>_0x20e846['platform'])));}const _0xde0d42=[_0x45ac4c[_0x334c(0xb4)],_0x45ac4c[_0x334c(0xb5)],_0x45ac4c['ZLayN'],_0x45ac4c[_0x334c(0xb6)]];for(const _0x444c99 of _0xde0d42){if(_0x45ac4c[_0x334c(0x7a)](_0x45ac4c[_0x334c(0xb7)],_0x45ac4c[_0x334c(0xb8)])){const _0xa66734=await AsyncStorage[_0x334c(0xa5)](_0x334c(0xb9)+_0x444c99);if(_0xa66734){if(_0x45ac4c['cGgpe'](_0x45ac4c[_0x334c(0xba)],_0x45ac4c[_0x334c(0xba)])){const _0x1d3102={'LILkN':function(_0x139966,_0x42be0f){return _0x139966(_0x42be0f);}};if(_0x522970[_0x334c(0xbb)](_0x5ad6e4,!_0x1cfd02)){const _0x22eb4e=_0x423b46(()=>{_0x1d3102[_0x334c(0xbc)](_0x2320ed,_0x3d3125=>{const _0x226182=new _0x2b16d5(_0x3d3125);return _0x226182['add'](_0x377eb3),_0x226182;}),_0x1d3102[_0x334c(0xbc)](_0x3891fd,_0x5cc62d[_0x334c(0x83)]),_0x4a3acb[_0x334c(0x84)](_0x334c(0x85)+_0x511adc),_0x1d3102['LILkN'](_0x12e82b,null);},0x12c);return()=>_0x10becc(_0x22eb4e);}}else{const _0x41076f=JSON[_0x334c(0xa6)](_0xa66734);_0x41076f['connected']&&!_0x1b9fb8[_0x334c(0xbd)](_0x444c99)&&(_0x45ac4c['FTRaK'](_0x45ac4c['QeUBT'],_0x45ac4c[_0x334c(0xbe)])?_0x1cb9df[_0x334c(0xbf)](_0x2df8ed,_0x3fe57e):(_0x1b9fb8[_0x334c(0xa7)](_0x444c99),console['log'](_0x334c(0xc0)+_0x444c99)));}}}else _0x522970[_0x334c(0xc1)](_0x5d4d57,_0x5ccf0f),_0x522970[_0x334c(0xc1)](_0x2279fb,_0x537a3a),_0x416096(![]),_0x513ba9(!![]);}const _0x2adb47=await AsyncStorage['getItem'](_0x45ac4c[_0x334c(0xc2)]);if(_0x2adb47){if(_0x45ac4c['MdZpo']!==_0x45ac4c[_0x334c(0xc3)]){_0x3136fd[_0x334c(0x8d)](_0x522970[_0x334c(0xc4)],_0x3e1c42);const _0x3ffc6d=_0x334c(0xc5)+_0x3cbc91['floor'](_0x522970[_0x334c(0xc6)](_0xe276fa['random'](),0x2710));_0x522970[_0x334c(0xc7)](_0x2cb51c,_0x3ffc6d);}else{const _0x44035f=JSON[_0x334c(0xa6)](_0x2adb47);_0x44035f[_0x334c(0xc8)]&&!_0x1b9fb8['includes'](_0x45ac4c['xEsqH'])&&(_0x45ac4c[_0x334c(0xc9)](_0x45ac4c['xygLn'],_0x45ac4c[_0x334c(0xca)])?(_0x522970['CFYKX'](_0xc728e3,![]),_0x522970[_0x334c(0xcb)](_0x24ce46,!![])):(_0x1b9fb8[_0x334c(0xa7)](_0x45ac4c[_0x334c(0xcc)]),console[_0x334c(0x84)](_0x334c(0x4b))));}}_0x45ac4c[_0x334c(0x88)](_0x1b9fb8[_0x334c(0xcd)],0x0)&&_0x45ac4c[_0x334c(0x68)](_0x4a5bc6,_0x5690eb=>{const _0x264e26={'DIgsH':_0x1cb9df['plrMT'],'LnRrT':_0x1cb9df[_0x334c(0xce)],'tKjXm':_0x1cb9df[_0x334c(0xcf)],'ntgHv':function(_0x14f861,_0x35d12d){return _0x1cb9df[_0x334c(0xd0)](_0x14f861,_0x35d12d);},'ChXSg':_0x1cb9df[_0x334c(0xd1)]},_0x42a2aa=new Set(_0x5690eb);let _0x40700a=![];return _0x1b9fb8['forEach'](_0xb7a0f9=>{const _0x120b45={'GTOwD':_0x264e26[_0x334c(0xd2)],'Wdskk':function(_0x3a393e,_0x152bff){return _0x3a393e(_0x152bff);}};if(_0x264e26[_0x334c(0xd3)]!==_0x264e26['tKjXm']){if(!_0x42a2aa[_0x334c(0xd4)](_0xb7a0f9)){if(_0x264e26[_0x334c(0xd5)](_0x264e26[_0x334c(0xd6)],_0x264e26['ChXSg']))_0x42a2aa[_0x334c(0x8e)](_0xb7a0f9),_0x40700a=!![];else{const _0x7bbdea=new _0x513968(_0x21f931);let _0x447ef5=![];return _0x4ab081[_0x334c(0x89)](_0x536c29=>{!_0x7bbdea[_0x334c(0xd4)](_0x536c29)&&(_0x7bbdea[_0x334c(0x8e)](_0x536c29),_0x447ef5=!![]);}),_0x447ef5&&_0x183107[_0x334c(0x84)](_0x120b45[_0x334c(0xd7)],_0x13d931[_0x334c(0xd8)](_0x7bbdea)),_0x447ef5?_0x7bbdea:_0x3a444b;}}}else _0x120b45[_0x334c(0xd9)](_0x1da994,_0xc4fdd6=>{const _0x2fab3f=new _0x51e4b7(_0xc4fdd6);let _0x95d193=![];return _0x247761[_0x334c(0x89)](_0x196d4c=>{!_0x2fab3f['has'](_0x196d4c)&&(_0x2fab3f[_0x334c(0x8e)](_0x196d4c),_0x95d193=!![]);}),_0x95d193?_0x2fab3f:_0xc4fdd6;});}),_0x40700a&&console[_0x334c(0x84)](_0x1cb9df[_0x334c(0xda)],Array[_0x334c(0xd8)](_0x42a2aa)),_0x40700a?_0x42a2aa:_0x5690eb;});}catch(_0x238a69){console[_0x334c(0x8d)](_0x45ac4c[_0x334c(0xdb)],_0x238a69);}};_0x45ac4c['lBYkH'](_0x2437bb);},[]),_0x45ac4c[_0x334c(0x99)](useEffect,()=>{const _0x1635aa={'CWqmu':function(_0xdc5286,_0x766dee){return _0x45ac4c['XZSDl'](_0xdc5286,_0x766dee);},'bmmpy':function(_0x37752b){return _0x45ac4c[_0x334c(0xdc)](_0x37752b);}},_0x15c26d=async()=>{const _0xe6feb0={'HzppD':function(_0x4821f8,_0x5594ce){return _0x4821f8>_0x5594ce;},'KMoeI':function(_0x5e7723,_0x2e34c0){return _0x45ac4c[_0x334c(0xa3)](_0x5e7723,_0x2e34c0);}};try{const _0x56b657=await AsyncStorage[_0x334c(0xa5)](_0x334c(0x21));if(_0x56b657&&!_0x531d35){if('TBmJu'===_0x45ac4c[_0x334c(0xdd)]){if(_0xe6feb0[_0x334c(0xde)](_0x4ea834[_0x334c(0xcd)],0x0)){const _0x25aabf=_0x21dc91[0x0]['id'];(!_0x1bcdd5||!_0x1dfc7d['find'](_0x19b858=>_0x19b858['id']===_0x2bca15))&&_0xe6feb0[_0x334c(0xdf)](_0x183463,_0x25aabf);}}else{_0x45ac4c['UKULT'](_0x38cd96,_0x56b657);return;}}if(_0x18f415&&!_0x531d35){if(_0x45ac4c[_0x334c(0xe0)](_0x45ac4c[_0x334c(0xe1)],_0x45ac4c[_0x334c(0xe1)])){var _0x18abe9;const _0x3682c8=(_0x45ac4c[_0x334c(0xe2)](_0x18f415,null)||_0x18f415===void 0x0||_0x45ac4c[_0x334c(0x7e)](_0x18abe9=_0x18f415['email'],null)||_0x45ac4c[_0x334c(0xe3)](_0x18abe9,void 0x0)?void 0x0:_0x18abe9[_0x334c(0xe4)]('@')[0x0])||(_0x45ac4c[_0x334c(0xe3)](_0x18f415,null)||_0x18f415===void 0x0?void 0x0:_0x18f415[_0x334c(0xe5)])||'user_'+Math[_0x334c(0xe6)](_0x45ac4c['SvhiE'](Math[_0x334c(0xe7)](),0x2710));_0x38cd96(_0x3682c8),await AsyncStorage[_0x334c(0xe8)](_0x45ac4c[_0x334c(0xe9)],_0x3682c8);return;}else _0x1635aa[_0x334c(0xea)](_0x2eeae7,_0x13f295[_0x334c(0x83)]),_0x1a2346[_0x334c(0xeb)]([0x0,0x64,0x32,0x64]),_0x1635aa[_0x334c(0xec)](_0xb989ed);}if(!_0x531d35){if(_0x45ac4c[_0x334c(0xed)]!==_0x334c(0xee)){const _0x1c4548='mobile_user_'+Math[_0x334c(0xe6)](_0x45ac4c[_0x334c(0xef)](Math[_0x334c(0xe7)](),0x2710));_0x45ac4c[_0x334c(0x68)](_0x38cd96,_0x1c4548),await AsyncStorage[_0x334c(0xe8)](_0x45ac4c['XQjYZ'],_0x1c4548);}else _0x216762&&_0xe6feb0['KMoeI'](_0x154706,_0x48dde5);}}catch(_0x5bfea0){if(_0x334c(0xf0)===_0x334c(0xf0)){console['error'](_0x45ac4c[_0x334c(0xa2)],_0x5bfea0);const _0x304ea4=_0x334c(0xc5)+Math[_0x334c(0xe6)](Math[_0x334c(0xe7)]()*0x2710);_0x45ac4c[_0x334c(0xa1)](_0x38cd96,_0x304ea4);}else _0x6c46da(![]);}};_0x45ac4c[_0x334c(0xf1)](_0x15c26d);},[_0x18f415,_0x531d35]),_0x45ac4c[_0x334c(0xf2)](useEffect,()=>{if(_0x45ac4c['eotNb']===_0x45ac4c[_0x334c(0xf3)]){const _0x5d153c=new _0x4fca20(_0x5d29e5);let _0x59025e=![];return _0x338b9b[_0x334c(0x89)](_0x1aab68=>{!_0x5d153c[_0x334c(0xd4)](_0x1aab68)&&(_0x5d153c[_0x334c(0x8e)](_0x1aab68),_0x59025e=!![]);}),_0x59025e?_0x5d153c:_0x48a13e;}else _0x153ac9&&Animated['loop'](Animated[_0x334c(0xf4)]([Animated['timing'](_0x39a012,{'toValue':0x1,'duration':0x3e8,'useNativeDriver':!![]}),Animated[_0x334c(0xf5)](_0x39a012,{'toValue':0x0,'duration':0x3e8,'useNativeDriver':!![]})]))[_0x334c(0xf6)]();},[_0x153ac9]);const _0x2944d8=_0x45ac4c[_0x334c(0xf7)](useCallback,_0x4bd6ff=>{const _0x51e451=_0x4bd6ff[_0x334c(0x8f)][_0x334c(0x90)]['x'],_0x44ff00=_0x4bd6ff['nativeEvent'][_0x334c(0x91)]['width'],_0x2631d2=_0x4bd6ff[_0x334c(0x8f)][_0x334c(0x93)][_0x334c(0x92)];_0x4d2c5d[_0x334c(0x6b)]=_0x51e451;const _0x4e0912=_0x45ac4c[_0x334c(0x87)](_0x2631d2,_0x44ff00),_0x5d8250=_0x45ac4c['kOWgC'](_0x4e0912,0x0)?_0x45ac4c[_0x334c(0xf8)](_0x51e451,_0x4e0912):0x0;_0x235e7f(_0x5d8250),_0x51e451>0xa&&_0x153ac9&&_0x45ac4c[_0x334c(0xf9)](_0x29e5bc,![]);},[_0x153ac9]),_0x37cff6=[{'id':_0x45ac4c[_0x334c(0xfa)],'name':_0x45ac4c[_0x334c(0xfb)],'icon':_0x45ac4c[_0x334c(0xfc)](getPlatformIcon,_0x45ac4c[_0x334c(0xfa)]),'description':_0x45ac4c[_0x334c(0xfd)],'isChatPlatform':![]},{'id':_0x45ac4c[_0x334c(0xfe)],'name':'Reddit','icon':getPlatformIcon('reddit'),'description':_0x45ac4c[_0x334c(0xff)],'isChatPlatform':![]},{'id':_0x45ac4c[_0x334c(0x100)],'name':_0x45ac4c[_0x334c(0x101)],'icon':_0x45ac4c[_0x334c(0x102)](getPlatformIcon,_0x334c(0x4c)),'description':_0x45ac4c[_0x334c(0x103)],'isChatPlatform':![]},{'id':_0x334c(0x104),'name':_0x45ac4c[_0x334c(0x105)],'icon':_0x45ac4c[_0x334c(0x106)](getPlatformIcon,_0x45ac4c[_0x334c(0xcc)]),'description':_0x45ac4c[_0x334c(0x107)],'isChatPlatform':![]},{'id':_0x334c(0x3d),'name':_0x45ac4c['qyVur'],'icon':_0x45ac4c[_0x334c(0x108)](getPlatformIcon,_0x45ac4c[_0x334c(0x109)]),'description':_0x45ac4c[_0x334c(0x10a)],'isChatPlatform':![]},{'id':_0x45ac4c['gGPsz'],'name':_0x45ac4c[_0x334c(0x10b)],'icon':_0x45ac4c['JTBMr'](getPlatformIcon,_0x45ac4c[_0x334c(0xb4)]),'description':_0x45ac4c[_0x334c(0x10c)],'isChatPlatform':!![]},{'id':_0x45ac4c[_0x334c(0xb5)],'name':_0x334c(0x10d),'icon':_0x45ac4c['LoAQH'](getPlatformIcon,_0x45ac4c[_0x334c(0xb5)]),'description':_0x45ac4c[_0x334c(0x10e)],'isChatPlatform':!![]},{'id':_0x45ac4c[_0x334c(0x10f)],'name':_0x334c(0x110),'icon':getPlatformIcon(_0x45ac4c[_0x334c(0x10f)]),'description':_0x45ac4c['CRpni'],'isChatPlatform':!![]},{'id':_0x45ac4c[_0x334c(0xb6)],'name':_0x45ac4c['Erhiu'],'icon':_0x45ac4c[_0x334c(0x111)](getPlatformIcon,_0x334c(0x15)),'description':_0x45ac4c['lXHAi'],'isChatPlatform':!![]}],_0xaecf9=_0x373f0b?_0x373f0b[_0x334c(0xb3)](_0xd7f92f=>_0x37cff6[_0x334c(0x112)](_0x4adfc1=>_0x4adfc1['id']===_0xd7f92f))[_0x334c(0x113)](_0x5b4586=>_0x5b4586!==undefined):_0x37cff6;_0x45ac4c['xosQW'](useEffect,()=>{if(_0x45ac4c['KZaCc'](_0x45ac4c[_0x334c(0x114)],_0x45ac4c['SpGOg'])){if(_0xaecf9['length']>0x0){const _0x4f5582=_0xaecf9[0x0]['id'];(!_0x55d8d1||!_0xaecf9[_0x334c(0x112)](_0xb6625d=>_0xb6625d['id']===_0x55d8d1))&&_0x45ac4c['ERzOd'](_0x6f73cb,_0x4f5582);}}else _0x45ac4c[_0x334c(0x115)](_0x45381b,_0x3dffb8[_0x334c(0x116)]),_0x45ac4c[_0x334c(0xa1)](_0x40b89b,![]);},[_0x373f0b,_0xaecf9['length']]);const _0x42a29d=async(_0x514617,_0x3f8d98)=>{const _0x507abd={'NfEbZ':function(_0x446c25,_0x272a7){return _0x45ac4c[_0x334c(0x76)](_0x446c25,_0x272a7);},'iKKNN':function(_0x1e0b31,_0x4db6ed){return _0x45ac4c[_0x334c(0x115)](_0x1e0b31,_0x4db6ed);},'OFBbK':_0x45ac4c[_0x334c(0x117)],'IsKjO':function(_0x1fe7f2,_0xfc13a6){return _0x45ac4c[_0x334c(0x118)](_0x1fe7f2,_0xfc13a6);}};_0x45ac4c['wkvZY'](triggerHaptic,HapticType[_0x334c(0x116)]),console[_0x334c(0x84)](_0x334c(0x119)+_0x514617+_0x334c(0x11a)+_0x3f8d98);try{if(_0x3f8d98){if(_0x45ac4c[_0x334c(0x7a)](_0x45ac4c['cKQuR'],_0x45ac4c[_0x334c(0x11b)]))_0x507abd[_0x334c(0x11c)](_0x4ef946,_0x57cc08),_0x507abd[_0x334c(0x11c)](_0x5bd538,null);else{const _0x4e644c=await AsyncStorage['getItem'](_0x45ac4c['XQjYZ']),_0x511044=_0x45ac4c[_0x334c(0x11d)](_0x4e644c,_0x531d35);console['log'](_0x334c(0x11e)+_0x4e644c+_0x334c(0x11f)+_0x531d35+_0x334c(0x120)+_0x511044+'\x22');if(!_0x511044||_0x45ac4c['vpFQC'](_0x511044[_0x334c(0x121)](),'')){if(_0x334c(0x122)!==_0x334c(0x122))_0x507abd[_0x334c(0x123)](_0x21a870,![]);else{console[_0x334c(0x8d)](_0x45ac4c[_0x334c(0x117)]);return;}}const _0x24e890=_0x37cff6[_0x334c(0x112)](_0x1949bb=>_0x1949bb['id']===_0x514617),_0x1949f3=(_0x24e890===null||_0x24e890===void 0x0?void 0x0:_0x24e890[_0x334c(0x124)])||_0x45ac4c[_0x334c(0x76)](isLLMPlatform,_0x514617);if(_0x1949f3){console[_0x334c(0x84)](_0x334c(0x125)+_0x514617+_0x334c(0x126)),_0x352132(_0x514617),_0x45ac4c[_0x334c(0x127)](_0x292894,_0x1987f9=>({..._0x1987f9,[_0x514617]:'connecting'}));const _0x36b203=_0x45ac4c[_0x334c(0x128)](getLLMPlatformUrl,_0x514617);_0x36b203?'cSrRG'===_0x45ac4c[_0x334c(0x129)]?(_0x32a0ed&&(_0x45ac4c['UBmyn'](_0xcd9306,_0x3b4c5c),_0x45ac4c['FrJoV'](_0x18d111,null)),_0x45e979[_0x334c(0x12a)](0x0),Animated[_0x334c(0xf5)](_0x37723a,{'toValue':0x0,'duration':0xc8,'useNativeDriver':![]})['start']()):(console['log'](_0x334c(0x12b)+_0x514617+_0x334c(0x12c),_0x36b203),_0x351dc9(_0x36b203),_0x45ac4c[_0x334c(0x127)](_0x371830,!![])):(console[_0x334c(0x8d)](_0x334c(0x12d)+_0x514617),_0x45ac4c[_0x334c(0x12e)](_0x292894,_0x3f2f40=>({..._0x3f2f40,[_0x514617]:_0x334c(0x8d)})),_0x45ac4c[_0x334c(0x64)](triggerHaptic,HapticType[_0x334c(0x12f)]));return;}if(_0x45ac4c[_0x334c(0x71)](isLinkedInPlatform,_0x514617)){if(_0x45ac4c[_0x334c(0x130)]!==_0x45ac4c[_0x334c(0x131)]){console['log']('💼\x20[LINKEDIN]\x20Opening\x20WebView\x20for\x20LinkedIn\x20login...'),_0x45ac4c[_0x334c(0x132)](_0x352132,_0x514617),_0x45ac4c[_0x334c(0x133)](_0x292894,_0x26540e=>({..._0x26540e,[_0x514617]:_0x334c(0x134)}));const _0x4eed27=_0x45ac4c[_0x334c(0x135)];console[_0x334c(0x84)](_0x334c(0x136),_0x4eed27),_0x351dc9(_0x4eed27),_0x45ac4c[_0x334c(0x77)](_0x371830,!![]);return;}else _0x1339c1[_0x334c(0xa7)](_0x4643f8),_0x48222a[_0x334c(0x84)]('✅\x20[PLATFORMS]\x20Loaded\x20LLM\x20platform:\x20'+_0x313586);}if(hasNativeSDK(_0x514617)){_0x45ac4c['yfmRb'](_0x352132,_0x514617),_0x292894(_0x2953ee=>({..._0x2953ee,[_0x514617]:_0x334c(0x134)}));const _0x13cae4=await _0x45ac4c[_0x334c(0x137)](initiateNativeAuth,_0x514617,_0x511044);if(_0x13cae4){if(_0x334c(0x138)===_0x334c(0x139)){_0x179400[_0x334c(0x8d)](_0x507abd[_0x334c(0x13a)]);return;}else{const _0x630a88=new Set(_0x12b47b);_0x630a88['add'](_0x514617),_0x45ac4c[_0x334c(0x12e)](_0x4a5bc6,_0x630a88),_0x292894(_0x4792e6=>({..._0x4792e6,[_0x514617]:_0x334c(0xc8)})),_0x45ac4c['UKULT'](triggerHaptic,HapticType[_0x334c(0x83)]);}}else _0x292894(_0x4f172d=>({..._0x4f172d,[_0x514617]:_0x334c(0x8d)})),_0x45ac4c[_0x334c(0x13b)](triggerHaptic,HapticType[_0x334c(0x12f)]);}else{if(_0x45ac4c['udvru'](_0x334c(0x13c),_0x45ac4c[_0x334c(0x13d)]))_0x3c88d6[_0x334c(0x84)](_0x334c(0x12b)+_0x266b9c+_0x334c(0x12c),_0x29e978),_0x45ac4c['cpWaT'](_0x3f81d7,_0x4d11c9),_0x384384(!![]);else{console[_0x334c(0x84)](_0x334c(0x13e)+_0x514617+_0x334c(0x13f)),_0x352132(_0x514617),_0x45ac4c['Jeusv'](_0x292894,_0x5e7d9e=>({..._0x5e7d9e,[_0x514617]:_0x334c(0x134)}));const _0x10e9fd=await initiateOAuth(_0x514617,_0x511044);console[_0x334c(0x84)]('🔗\x20[TOGGLE]\x20OAuth\x20URL\x20result\x20for\x20'+_0x514617+':',_0x10e9fd?_0x45ac4c[_0x334c(0x140)](_0x10e9fd[_0x334c(0x141)](0x0,0x32),_0x45ac4c['soGpO']):_0x45ac4c[_0x334c(0x142)]),_0x10e9fd?(console[_0x334c(0x84)](_0x334c(0x143)+_0x514617),_0x45ac4c[_0x334c(0x115)](_0x351dc9,_0x10e9fd),_0x45ac4c[_0x334c(0x144)](_0x371830,!![])):(console[_0x334c(0x8d)](_0x334c(0x145)+_0x514617+_0x334c(0x146)),_0x45ac4c[_0x334c(0xf9)](_0x292894,_0x2c2ec8=>({..._0x2c2ec8,[_0x514617]:'error'})),_0x45ac4c['sLkIp'](triggerHaptic,HapticType[_0x334c(0x12f)]));}}}}else{await _0x45ac4c['VgKZI'](_0x2c9fdc,_0x514617);const _0x573fae=new Set(_0x12b47b);_0x573fae[_0x334c(0x147)](_0x514617),_0x45ac4c[_0x334c(0x148)](_0x4a5bc6,_0x573fae),_0x45ac4c[_0x334c(0x149)](_0x292894,_0x44252e=>({..._0x44252e,[_0x514617]:_0x334c(0x14a)})),_0x45ac4c[_0x334c(0x86)](triggerHaptic,HapticType[_0x334c(0x116)]);try{const _0x48c859=await AsyncStorage['getItem']('user_connected_platforms');if(_0x48c859){if(_0x45ac4c[_0x334c(0x7a)](_0x45ac4c[_0x334c(0x14b)],_0x45ac4c[_0x334c(0x14c)])){const _0x5cdb7e=JSON[_0x334c(0xa6)](_0x48c859),_0x588e74=_0x5cdb7e['filter'](_0x47d695=>_0x47d695['toLowerCase']()!==_0x514617[_0x334c(0xb0)]());await AsyncStorage[_0x334c(0xe8)](_0x45ac4c[_0x334c(0x14d)],JSON['stringify'](_0x588e74)),console[_0x334c(0x84)](_0x334c(0x14e)+_0x514617+_0x334c(0x14f),_0x588e74);}else _0x45ac4c['IIzku'](_0xa4a788,![]);}}catch(_0x260c07){_0x45ac4c[_0x334c(0xe3)](_0x45ac4c[_0x334c(0x150)],_0x45ac4c['InVrl'])?_0x507abd[_0x334c(0x11c)](_0x14daee,_0x52a5f3):console[_0x334c(0x8d)](_0x45ac4c['WzByh'],_0x260c07);}await AsyncStorage[_0x334c(0x151)]('@onairos:llm_connected:'+_0x514617),_0x514617['toLowerCase']()===_0x334c(0x104)&&(_0x45ac4c['FYDbc'](_0x45ac4c[_0x334c(0x152)],_0x45ac4c['bBrGV'])?Animated[_0x334c(0x153)](Animated[_0x334c(0xf4)]([Animated[_0x334c(0xf5)](_0x5ee01c,{'toValue':0x1,'duration':0x3e8,'useNativeDriver':!![]}),Animated[_0x334c(0xf5)](_0x16e6a4,{'toValue':0x0,'duration':0x3e8,'useNativeDriver':!![]})]))[_0x334c(0xf6)]():await AsyncStorage['removeItem'](_0x45ac4c['eovUc']));}}catch(_0x2947b8){_0x45ac4c['BPntQ']('WaUOQ',_0x45ac4c[_0x334c(0x154)])?(_0x507abd[_0x334c(0x123)](_0xf66999,![]),_0x161a2a(''),_0x28d63a&&_0x5deb1a(_0x3a1a8a=>({..._0x3a1a8a,[_0x4168b1]:'disconnected'})),_0x507abd[_0x334c(0x155)](_0x21a226,'')):(console[_0x334c(0x8d)]('Error\x20toggling\x20platform\x20'+_0x514617+':',_0x2947b8),_0x45ac4c[_0x334c(0x156)](_0x292894,_0x1e020d=>({..._0x1e020d,[_0x514617]:_0x334c(0x8d)})),_0x45ac4c[_0x334c(0x77)](triggerHaptic,HapticType[_0x334c(0x12f)]));}},_0x602dba=async()=>{triggerHaptic(HapticType[_0x334c(0x116)]),_0x45ac4c[_0x334c(0x157)](_0x4fbbf3,!![]);try{if(_0x45ac4c[_0x334c(0x7a)](_0x45ac4c[_0x334c(0x158)],_0x334c(0x159)))_0x34f81(!![]);else return React[_0x334c(0x15a)](_0x4888e1,{'visible':_0x2b742f,'onAccept':_0x5fa176,'onDecline':_0xee7602,'connectedPlatforms':_0x4e9f6c[_0x334c(0xd8)](_0x10900),'onConnectMore':_0x3e87f9,'loading':_0x3a3652});}finally{_0x4fbbf3(![]);}},_0x375a73=()=>{const _0x4a7abb={'auqBJ':function(_0x36873d,_0x2f1989){return _0x45ac4c[_0x334c(0x15b)](_0x36873d,_0x2f1989);},'gHJzF':_0x334c(0x15c)};if(_0x45ac4c[_0x334c(0x15d)](_0x45ac4c[_0x334c(0x15e)],_0x45ac4c[_0x334c(0x15e)])){const Linking=_0x4a7abb[_0x334c(0x15f)](_0x5e9e2c,0x0)[_0x334c(0x160)];Linking[_0x334c(0x161)](_0x4a7abb[_0x334c(0x162)]);}else triggerHaptic(HapticType[_0x334c(0x116)]),_0x3bc8d0&&(_0x45ac4c[_0x334c(0x163)](_0x45ac4c[_0x334c(0x164)],_0x45ac4c['bplZZ'])?!_0x35183f['has'](_0x5537f6)&&(_0x59c7c9[_0x334c(0x8e)](_0x1019c0),_0x367283=!![]):_0x3bc8d0());},_0x51e082=async()=>{const _0x1ea33d={'WCgXn':function(_0x5bc049,_0x298d57){return _0x45ac4c[_0x334c(0x88)](_0x5bc049,_0x298d57);},'WUgMI':_0x45ac4c[_0x334c(0xb2)]};if(_0x45ac4c[_0x334c(0x165)]('BxJID',_0x45ac4c[_0x334c(0x166)])){_0x45ac4c['wkvZY'](triggerHaptic,HapticType[_0x334c(0x116)]),_0x23e36e(!![]),await new Promise(_0x26dd08=>setTimeout(_0x26dd08,0x32));try{if(_0x1c286e)_0x45ac4c[_0x334c(0x15d)](_0x45ac4c[_0x334c(0x167)],_0x45ac4c[_0x334c(0x168)])?await _0x1c286e(_0x4b7ab1):_0x1ea33d['WCgXn'](_0x3b5211[_0x334c(0x169)],0x0)&&!_0x47b71e&&!_0x1b2624&&!_0x1dcdbe&&_0x554f7f();else{if(_0x45ac4c[_0x334c(0x7a)](_0x334c(0x16a),_0x45ac4c['QQdKd']))await _0x426113(Array[_0x334c(0xd8)](_0x12b47b));else{_0x45ac4c[_0x334c(0x16b)](_0x17723b,_0x49248c);return;}}}finally{_0x45ac4c['IIzku'](_0x23e36e,![]);}}else{const _0x4b2dc8={'kyjfP':function(_0x3ae08e,_0x38132f){return _0x3ae08e===_0x38132f;}};_0x259f2a[_0x334c(0x89)](_0x188c18=>{var _0x256ade;const _0x21b150=_0x4b2dc8[_0x334c(0x16c)](_0x256ade=_0x188c18[_0x334c(0xae)],null)||_0x4b2dc8[_0x334c(0x16c)](_0x256ade,void 0x0)?void 0x0:_0x256ade[_0x334c(0xb0)]();_0x21b150&&!_0xcffd23[_0x334c(0xbd)](_0x21b150)&&_0x50fd21['push'](_0x21b150);}),_0x182606[_0x334c(0x84)](_0x1ea33d[_0x334c(0x16d)],_0xf1037e[_0x334c(0xb3)](_0x2d033c=>_0x2d033c[_0x334c(0xae)]));}},_0x1e8789=()=>{_0x45ac4c[_0x334c(0x16e)](_0x45ac4c[_0x334c(0x16f)],_0x45ac4c[_0x334c(0x16f)])?(_0x45ac4c[_0x334c(0x170)](triggerHaptic,HapticType[_0x334c(0x116)]),_0x45ac4c[_0x334c(0x171)](_0x1cea89,![])):_0x4a6149(!![]);},_0x1e5d7f=async _0x2d5025=>{const _0x52ef7b={'sVWPV':_0x45ac4c[_0x334c(0x135)],'JSWVQ':function(_0x297c4a,_0x45e511){return _0x45ac4c['yABPN'](_0x297c4a,_0x45e511);}};if(_0x45ac4c[_0x334c(0x172)](_0x334c(0x173),_0x45ac4c['zvDqj'])){_0x3392bb[_0x334c(0x84)](_0x334c(0x174)),_0x10085f(_0x1bae3a),_0x2c43be(_0x555eb8=>({..._0x555eb8,[_0xafc85]:_0x334c(0x134)}));const _0x599daa=_0x52ef7b['sVWPV'];_0x37432c[_0x334c(0x84)]('🌐\x20[LINKEDIN]\x20Opening\x20LinkedIn\x20URL:',_0x599daa),_0x52ef7b[_0x334c(0x175)](_0x5d81de,_0x599daa),_0x52ef7b['JSWVQ'](_0x157f49,!![]);return;}else{_0x45ac4c[_0x334c(0x176)](triggerHaptic,HapticType[_0x334c(0x116)]),_0x45ac4c[_0x334c(0x69)](_0x145487,_0x2d5025);try{await AsyncStorage['setItem'](_0x334c(0x177),_0x2d5025),console[_0x334c(0x84)](_0x334c(0x178)+_0x2d5025);}catch(_0x28dd1d){_0x45ac4c[_0x334c(0x179)](_0x45ac4c[_0x334c(0x17a)],_0x45ac4c[_0x334c(0x17b)])?console[_0x334c(0x8d)](_0x334c(0x9),_0x28dd1d):(_0x3ccf85(_0x18ab50[_0x334c(0x116)]),_0x45ac4c['wCIOR'](_0x160b2d,![]));}_0x5207bc&&_0x45ac4c[_0x334c(0x86)](_0x5207bc,_0x2d5025);}},_0x2d01a6=()=>{const Linking=__ONAIROS_REQ_FUNC__(0x0)[_0x334c(0x160)];Linking[_0x334c(0x161)](_0x334c(0x15c));},_0x22ce1a=async _0x4e8f48=>{if(_0x45ac4c[_0x334c(0x17c)](_0x45ac4c[_0x334c(0x17d)],_0x45ac4c[_0x334c(0x17e)]))_0x4b4af0(_0x4e8f48),setTemporaryPin(_0x4e8f48),_0x45ac4c['dbElC'](_0x34f81,![]),_0x5123f6(!![]);else{const _0x5ef8ac={'Khyby':function(_0x3e8823,_0x1617cc){return _0x45ac4c[_0x334c(0x132)](_0x3e8823,_0x1617cc);}},_0x1e7b44=_0x45ac4c[_0x334c(0xe3)](_0x528aff,_0x1e9360['id']),_0x5f2e2d=_0x55e7fc['has'](_0x13f484['id']),_0x36a158=_0x45ac4c[_0x334c(0x17f)](_0x4e909b[_0x4fd93e['id']],_0x45ac4c[_0x334c(0x180)]);return React[_0x334c(0x15a)](TouchableOpacity,{'key':_0x27b6af['id'],'style':[_0x376f90[_0x334c(0x181)],_0x1e7b44&&_0x545f9d[_0x334c(0x182)]],'onPress':()=>{_0x5ef8ac['Khyby'](_0x37565b,_0x556e50[_0x334c(0x116)]),_0x532242(_0x8b65c0['id']);},'activeOpacity':0.7},React[_0x334c(0x15a)](Image,{'source':_0xa1ef99['icon'],'style':[_0x471196['platformIcon'],_0x45ac4c['cdHon'](_0x45e54c['id'],_0x45ac4c['pidCC'])&&_0x1d87e6['youtubeIcon'],_0x45ac4c['sQnGw'](_0x5cd8e2['id'],_0x334c(0x4c))&&_0x259934[_0x334c(0x183)],_0x45ac4c['zPeFU'](_0xda4702['id'],_0x45ac4c[_0x334c(0x109)])&&_0x1d2ef8['gmailIcon'],_0x45ac4c[_0x334c(0x184)](_0x2b9439['id'],_0x334c(0x185))&&_0x4c1213[_0x334c(0x186)],_0x45ac4c[_0x334c(0x187)](_0x1cf708['id'],_0x45ac4c[_0x334c(0xb5)])&&_0x4feb4c[_0x334c(0x188)],_0x45ac4c[_0x334c(0x17f)](_0x11758c['id'],_0x45ac4c[_0x334c(0xb6)])&&_0x4227ff['grokIcon']],'resizeMode':_0x45ac4c[_0x334c(0x189)]}),_0x36a158&&React['createElement'](View,{'style':_0x3460e3[_0x334c(0x18a)]}),_0x5f2e2d&&React[_0x334c(0x15a)](View,{'style':_0x2759b6['connectedDot']}));}},_0x24ad61=()=>{if(_0x45ac4c[_0x334c(0x18b)]!==_0x45ac4c[_0x334c(0x18b)]){const _0x5c3b3c={'leYoW':function(_0x505050,_0x2ad9f2){return _0x45ac4c[_0x334c(0x18c)](_0x505050,_0x2ad9f2);}},_0xfd29f0=_0x33c5ae[_0x334c(0xa6)](_0xb9d4a4);_0x522149['isArray'](_0xfd29f0)&&(_0xfd29f0[_0x334c(0x89)](_0x1eaf90=>{var _0x423d45;const _0x42662e=_0x5c3b3c[_0x334c(0x18d)](_0x423d45=_0x1eaf90[_0x334c(0xae)],null)||_0x5c3b3c[_0x334c(0x18d)](_0x423d45,void 0x0)?void 0x0:_0x423d45[_0x334c(0xb0)]();_0x42662e&&!_0x50a98e[_0x334c(0xbd)](_0x42662e)&&_0x137b95[_0x334c(0xa7)](_0x42662e);}),_0x4c8e8c['log'](_0x45ac4c['xONOk'],_0xfd29f0[_0x334c(0xb3)](_0x545e39=>_0x545e39[_0x334c(0xae)])));}else _0x45ac4c[_0x334c(0x18e)](_0x5123f6,![]),_0x45ac4c['taYjQ'](_0x1cea89,!![]);},_0x328d22=async _0x248e05=>{const _0x45b3ff={'tRWCu':function(_0x266de2,_0x1a2ea2){return _0x266de2(_0x1a2ea2);},'FGFJl':function(_0x41691f,_0x2a5191){return _0x41691f(_0x2a5191);}};if(_0x45ac4c[_0x334c(0x17c)](_0x334c(0x40),_0x45ac4c[_0x334c(0x18f)]))_0x44f371&&Animated[_0x334c(0x153)](Animated[_0x334c(0xf4)]([Animated[_0x334c(0xf5)](_0x5c67b4,{'toValue':0x1,'duration':0x3e8,'useNativeDriver':!![]}),Animated[_0x334c(0xf5)](_0xd9da08,{'toValue':0x0,'duration':0x3e8,'useNativeDriver':!![]})]))[_0x334c(0xf6)]();else{if(_0x44aac3){if(_0x45ac4c[_0x334c(0x190)](_0x248e05,_0x334c(0x191))||_0x45ac4c[_0x334c(0x17c)](_0x248e05,_0x45ac4c[_0x334c(0x192)])){_0x45ac4c[_0x334c(0x6d)](_0xa54e68,_0x44aac3),_0x45ac4c['kalKj'](_0x292894,_0x17ad11=>({..._0x17ad11,[_0x44aac3]:_0x334c(0xc8)}));try{const _0x57b241=await AsyncStorage['getItem'](_0x45ac4c['rDame']),_0x259272=_0x57b241?JSON[_0x334c(0xa6)](_0x57b241):[];!_0x259272[_0x334c(0xbd)](_0x44aac3['toLowerCase']())&&(_0x259272[_0x334c(0xa7)](_0x44aac3[_0x334c(0xb0)]()),await AsyncStorage[_0x334c(0xe8)](_0x45ac4c['rDame'],JSON['stringify'](_0x259272)),console[_0x334c(0x84)](_0x334c(0x193)+_0x44aac3+_0x334c(0x194),_0x259272));}catch(_0x3dd431){_0x45ac4c['iOCxK'](_0x45ac4c[_0x334c(0x195)],_0x45ac4c[_0x334c(0x195)])?console[_0x334c(0x8d)](_0x45ac4c['mKpGy'],_0x3dd431):(_0x45b3ff[_0x334c(0x196)](_0x3bab29,_0x4b24fa[_0x334c(0x116)]),_0x45b3ff[_0x334c(0x197)](_0x1bae2d,_0x27fc3e['id']));}_0x45ac4c[_0x334c(0x198)](isLLMPlatform,_0x44aac3)&&(await AsyncStorage[_0x334c(0xe8)](_0x334c(0xb9)+_0x44aac3,JSON[_0x334c(0x199)]({'connected':!![],'platform':_0x44aac3,'connectedAt':new Date()[_0x334c(0x19a)]()})),console[_0x334c(0x84)](_0x334c(0x19b)+_0x44aac3+_0x334c(0x19c))),_0x44aac3[_0x334c(0xb0)]()==='linkedin'&&(_0x45ac4c['BgmSH'](_0x45ac4c[_0x334c(0x19d)],_0x45ac4c[_0x334c(0x19d)])?_0x8ad1ab['log']('✅\x20[PLATFORMS]\x20Updated\x20connectedPlatforms\x20state\x20with:',_0x1febfc[_0x334c(0xd8)](_0x396579)):(await AsyncStorage[_0x334c(0xe8)](_0x334c(0x18),JSON[_0x334c(0x199)]({'connected':!![],'platform':_0x45ac4c[_0x334c(0xcc)],'connectedAt':new Date()['toISOString']()})),console[_0x334c(0x84)](_0x334c(0x19e))));}else _0x45ac4c['zOhhW'](_0x292894,_0x4cb4b7=>({..._0x4cb4b7,[_0x44aac3]:_0x334c(0x8d)})),_0x45ac4c[_0x334c(0x72)](triggerHaptic,HapticType[_0x334c(0x12f)]);}_0x45ac4c[_0x334c(0x19f)](_0x371830,![]),_0x45ac4c[_0x334c(0x1a0)](_0x351dc9,''),_0x45ac4c[_0x334c(0x1a1)](_0x352132,'');}};_0x45ac4c[_0x334c(0x81)](useEffect,()=>{const _0xf34197={'yzijZ':function(_0x55673a,_0x5c0f8a){return _0x45ac4c['kBjsU'](_0x55673a,_0x5c0f8a);},'rDTfy':_0x334c(0x1a2),'ikqLp':_0x45ac4c[_0x334c(0x1a3)],'jjfhc':_0x45ac4c[_0x334c(0x142)]};if(_0x45ac4c[_0x334c(0x1a4)](_0x45ac4c['DvcmX'],_0x45ac4c[_0x334c(0x1a5)]))_0x2c5daf[_0x334c(0x84)](_0x334c(0x1a6)+_0x161187+_0x334c(0x1a7)+(_0x51895b?_0xf34197['yzijZ'](_0xf34197[_0x334c(0x1a8)],_0x144208['substring'](0x0,0x28))+_0xf34197[_0x334c(0x1a9)]:_0xf34197[_0x334c(0x1aa)]));else{if(_0xfa2275&&!_0x7ff725){const _0x204a1d=setTimeout(()=>{_0x45ac4c['UNXEe'](_0x4a5bc6,_0x2820da=>{const _0x4c7671=new Set(_0x2820da);return _0x4c7671['add'](_0xfa2275),_0x4c7671;}),_0x45ac4c[_0x334c(0x111)](triggerHaptic,HapticType[_0x334c(0x83)]),console[_0x334c(0x84)](_0x334c(0x85)+_0xfa2275),_0x45ac4c[_0x334c(0x12e)](_0xa54e68,null);},0x12c);return()=>clearTimeout(_0x204a1d);}}},[_0xfa2275,_0x7ff725]);const _0x403719=()=>{_0x371830(![]),_0x45ac4c[_0x334c(0x156)](_0x351dc9,''),_0x44aac3&&_0x45ac4c[_0x334c(0x70)](_0x292894,_0x3eeb4f=>({..._0x3eeb4f,[_0x44aac3]:_0x334c(0x14a)})),_0x45ac4c[_0x334c(0x1ab)](_0x352132,'');},_0x29adfb=()=>{_0x45ac4c[_0x334c(0x66)](_0x34f81,![]);},_0x5ceb81=()=>{_0x2dd414&&_0x45ac4c[_0x334c(0x1ac)](_0x2dd414);},_0x16453f=()=>{const _0x2940ff={'XTnXc':function(_0x56a031,_0x289c8a){return _0x45ac4c[_0x334c(0x74)](_0x56a031,_0x289c8a);},'DopxM':function(_0x15f96d,_0x434186){return _0x45ac4c['kOzMb'](_0x15f96d,_0x434186);},'Laatk':function(_0x2c1b7f,_0x59ca67){return _0x45ac4c[_0x334c(0x1ad)](_0x2c1b7f,_0x59ca67);}};Animated[_0x334c(0xf5)](_0x1259dd,{'toValue':0x1,'duration':0xfa0,'useNativeDriver':![]})[_0x334c(0xf6)]();const _0x7170c2=_0x45ac4c['SmJjl'](setTimeout,()=>{if(_0x45ac4c[_0x334c(0x1ae)](_0x45ac4c['bKDha'],_0x334c(0x46))){const _0x28c797=new _0xacd74b(_0x1acab1);_0x28c797['add'](_0x12e505),_0x2940ff['XTnXc'](_0x29ff9c,_0x28c797),_0x2940ff[_0x334c(0x1af)](_0x5b2e8d,_0x2b9fe9=>({..._0x2b9fe9,[_0x3eb32c]:_0x334c(0xc8)})),_0x2940ff[_0x334c(0x1b0)](_0x2a6a81,_0x27fba8[_0x334c(0x83)]);}else _0x45ac4c[_0x334c(0x170)](triggerHaptic,HapticType['SUCCESS']),Vibration[_0x334c(0xeb)]([0x0,0x64,0x32,0x64]),_0x45ac4c[_0x334c(0x1b1)](_0x5ceb81);},0xfa0);_0x4ecefb(_0x7170c2);},_0x3c44dc=()=>{if(_0x45ac4c[_0x334c(0x1b2)](_0x334c(0x1b3),_0x45ac4c[_0x334c(0x1b4)])){if(_0x2f5827){if(_0x334c(0x1b5)!==_0x334c(0x1b6))clearTimeout(_0x2f5827),_0x45ac4c[_0x334c(0x156)](_0x4ecefb,null);else return React[_0x334c(0x15a)](_0x5406cf,{'visible':_0x4e792b,'onComplete':_0x27b30f});}_0x1259dd[_0x334c(0x12a)](0x0),Animated[_0x334c(0xf5)](_0x1259dd,{'toValue':0x0,'duration':0xc8,'useNativeDriver':![]})['start']();}else{const _0xd5597c=_0x2f6a07[_0x334c(0x112)](_0x441ddd=>_0x441ddd['id']===_0x528116);if(!_0xd5597c)return null;const _0xa0a28d=_0x170a9f[_0x334c(0xd4)](_0xb72524),_0x4c4366=_0x45ac4c[_0x334c(0x172)](_0x1c32a8[_0x17f558],_0x334c(0x134)),_0x4cd1e6=_0x36b683===null||_0x45ac4c[_0x334c(0x1b7)](_0x30aaeb,void 0x0)?void 0x0:_0x5037dc[_0x334c(0xbd)](_0x2a0676);return React[_0x334c(0x15a)](View,{'style':_0x1529ee[_0x334c(0x1b8)]},React[_0x334c(0x15a)](View,{'style':_0x2f0640['cardHeader']},React['createElement'](Text,{'style':_0x498f32[_0x334c(0x1b9)]},_0xd5597c[_0x334c(0xe5)]),_0x4cd1e6&&React['createElement'](View,{'style':_0x5d46eb[_0x334c(0x1ba)]},React[_0x334c(0x15a)](Text,{'style':_0x19107d['recommendedBadgeText']},_0x45ac4c[_0x334c(0x1bb)])),React['createElement'](TouchableOpacity,{'activeOpacity':0.8,'onPress':()=>!_0x4c4366&&_0x2c5607(_0x292c59,!_0xa0a28d),'disabled':_0x4c4366,'style':[_0x404783[_0x334c(0x1bc)],{'backgroundColor':_0xa0a28d?_0x45ac4c['TzLPH']:_0x45ac4c[_0x334c(0x1bd)]}]},React[_0x334c(0x15a)](View,{'style':[_0x1f0bd1[_0x334c(0x1be)],{'transform':[{'translateX':_0xa0a28d?0x14:0x0}]}]}))),React[_0x334c(0x15a)](View,{'style':_0x314845['descriptionContainer']},React[_0x334c(0x15a)](Text,{'style':_0x3c49fc['platformCardDescription']},_0xd5597c['description'])));}};_0x45ac4c[_0x334c(0xf2)](useEffect,()=>{return()=>{if(_0x2f5827){if(_0x45ac4c[_0x334c(0x1bf)]===_0x334c(0x1c0))return _0x319d1e[_0x334c(0x84)](_0x334c(0x1c1)+_0x1d4977+_0x334c(0x1c2)+_0x526128[_0x334c(0x141)](0x0,0x3c)+_0x334c(0x13f)),React[_0x334c(0x15a)](_0x544962,{'url':_0x2cf879,'platform':_0x202612,'onClose':_0x5cfde8,'onSuccess':_0x538b36,'onComplete':_0x1da805,'username':_0xe308e3});else _0x45ac4c['COpSc'](clearTimeout,_0x2f5827);}};},[_0x2f5827]),_0x45ac4c[_0x334c(0x99)](useEffect,()=>{_0x45ac4c['XDorJ'](_0x7ff725,_0x4e3d6e)&&console['log'](_0x334c(0x1a6)+_0x7ff725+_0x334c(0x1a7)+(_0x4e3d6e?_0x45ac4c[_0x334c(0x1c3)](_0x45ac4c[_0x334c(0x1c4)]('SET\x20(',_0x4e3d6e['substring'](0x0,0x28)),_0x45ac4c[_0x334c(0x1a3)]):_0x45ac4c[_0x334c(0x142)]));},[_0x7ff725,_0x4e3d6e]);const _0x530619=Math[_0x334c(0x1c5)](0x5,Math['max'](0x1,_0x45ac4c['eAlIh'](_0x12b47b['size'],0x1))),_0x347612=0x78,_0xc1d83b=0x46;if(_0x32a359){if(_0x45ac4c[_0x334c(0x1c6)](_0x45ac4c[_0x334c(0x1c7)],_0x45ac4c['fPkYD'])){const _0xd3b3a3=_0x8552d1['parse'](_0x16e51e);_0xd3b3a3[_0x334c(0xc8)]&&!_0x494c4f['includes'](_0x45ac4c[_0x334c(0xcc)])&&(_0x59c164['push'](_0x45ac4c['xEsqH']),_0x2a3193[_0x334c(0x84)](_0x45ac4c[_0x334c(0x1c8)]));}else return React[_0x334c(0x15a)](_0x925f58,{'visible':_0x32a359,'onComplete':_0x22ce1a,'onBack':_0x29adfb});}if(_0x5a0f7c){if(_0x45ac4c[_0x334c(0x1c9)](_0x45ac4c[_0x334c(0x1ca)],_0x334c(0x1cb)))_0x45ac4c[_0x334c(0x1cc)](_0x199fa5,_0x129da4=>{const _0x1c81a0=new _0x25c09d(_0x129da4);return _0x1c81a0[_0x334c(0x8e)](_0x3f9a62),_0x1c81a0;}),_0x4f817b(_0x422d55['SUCCESS']),_0x46d340[_0x334c(0x84)](_0x334c(0x85)+_0x280c30),_0x45ac4c[_0x334c(0x1cd)](_0x6944e0,null);else return React[_0x334c(0x15a)](_0x297def,{'visible':_0x5a0f7c,'onComplete':_0x24ad61});}if(_0x45ac4c[_0x334c(0xa0)](_0x7ff725,_0x4e3d6e)){if(_0x45ac4c[_0x334c(0x1ce)](_0x334c(0x5c),_0x45ac4c['kfwUj']))return console[_0x334c(0x84)](_0x334c(0x1c1)+_0x44aac3+_0x334c(0x1c2)+_0x4e3d6e['substring'](0x0,0x3c)+_0x334c(0x13f)),React[_0x334c(0x15a)](OAuthWebView,{'url':_0x4e3d6e,'platform':_0x44aac3,'onClose':_0x403719,'onSuccess':_0x328d22,'onComplete':_0x403719,'username':_0x531d35});else{var _0x43653e;const _0x4bb517=_0x45ac4c['yZRHQ'](_0x43653e=_0x19db5a['platform'],null)||_0x45ac4c['eiNUt'](_0x43653e,void 0x0)?void 0x0:_0x43653e[_0x334c(0xb0)]();_0x4bb517&&!_0x2c52a5[_0x334c(0xbd)](_0x4bb517)&&_0x1bcf7d[_0x334c(0xa7)](_0x4bb517);}}const _0x2f42f4=()=>{_0x45ac4c[_0x334c(0x1cf)](triggerHaptic,HapticType['BUTTON_PRESS']),_0x1cea89(![]);};if(_0x469f5b){if(_0x45ac4c['SeRai']===_0x45ac4c[_0x334c(0x1d0)])return React[_0x334c(0x15a)](_0x20d6ce,{'visible':_0x469f5b,'onAccept':_0x51e082,'onDecline':_0x1e8789,'connectedPlatforms':Array[_0x334c(0xd8)](_0x12b47b),'onConnectMore':_0x2f42f4,'loading':_0x4fe761});else _0x3ea29f[_0x334c(0xa7)](..._0x48ef25),_0x506863[_0x334c(0x84)](_0x45ac4c[_0x334c(0xa8)],_0x417d9b);}return React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1d1)]},React['createElement'](ScrollView,{'style':styles[_0x334c(0x1d2)],'showsVerticalScrollIndicator':![],'bounces':!![]},_0x47d54e&&React[_0x334c(0x15a)](TouchableOpacity,{'style':styles['backButton'],'onPress':_0x47d54e,'activeOpacity':0.7},React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x1d3)]},'‹')),React['createElement'](View,{'style':styles[_0x334c(0x1d4)]},React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x1d5)]},_0x45ac4c[_0x334c(0x1d6)]),React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x1d7)]},_0x45ac4c[_0x334c(0x1d8)])),React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1d9)]},React[_0x334c(0x15a)](_0x57614b,{'level':_0x530619,'style':styles['largePersona']}),React[_0x334c(0x15a)](ScrollView,{'ref':_0x39df7f,'horizontal':!![],'style':[styles[_0x334c(0x1da)],{'bottom':_0x347612}],'contentContainerStyle':[styles[_0x334c(0x1db)],_0xaecf9[_0x334c(0xcd)]<=0x4&&styles[_0x334c(0x1dc)]],'showsHorizontalScrollIndicator':![],'onScroll':_0x2944d8,'scrollEventThrottle':0x10,'decelerationRate':_0x45ac4c['iQRdL'],'scrollEnabled':_0xaecf9[_0x334c(0xcd)]>0x4},_0xaecf9['map'](_0x2f48de=>{const _0xff115=_0x45ac4c[_0x334c(0x1dd)](_0x55d8d1,_0x2f48de['id']),_0x5ac6c0=_0x12b47b[_0x334c(0xd4)](_0x2f48de['id']),_0x378a81=_0x45ac4c[_0x334c(0x1de)](_0xd85c2a[_0x2f48de['id']],_0x45ac4c[_0x334c(0x180)]);return React['createElement'](TouchableOpacity,{'key':_0x2f48de['id'],'style':[styles[_0x334c(0x181)],_0xff115&&styles['platformIconButtonSelected']],'onPress':()=>{_0x45ac4c[_0x334c(0x68)](triggerHaptic,HapticType[_0x334c(0x116)]),_0x45ac4c[_0x334c(0x198)](_0x6f73cb,_0x2f48de['id']);},'activeOpacity':0.7},React['createElement'](Image,{'source':_0x2f48de[_0x334c(0x1df)],'style':[styles[_0x334c(0x1e0)],_0x45ac4c[_0x334c(0x184)](_0x2f48de['id'],_0x45ac4c[_0x334c(0xfa)])&&styles[_0x334c(0x1e1)],_0x45ac4c['FTRaK'](_0x2f48de['id'],_0x45ac4c['eBvKq'])&&styles[_0x334c(0x183)],_0x2f48de['id']===_0x45ac4c[_0x334c(0x109)]&&styles[_0x334c(0x1e2)],_0x45ac4c[_0x334c(0x17f)](_0x2f48de['id'],_0x45ac4c['gGPsz'])&&styles[_0x334c(0x186)],_0x2f48de['id']===_0x334c(0x13)&&styles['claudeIcon'],_0x2f48de['id']===_0x45ac4c[_0x334c(0xb6)]&&styles[_0x334c(0x1e3)]],'resizeMode':_0x45ac4c[_0x334c(0x189)]}),_0x378a81&&React['createElement'](View,{'style':styles[_0x334c(0x18a)]}),_0x5ac6c0&&React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1e4)]}));})),_0x45ac4c[_0x334c(0x1e5)](_0xaecf9[_0x334c(0xcd)],0x4)&&React[_0x334c(0x15a)](View,{'style':[styles[_0x334c(0x1e6)],{'bottom':_0xc1d83b}]},React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1e7)]},React['createElement'](View,{'style':[styles[_0x334c(0x1e8)],{'left':_0x45ac4c[_0x334c(0x1e9)](_0x37302c,0x38)}]}))),_0x153ac9&&_0x45ac4c[_0x334c(0x1ea)](_0xaecf9['length'],0x4)&&React[_0x334c(0x15a)](Animated[_0x334c(0x1eb)],{'style':[styles['scrollIndicator'],{'transform':[{'translateX':_0x39a012[_0x334c(0x1ec)]({'inputRange':[0x0,0x1],'outputRange':[0x0,0x8]})}],'opacity':_0x39a012['interpolate']({'inputRange':[0x0,0x1],'outputRange':[0.5,0x1]})}]},React['createElement'](Text,{'style':styles[_0x334c(0x1ed)]},'›'))),React['createElement'](View,{'style':styles[_0x334c(0x1ee)]},_0x55d8d1&&((()=>{if(_0x45ac4c[_0x334c(0x1b7)](_0x45ac4c[_0x334c(0x1ef)],_0x45ac4c['BZzJT'])){const _0x5883ac=_0xaecf9[_0x334c(0x112)](_0x276ce1=>_0x276ce1['id']===_0x55d8d1);if(!_0x5883ac)return null;const _0x5b850a=_0x12b47b[_0x334c(0xd4)](_0x55d8d1),_0x410fb1=_0x45ac4c[_0x334c(0x1f0)](_0xd85c2a[_0x55d8d1],_0x334c(0x134)),_0x1162a2=_0x45ac4c[_0x334c(0x1f1)](_0x4e460d,null)||_0x45ac4c[_0x334c(0x1f2)](_0x4e460d,void 0x0)?void 0x0:_0x4e460d['includes'](_0x55d8d1);return React['createElement'](View,{'style':styles['platformCard']},React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1f3)]},React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x1b9)]},_0x5883ac[_0x334c(0xe5)]),_0x1162a2&&React['createElement'](View,{'style':styles['recommendedBadge']},React['createElement'](Text,{'style':styles[_0x334c(0x1f4)]},'Highly\x20Recommended')),React[_0x334c(0x15a)](TouchableOpacity,{'activeOpacity':0.8,'onPress':()=>!_0x410fb1&&_0x42a29d(_0x55d8d1,!_0x5b850a),'disabled':_0x410fb1,'style':[styles['customToggleTrack'],{'backgroundColor':_0x5b850a?_0x334c(0x48):_0x334c(0x49)}]},React[_0x334c(0x15a)](View,{'style':[styles[_0x334c(0x1be)],{'transform':[{'translateX':_0x5b850a?0x14:0x0}]}]}))),React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1f5)]},React['createElement'](Text,{'style':styles[_0x334c(0x1f6)]},_0x5883ac['description'])));}else _0x26886e['add'](_0xe0aa52),_0xa80313=!![];})())),React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1f7)]},React['createElement'](Text,{'style':styles['refreshFrequencyTitle']},_0x45ac4c['vDXPj']),React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x1f8)]},_0x334c(0x1f9)),React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x1fa)]},MODEL_REFRESH_OPTIONS[_0x334c(0xb3)](_0x2e87b7=>React[_0x334c(0x15a)](TouchableOpacity,{'key':_0x2e87b7['value'],'style':[styles[_0x334c(0x1fb)],_0x4ae0ee===_0x2e87b7[_0x334c(0x1fc)]&&styles['refreshSegmentSelected']],'onPress':()=>_0x1e5d7f(_0x2e87b7['value']),'activeOpacity':0.7},React[_0x334c(0x15a)](Text,{'style':[styles[_0x334c(0x1fd)],_0x4ae0ee===_0x2e87b7[_0x334c(0x1fc)]&&styles['refreshSegmentTextSelected']]},_0x2e87b7[_0x334c(0x1fe)])))),React['createElement'](Text,{'style':styles['refreshFrequencyHint']},(_0x45ac4c[_0x334c(0x1ff)](_0x313e62=MODEL_REFRESH_OPTIONS[_0x334c(0x112)](_0x5f0717=>_0x5f0717[_0x334c(0x1fc)]===_0x4ae0ee),null)||_0x45ac4c[_0x334c(0x9c)](_0x313e62,void 0x0)?void 0x0:_0x313e62['description'])||'')),React[_0x334c(0x15a)](View,{'style':styles['bottomButtonContainer']},React[_0x334c(0x15a)](View,{'style':styles[_0x334c(0x200)]},React['createElement'](_0x55724b,{'label':_0x45ac4c[_0x334c(0x201)],'onPress':_0x602dba,'disabled':loading||_0x45ac4c[_0x334c(0x202)](_0x12b47b[_0x334c(0x169)],0x0)||_0x1a1f6e||_0x163b53,'loading':loading||_0x1a1f6e||_0x163b53}),React[_0x334c(0x15a)](TouchableOpacity,{'style':styles['buttonOverlay'],'activeOpacity':0x1,'onPressIn':_0x16453f,'onPressOut':_0x3c44dc,'onPress':()=>{_0x45ac4c[_0x334c(0x203)](_0x12b47b[_0x334c(0x169)],0x0)&&!loading&&!_0x1a1f6e&&!_0x163b53&&(_0x45ac4c[_0x334c(0x204)](_0x45ac4c[_0x334c(0x205)],_0x45ac4c[_0x334c(0x206)])?_0x173f92[_0x334c(0xa7)](_0x45ab55):_0x45ac4c['vaWTl'](_0x602dba));}},React['createElement'](Animated[_0x334c(0x1eb)],{'style':[styles[_0x334c(0x207)],{'width':_0x1259dd['interpolate']({'inputRange':[0x0,0x1],'outputRange':['0%','100%']})}]}))),_0x3bc8d0&&React['createElement'](TouchableOpacity,{'style':styles[_0x334c(0x208)],'onPress':_0x375a73},React[_0x334c(0x15a)](Text,{'style':styles[_0x334c(0x209)]},_0x45ac4c[_0x334c(0x20a)])))));},styles=StyleSheet[_0x334c(0x20b)]({'container':{'flex':0x1,'backgroundColor':COLORS[_0x334c(0x20c)],'paddingHorizontal':0x18},'backButton':{'width':0x20,'height':0x20,'borderRadius':0x10,'backgroundColor':_0x334c(0x20d),'alignItems':_0x334c(0x20e),'justifyContent':'center','marginBottom':0x2},'backButtonText':{'fontSize':0x16,'fontWeight':_0x334c(0x20f),'color':'#1C1C1E','marginTop':-0x2},'scrollContent':{'flex':0x1},'headingContainer':{'width':_0x334c(0x210),'marginBottom':SPACING['sm'],'paddingTop':0x0,'marginTop':0x0},'title':{'fontFamily':_0x334c(0x211),'fontWeight':_0x334c(0x212),'fontSize':0x18,'lineHeight':0x20,'color':COLORS[_0x334c(0x213)],'textAlign':_0x334c(0x214),'marginBottom':0x4},'subtitle':{'fontFamily':_0x334c(0x215),'fontWeight':'400','fontSize':0x10,'lineHeight':0x18,'color':COLORS[_0x334c(0x216)],'textAlign':_0x334c(0x214)},'personaContainer':{'alignItems':_0x334c(0x20e),'position':'relative','marginTop':-0x14,'marginBottom':-0x78,'height':0x1c2},'largePersona':{'width':0x1f4,'height':0x1f4},'platformIconsOverlay':{'position':_0x334c(0x217),'width':'100%','height':0x46,'zIndex':0xa},'platformIconsScrollContent':{'flexDirection':_0x334c(0x218),'alignItems':_0x334c(0x20e),'paddingHorizontal':0x14,'gap':0x18},'platformIconsCentered':{'flexGrow':0x1,'justifyContent':'center'},'platformIconButton':{'width':0x34,'height':0x34,'borderRadius':0x1a,'backgroundColor':'#FFFFFF','justifyContent':_0x334c(0x20e),'alignItems':_0x334c(0x20e),'borderWidth':0x3,'borderColor':'transparent','shadowColor':_0x334c(0x219),'shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.15,'shadowRadius':0x4,'elevation':0x4},'platformIconButtonSelected':{'borderColor':_0x334c(0x21a),'backgroundColor':'#EFF6FF'},'platformIcon':{'width':0x1e,'height':0x1e},'youtubeIcon':{'width':0x2a,'height':0x2a},'pinterestIcon':{'width':0x24,'height':0x24},'gmailIcon':{'width':0x24,'height':0x24},'chatgptIcon':{'width':0x1e,'height':0x1e},'claudeIcon':{'width':0x20,'height':0x20},'grokIcon':{'width':0x24,'height':0x24},'connectingDot':{'position':'absolute','top':0x2,'right':0x2,'width':0xc,'height':0xc,'borderRadius':0x6,'backgroundColor':_0x334c(0x21b),'borderWidth':0x2,'borderColor':COLORS[_0x334c(0x20c)]},'connectedDot':{'position':_0x334c(0x217),'top':0x2,'right':0x2,'width':0xc,'height':0xc,'borderRadius':0x6,'backgroundColor':_0x334c(0x48),'borderWidth':0x2,'borderColor':COLORS[_0x334c(0x20c)]},'cardContainer':{'alignItems':_0x334c(0x20e),'marginTop':0x10,'marginBottom':SPACING['md']},'platformCard':{'width':0x147,'backgroundColor':_0x334c(0x21c),'borderRadius':0x10,'padding':0x8,'shadowColor':_0x334c(0x219),'shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.1,'shadowRadius':0x8,'elevation':0x3,'gap':0xa},'cardHeader':{'flexDirection':_0x334c(0x218),'alignItems':_0x334c(0x20e),'justifyContent':_0x334c(0x21d)},'platformCardTitle':{'fontSize':0x10,'fontWeight':_0x334c(0x20f),'color':COLORS['grey800'],'fontFamily':_0x334c(0x211)},'recommendedBadge':{'backgroundColor':_0x334c(0x21e),'paddingHorizontal':0xc,'paddingVertical':0x6,'borderRadius':0x10,'marginLeft':0x8},'recommendedBadgeText':{'fontSize':0xc,'fontWeight':'600','color':_0x334c(0x21f),'fontFamily':_0x334c(0x211)},'customToggleTrack':{'width':0x32,'height':0x1e,'borderRadius':0xf,'padding':0x2,'marginLeft':_0x334c(0x220),'marginRight':0x8,'justifyContent':'center'},'customToggleThumb':{'width':0x1a,'height':0x1a,'borderRadius':0xd,'backgroundColor':_0x334c(0x21c),'shadowColor':'#000','shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.2,'shadowRadius':0x2,'elevation':0x2},'descriptionContainer':{'backgroundColor':_0x334c(0x221),'borderRadius':0x8,'padding':0x8},'platformCardDescription':{'fontSize':0xd,'lineHeight':0x12,'color':COLORS[_0x334c(0x216)],'fontFamily':_0x334c(0x215)},'refreshFrequencySection':{'paddingHorizontal':0x10,'paddingVertical':0x14,'marginTop':0xc,'backgroundColor':_0x334c(0x222),'borderRadius':0x10,'marginHorizontal':SPACING['md'],'marginBottom':0x8,'borderWidth':0x1,'borderColor':_0x334c(0x223)},'refreshFrequencyTitle':{'fontSize':0x11,'fontWeight':_0x334c(0x212),'color':_0x334c(0x224),'fontFamily':_0x334c(0x211),'marginBottom':0x4},'refreshFrequencyDescription':{'fontSize':0xe,'color':_0x334c(0x225),'fontFamily':'Inter','fontWeight':'400','marginBottom':0x10},'refreshSegmentedControl':{'flexDirection':_0x334c(0x218),'backgroundColor':'#E8E8ED','borderRadius':0xc,'padding':0x3},'refreshSegment':{'flex':0x1,'paddingVertical':0xa,'alignItems':_0x334c(0x20e),'justifyContent':_0x334c(0x20e),'borderRadius':0xa},'refreshSegmentSelected':{'backgroundColor':_0x334c(0x224),'shadowColor':_0x334c(0x219),'shadowOffset':{'width':0x0,'height':0x2},'shadowOpacity':0.15,'shadowRadius':0x4,'elevation':0x3},'refreshSegmentText':{'fontSize':0xf,'fontFamily':_0x334c(0x215),'fontWeight':_0x334c(0x226),'color':_0x334c(0x225)},'refreshSegmentTextSelected':{'fontWeight':_0x334c(0x212),'color':'#FFFFFF'},'refreshFrequencyHint':{'fontSize':0xd,'fontFamily':'Inter','fontWeight':_0x334c(0x227),'color':'#8E8E93','textAlign':_0x334c(0x20e),'marginTop':0xc},'privacyLinkContainer':{'marginTop':0x10,'paddingTop':0x10,'borderTopWidth':0x1,'borderTopColor':_0x334c(0x228),'alignItems':_0x334c(0x20e)},'privacyLinkText':{'fontSize':0xe,'color':_0x334c(0x229),'fontFamily':'Inter','fontWeight':_0x334c(0x226)},'bottomButtonContainer':{'paddingTop':0x8,'paddingBottom':0x0,'paddingHorizontal':SPACING['md']},'buttonWrapper':{'position':_0x334c(0x22a)},'buttonOverlay':{'position':'absolute','top':0x0,'left':0x0,'right':0x0,'bottom':0x0,'borderRadius':0xc,'overflow':_0x334c(0x22b)},'holdProgressBar':{'position':'absolute','bottom':0x0,'left':0x0,'height':0x4,'backgroundColor':_0x334c(0x48),'borderRadius':0x2},'skipButton':{'alignItems':'center','paddingVertical':0xa,'marginBottom':0x22},'skipButtonText':{'fontSize':0x10,'fontFamily':_0x334c(0x215),'fontWeight':'500','color':COLORS[_0x334c(0x216)]},'pageIndicatorContainer':{'position':_0x334c(0x217),'alignSelf':'center','zIndex':0xb},'scrollBarTrack':{'width':0x50,'height':0x4,'backgroundColor':COLORS['grey300'],'borderRadius':0x2,'position':_0x334c(0x22a),'overflow':'hidden'},'scrollBarThumb':{'position':_0x334c(0x217),'width':0x18,'height':0x4,'backgroundColor':COLORS['grey600'],'borderRadius':0x2,'left':0x0},'scrollIndicator':{'position':_0x334c(0x217),'bottom':0x3c,'right':0x1e,'zIndex':0xc},'scrollIndicatorText':{'fontSize':0x20,'color':COLORS[_0x334c(0x22c)],'fontWeight':_0x334c(0x22d)}});export default PlatformConnectorsStep;
|
|
18
|
+
import { setTemporaryPin } from '../services/pinStorageUtils';
|
|
19
|
+
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
20
|
+
|
|
21
|
+
// Model refresh frequency options
|
|
22
|
+
|
|
23
|
+
export const MODEL_REFRESH_OPTIONS = [{
|
|
24
|
+
value: 'daily',
|
|
25
|
+
label: 'Daily',
|
|
26
|
+
description: 'Always up-to-date data.'
|
|
27
|
+
}, {
|
|
28
|
+
value: 'weekly',
|
|
29
|
+
label: 'Weekly',
|
|
30
|
+
description: 'Balanced freshness and efficiency.'
|
|
31
|
+
}, {
|
|
32
|
+
value: 'biweekly',
|
|
33
|
+
label: 'Biweekly',
|
|
34
|
+
description: 'Less frequent, more efficient.'
|
|
35
|
+
}];
|
|
36
|
+
const PlatformConnectorsStep = ({
|
|
37
|
+
onUpdate,
|
|
38
|
+
onSkip,
|
|
39
|
+
loading = false,
|
|
40
|
+
onPinComplete,
|
|
41
|
+
onReviewerBypass,
|
|
42
|
+
onLogout,
|
|
43
|
+
allowedPlatforms,
|
|
44
|
+
recommendedPlatforms,
|
|
45
|
+
initialConnectedPlatforms,
|
|
46
|
+
onRefreshFrequencyChange,
|
|
47
|
+
initialRefreshFrequency = 'weekly',
|
|
48
|
+
userEmail
|
|
49
|
+
}) => {
|
|
50
|
+
var _MODEL_REFRESH_OPTION;
|
|
51
|
+
// Initialize with initialConnectedPlatforms if provided (for returning users)
|
|
52
|
+
// Normalize to lowercase to prevent duplicates from case mismatches
|
|
53
|
+
const [connectedPlatforms, setConnectedPlatforms] = useState(() => new Set((initialConnectedPlatforms || []).map(p => p.toLowerCase())));
|
|
54
|
+
const [showConsentScreen, setShowConsentScreen] = useState(false);
|
|
55
|
+
const [showPinScreen, setShowPinScreen] = useState(false);
|
|
56
|
+
const [showLoadingScreen, setShowLoadingScreen] = useState(false);
|
|
57
|
+
// Track platforms at last consent view to detect if user added new ones
|
|
58
|
+
const platformsAtLastConsent = useRef(new Set((initialConnectedPlatforms || []).map(p => p.toLowerCase())));
|
|
59
|
+
const [createdPin, setCreatedPin] = useState('');
|
|
60
|
+
const [connectionStatuses, setConnectionStatuses] = useState({});
|
|
61
|
+
const [showOAuthWebView, setShowOAuthWebView] = useState(false);
|
|
62
|
+
const [oauthUrl, setOauthUrl] = useState('');
|
|
63
|
+
const [currentPlatform, setCurrentPlatform] = useState('');
|
|
64
|
+
const [longPressTimer, setLongPressTimer] = useState(null);
|
|
65
|
+
const [holdProgress, setHoldProgress] = useState(0);
|
|
66
|
+
const holdProgressAnim = useRef(new Animated.Value(0)).current;
|
|
67
|
+
const [selectedPlatformId, setSelectedPlatformId] = useState('');
|
|
68
|
+
const scrollViewRef = useRef(null);
|
|
69
|
+
const [showScrollIndicator, setShowScrollIndicator] = useState(true);
|
|
70
|
+
const scrollIndicatorAnim = useRef(new Animated.Value(0)).current;
|
|
71
|
+
const [currentPage, setCurrentPage] = useState(0);
|
|
72
|
+
const lastScrollX = useRef(0);
|
|
73
|
+
|
|
74
|
+
// Training state
|
|
75
|
+
const [username, setUsername] = useState('');
|
|
76
|
+
const [personaProgress, setPersonaProgress] = useState(0);
|
|
77
|
+
const [personaStatus, setPersonaStatus] = useState('Initializing...');
|
|
78
|
+
const [isPersonaComplete, setIsPersonaComplete] = useState(false);
|
|
79
|
+
const [hasError, setHasError] = useState(false);
|
|
80
|
+
const [userToken, setUserToken] = useState(null);
|
|
81
|
+
const [userInfo, setUserInfo] = useState(null);
|
|
82
|
+
const socketRef = useRef(null);
|
|
83
|
+
const [isBackgroundTrainingStarted, setIsBackgroundTrainingStarted] = useState(false);
|
|
84
|
+
const [backgroundTrainingProgress, setBackgroundTrainingProgress] = useState('');
|
|
85
|
+
const [backgroundSocketId, setBackgroundSocketId] = useState(null);
|
|
86
|
+
const [isContinueLoading, setIsContinueLoading] = useState(false);
|
|
87
|
+
const [isConsentLoading, setIsConsentLoading] = useState(false);
|
|
88
|
+
|
|
89
|
+
// 🎯 Pending connection - used to delay persona coloring until after WebView closes
|
|
90
|
+
const [pendingConnection, setPendingConnection] = useState(null);
|
|
91
|
+
|
|
92
|
+
// Model refresh frequency state
|
|
93
|
+
const [refreshFrequency, setRefreshFrequency] = useState(initialRefreshFrequency);
|
|
94
|
+
const {
|
|
95
|
+
connectPlatform,
|
|
96
|
+
disconnectPlatform,
|
|
97
|
+
isConnecting
|
|
98
|
+
} = useConnections();
|
|
99
|
+
// SDK doesn't have AuthProvider - user is null
|
|
100
|
+
const user = null;
|
|
101
|
+
|
|
102
|
+
// Sync initialConnectedPlatforms if provided after mount (e.g., async fetch for returning users)
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
if (initialConnectedPlatforms && initialConnectedPlatforms.length > 0) {
|
|
105
|
+
setConnectedPlatforms(prev => {
|
|
106
|
+
const newSet = new Set(prev);
|
|
107
|
+
let hasChanges = false;
|
|
108
|
+
initialConnectedPlatforms.forEach(platform => {
|
|
109
|
+
const normalized = platform.toLowerCase();
|
|
110
|
+
if (!newSet.has(normalized)) {
|
|
111
|
+
newSet.add(normalized);
|
|
112
|
+
hasChanges = true;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return hasChanges ? newSet : prev;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}, [initialConnectedPlatforms]);
|
|
119
|
+
|
|
120
|
+
// 🔄 Load connected platforms from AsyncStorage on mount (for returning users)
|
|
121
|
+
// This ensures toggles reflect previously connected platforms even if initialConnectedPlatforms isn't passed
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
const loadConnectedPlatformsFromStorage = async () => {
|
|
124
|
+
try {
|
|
125
|
+
console.log('🔄 [PLATFORMS] Loading connected platforms from storage...');
|
|
126
|
+
const loadedPlatforms = [];
|
|
127
|
+
|
|
128
|
+
// 1. Load from user_connected_platforms (main storage for OAuth platforms)
|
|
129
|
+
const platformsJson = await AsyncStorage.getItem('user_connected_platforms');
|
|
130
|
+
if (platformsJson) {
|
|
131
|
+
const platforms = JSON.parse(platformsJson);
|
|
132
|
+
if (Array.isArray(platforms)) {
|
|
133
|
+
loadedPlatforms.push(...platforms);
|
|
134
|
+
console.log('✅ [PLATFORMS] Loaded from user_connected_platforms:', platforms);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// 2. Load from platform_account_details (detailed account info)
|
|
139
|
+
const accountDetailsJson = await AsyncStorage.getItem('platform_account_details');
|
|
140
|
+
if (accountDetailsJson) {
|
|
141
|
+
const accountDetails = JSON.parse(accountDetailsJson);
|
|
142
|
+
if (Array.isArray(accountDetails)) {
|
|
143
|
+
accountDetails.forEach(account => {
|
|
144
|
+
var _account$platform;
|
|
145
|
+
const platformId = (_account$platform = account.platform) === null || _account$platform === void 0 ? void 0 : _account$platform.toLowerCase();
|
|
146
|
+
if (platformId && !loadedPlatforms.includes(platformId)) {
|
|
147
|
+
loadedPlatforms.push(platformId);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
console.log('✅ [PLATFORMS] Loaded from platform_account_details:', accountDetails.map(a => a.platform));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// 3. Check LLM platforms individually
|
|
155
|
+
const llmPlatforms = ['chatgpt', 'claude', 'gemini', 'grok'];
|
|
156
|
+
for (const llmPlatform of llmPlatforms) {
|
|
157
|
+
const llmConnection = await AsyncStorage.getItem(`@onairos:llm_connected:${llmPlatform}`);
|
|
158
|
+
if (llmConnection) {
|
|
159
|
+
const parsed = JSON.parse(llmConnection);
|
|
160
|
+
if (parsed.connected && !loadedPlatforms.includes(llmPlatform)) {
|
|
161
|
+
loadedPlatforms.push(llmPlatform);
|
|
162
|
+
console.log(`✅ [PLATFORMS] Loaded LLM platform: ${llmPlatform}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// 4. Check LinkedIn separately
|
|
168
|
+
const linkedinConnection = await AsyncStorage.getItem('@onairos:linkedin_connected');
|
|
169
|
+
if (linkedinConnection) {
|
|
170
|
+
const parsed = JSON.parse(linkedinConnection);
|
|
171
|
+
if (parsed.connected && !loadedPlatforms.includes('linkedin')) {
|
|
172
|
+
loadedPlatforms.push('linkedin');
|
|
173
|
+
console.log('✅ [PLATFORMS] Loaded LinkedIn connection');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// 5. Fetch server-side connections (covers fresh sign-in after logout)
|
|
178
|
+
if (userEmail) {
|
|
179
|
+
try {
|
|
180
|
+
const serverAccounts = await getConnectedAccountsLookup(userEmail);
|
|
181
|
+
serverAccounts.forEach(account => {
|
|
182
|
+
const platformId = account.platform.toLowerCase();
|
|
183
|
+
if (!loadedPlatforms.includes(platformId)) {
|
|
184
|
+
loadedPlatforms.push(platformId);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
} catch (err) {
|
|
188
|
+
console.warn('⚠️ [PLATFORMS] Server lookup failed, using local only:', err);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Update state if we found any connected platforms
|
|
193
|
+
if (loadedPlatforms.length > 0) {
|
|
194
|
+
setConnectedPlatforms(prev => {
|
|
195
|
+
const newSet = new Set(prev);
|
|
196
|
+
let hasChanges = false;
|
|
197
|
+
loadedPlatforms.forEach(platform => {
|
|
198
|
+
const normalized = platform.toLowerCase();
|
|
199
|
+
if (!newSet.has(normalized)) {
|
|
200
|
+
newSet.add(normalized);
|
|
201
|
+
hasChanges = true;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
if (hasChanges) {
|
|
205
|
+
console.log('✅ [PLATFORMS] Updated connectedPlatforms state with:', Array.from(newSet));
|
|
206
|
+
}
|
|
207
|
+
return hasChanges ? newSet : prev;
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
} catch (error) {
|
|
211
|
+
console.error('❌ [PLATFORMS] Error loading connected platforms from storage:', error);
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
loadConnectedPlatformsFromStorage();
|
|
215
|
+
}, [userEmail]);
|
|
216
|
+
|
|
217
|
+
// Initialize username
|
|
218
|
+
useEffect(() => {
|
|
219
|
+
const initializeUsername = async () => {
|
|
220
|
+
try {
|
|
221
|
+
const storedUsername = await AsyncStorage.getItem('onairos_username');
|
|
222
|
+
if (storedUsername && !username) {
|
|
223
|
+
setUsername(storedUsername);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (user && !username) {
|
|
227
|
+
var _user$email;
|
|
228
|
+
const initialUsername = (user === null || user === void 0 || (_user$email = user.email) === null || _user$email === void 0 ? void 0 : _user$email.split('@')[0]) || (user === null || user === void 0 ? void 0 : user.name) || `user_${Math.floor(Math.random() * 10000)}`;
|
|
229
|
+
setUsername(initialUsername);
|
|
230
|
+
await AsyncStorage.setItem('onairos_username', initialUsername);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
if (!username) {
|
|
234
|
+
const fallbackUsername = `mobile_user_${Math.floor(Math.random() * 10000)}`;
|
|
235
|
+
setUsername(fallbackUsername);
|
|
236
|
+
await AsyncStorage.setItem('onairos_username', fallbackUsername);
|
|
237
|
+
}
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.error('Error initializing username:', error);
|
|
240
|
+
const fallbackUsername = `user_${Math.floor(Math.random() * 10000)}`;
|
|
241
|
+
setUsername(fallbackUsername);
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
initializeUsername();
|
|
245
|
+
}, [user, username]);
|
|
246
|
+
|
|
247
|
+
// Scroll indicator animation
|
|
248
|
+
useEffect(() => {
|
|
249
|
+
if (showScrollIndicator) {
|
|
250
|
+
Animated.loop(Animated.sequence([Animated.timing(scrollIndicatorAnim, {
|
|
251
|
+
toValue: 1,
|
|
252
|
+
duration: 1000,
|
|
253
|
+
useNativeDriver: true
|
|
254
|
+
}), Animated.timing(scrollIndicatorAnim, {
|
|
255
|
+
toValue: 0,
|
|
256
|
+
duration: 1000,
|
|
257
|
+
useNativeDriver: true
|
|
258
|
+
})])).start();
|
|
259
|
+
}
|
|
260
|
+
}, [showScrollIndicator]);
|
|
261
|
+
|
|
262
|
+
// Handle scroll
|
|
263
|
+
const handleScroll = useCallback(event => {
|
|
264
|
+
const scrollX = event.nativeEvent.contentOffset.x;
|
|
265
|
+
const width = event.nativeEvent.layoutMeasurement.width;
|
|
266
|
+
const contentSize = event.nativeEvent.contentSize.width;
|
|
267
|
+
lastScrollX.current = scrollX;
|
|
268
|
+
const maxScroll = contentSize - width;
|
|
269
|
+
const scrollProgress = maxScroll > 0 ? scrollX / maxScroll : 0;
|
|
270
|
+
setCurrentPage(scrollProgress);
|
|
271
|
+
if (scrollX > 10 && showScrollIndicator) {
|
|
272
|
+
setShowScrollIndicator(false);
|
|
273
|
+
}
|
|
274
|
+
}, [showScrollIndicator]);
|
|
275
|
+
|
|
276
|
+
// Platform list with chat platforms
|
|
277
|
+
const platforms = [{
|
|
278
|
+
id: 'youtube',
|
|
279
|
+
name: 'YouTube',
|
|
280
|
+
icon: getPlatformIcon('youtube'),
|
|
281
|
+
description: 'Use your watch history, likes, and subscriptions to enrich your model.',
|
|
282
|
+
isChatPlatform: false
|
|
283
|
+
}, {
|
|
284
|
+
id: 'reddit',
|
|
285
|
+
name: 'Reddit',
|
|
286
|
+
icon: getPlatformIcon('reddit'),
|
|
287
|
+
description: 'Use your posts and comments to enrich your model.',
|
|
288
|
+
isChatPlatform: false
|
|
289
|
+
}, {
|
|
290
|
+
id: 'pinterest',
|
|
291
|
+
name: 'Pinterest',
|
|
292
|
+
icon: getPlatformIcon('pinterest'),
|
|
293
|
+
description: 'Use your pins, boards, and interests to enrich your model.',
|
|
294
|
+
isChatPlatform: false
|
|
295
|
+
}, {
|
|
296
|
+
id: 'linkedin',
|
|
297
|
+
name: 'LinkedIn',
|
|
298
|
+
icon: getPlatformIcon('linkedin'),
|
|
299
|
+
description: 'Use your professional network and career interests to enrich your model.',
|
|
300
|
+
isChatPlatform: false
|
|
301
|
+
}, {
|
|
302
|
+
id: 'gmail',
|
|
303
|
+
name: 'Gmail',
|
|
304
|
+
icon: getPlatformIcon('gmail'),
|
|
305
|
+
description: 'Use your email information to enrich your model.',
|
|
306
|
+
isChatPlatform: false
|
|
307
|
+
}, {
|
|
308
|
+
id: 'chatgpt',
|
|
309
|
+
name: 'ChatGPT',
|
|
310
|
+
icon: getPlatformIcon('chatgpt'),
|
|
311
|
+
description: 'Use your ChatGPT conversations and memories to enrich your model.',
|
|
312
|
+
isChatPlatform: true
|
|
313
|
+
}, {
|
|
314
|
+
id: 'claude',
|
|
315
|
+
name: 'Claude',
|
|
316
|
+
icon: getPlatformIcon('claude'),
|
|
317
|
+
description: 'Use your Claude conversations to enrich your model.',
|
|
318
|
+
isChatPlatform: true
|
|
319
|
+
}, {
|
|
320
|
+
id: 'gemini',
|
|
321
|
+
name: 'Gemini',
|
|
322
|
+
icon: getPlatformIcon('gemini'),
|
|
323
|
+
description: 'Use your Gemini conversations to enrich your model.',
|
|
324
|
+
isChatPlatform: true
|
|
325
|
+
}, {
|
|
326
|
+
id: 'grok',
|
|
327
|
+
name: 'Grok',
|
|
328
|
+
icon: getPlatformIcon('grok'),
|
|
329
|
+
description: 'Use your Grok conversations from X to enrich your model.',
|
|
330
|
+
isChatPlatform: true
|
|
331
|
+
}];
|
|
332
|
+
|
|
333
|
+
// Filter and order platforms based on allowedPlatforms (order is preserved)
|
|
334
|
+
const filteredPlatforms = allowedPlatforms ? allowedPlatforms.map(id => platforms.find(p => p.id === id)).filter(p => p !== undefined) : platforms;
|
|
335
|
+
|
|
336
|
+
// Set default selected platform to first filtered platform (leftmost)
|
|
337
|
+
// This ensures the selection always starts at the leftmost platform
|
|
338
|
+
useEffect(() => {
|
|
339
|
+
if (filteredPlatforms.length > 0) {
|
|
340
|
+
// Always set to first platform on mount or when allowedPlatforms changes
|
|
341
|
+
const firstPlatformId = filteredPlatforms[0].id;
|
|
342
|
+
if (!selectedPlatformId || !filteredPlatforms.find(p => p.id === selectedPlatformId)) {
|
|
343
|
+
setSelectedPlatformId(firstPlatformId);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}, [allowedPlatforms, filteredPlatforms.length]);
|
|
347
|
+
const handlePlatformToggle = async (platformId, enabled) => {
|
|
348
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
349
|
+
console.log(`🔄 [TOGGLE] Platform toggle: ${platformId} = ${enabled}`);
|
|
350
|
+
try {
|
|
351
|
+
if (enabled) {
|
|
352
|
+
const storedUsername = await AsyncStorage.getItem('onairos_username');
|
|
353
|
+
const validUsername = storedUsername || username;
|
|
354
|
+
console.log(`👤 [TOGGLE] Username check - stored: "${storedUsername}", state: "${username}", valid: "${validUsername}"`);
|
|
355
|
+
if (!validUsername || validUsername.trim() === '') {
|
|
356
|
+
console.error('❌ [TOGGLE] No username available - cannot proceed with OAuth');
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Check if this is an LLM/chat platform (ChatGPT, Claude, Gemini, Grok)
|
|
361
|
+
const platform = platforms.find(p => p.id === platformId);
|
|
362
|
+
const isLLM = (platform === null || platform === void 0 ? void 0 : platform.isChatPlatform) || isLLMPlatform(platformId);
|
|
363
|
+
if (isLLM) {
|
|
364
|
+
// LLM platforms use WebView-based login + conversation extraction
|
|
365
|
+
console.log(`🤖 [LLM] Opening WebView for ${platformId} login and export...`);
|
|
366
|
+
setCurrentPlatform(platformId);
|
|
367
|
+
setConnectionStatuses(prev => ({
|
|
368
|
+
...prev,
|
|
369
|
+
[platformId]: 'connecting'
|
|
370
|
+
}));
|
|
371
|
+
|
|
372
|
+
// Get the platform's login URL
|
|
373
|
+
const llmUrl = getLLMPlatformUrl(platformId);
|
|
374
|
+
if (llmUrl) {
|
|
375
|
+
console.log(`🌐 [LLM] Opening ${platformId} URL:`, llmUrl);
|
|
376
|
+
setOauthUrl(llmUrl);
|
|
377
|
+
setShowOAuthWebView(true);
|
|
378
|
+
} else {
|
|
379
|
+
console.error(`❌ [LLM] No URL configured for platform: ${platformId}`);
|
|
380
|
+
setConnectionStatuses(prev => ({
|
|
381
|
+
...prev,
|
|
382
|
+
[platformId]: 'error'
|
|
383
|
+
}));
|
|
384
|
+
triggerHaptic(HapticType.ERROR);
|
|
385
|
+
}
|
|
386
|
+
return; // Exit early for LLM platforms - WebView handles the rest
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// LinkedIn uses WebView-based login + profile URL extraction (similar to LLM platforms)
|
|
390
|
+
if (isLinkedInPlatform(platformId)) {
|
|
391
|
+
console.log(`💼 [LINKEDIN] Opening WebView for LinkedIn login...`);
|
|
392
|
+
setCurrentPlatform(platformId);
|
|
393
|
+
setConnectionStatuses(prev => ({
|
|
394
|
+
...prev,
|
|
395
|
+
[platformId]: 'connecting'
|
|
396
|
+
}));
|
|
397
|
+
|
|
398
|
+
// Open LinkedIn login page directly
|
|
399
|
+
const linkedinLoginUrl = 'https://www.linkedin.com/login';
|
|
400
|
+
console.log(`🌐 [LINKEDIN] Opening LinkedIn URL:`, linkedinLoginUrl);
|
|
401
|
+
setOauthUrl(linkedinLoginUrl);
|
|
402
|
+
setShowOAuthWebView(true);
|
|
403
|
+
return; // Exit early for LinkedIn - WebView handles the rest
|
|
404
|
+
}
|
|
405
|
+
if (hasNativeSDK(platformId)) {
|
|
406
|
+
setCurrentPlatform(platformId);
|
|
407
|
+
setConnectionStatuses(prev => ({
|
|
408
|
+
...prev,
|
|
409
|
+
[platformId]: 'connecting'
|
|
410
|
+
}));
|
|
411
|
+
const success = await initiateNativeAuth(platformId, validUsername);
|
|
412
|
+
if (success) {
|
|
413
|
+
const newConnected = new Set(connectedPlatforms);
|
|
414
|
+
newConnected.add(platformId);
|
|
415
|
+
setConnectedPlatforms(newConnected);
|
|
416
|
+
setConnectionStatuses(prev => ({
|
|
417
|
+
...prev,
|
|
418
|
+
[platformId]: 'connected'
|
|
419
|
+
}));
|
|
420
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
421
|
+
} else {
|
|
422
|
+
setConnectionStatuses(prev => ({
|
|
423
|
+
...prev,
|
|
424
|
+
[platformId]: 'error'
|
|
425
|
+
}));
|
|
426
|
+
triggerHaptic(HapticType.ERROR);
|
|
427
|
+
}
|
|
428
|
+
} else {
|
|
429
|
+
console.log(`🌐 [TOGGLE] Starting OAuth flow for ${platformId}...`);
|
|
430
|
+
setCurrentPlatform(platformId);
|
|
431
|
+
setConnectionStatuses(prev => ({
|
|
432
|
+
...prev,
|
|
433
|
+
[platformId]: 'connecting'
|
|
434
|
+
}));
|
|
435
|
+
const oauthUrl = await initiateOAuth(platformId, validUsername);
|
|
436
|
+
console.log(`🔗 [TOGGLE] OAuth URL result for ${platformId}:`, oauthUrl ? oauthUrl.substring(0, 50) + '...' : 'NULL');
|
|
437
|
+
if (oauthUrl) {
|
|
438
|
+
console.log(`✅ [TOGGLE] Setting WebView state - showing modal for ${platformId}`);
|
|
439
|
+
setOauthUrl(oauthUrl);
|
|
440
|
+
setShowOAuthWebView(true);
|
|
441
|
+
} else {
|
|
442
|
+
console.error(`❌ [TOGGLE] OAuth failed for ${platformId} - no URL returned`);
|
|
443
|
+
setConnectionStatuses(prev => ({
|
|
444
|
+
...prev,
|
|
445
|
+
[platformId]: 'error'
|
|
446
|
+
}));
|
|
447
|
+
triggerHaptic(HapticType.ERROR);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
} else {
|
|
451
|
+
await disconnectPlatform(platformId);
|
|
452
|
+
const newConnected = new Set(connectedPlatforms);
|
|
453
|
+
newConnected.delete(platformId);
|
|
454
|
+
setConnectedPlatforms(newConnected);
|
|
455
|
+
setConnectionStatuses(prev => ({
|
|
456
|
+
...prev,
|
|
457
|
+
[platformId]: 'disconnected'
|
|
458
|
+
}));
|
|
459
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
460
|
+
|
|
461
|
+
// 🔄 Remove from BOTH storage keys for consistency
|
|
462
|
+
try {
|
|
463
|
+
const existingPlatformsJson = await AsyncStorage.getItem('user_connected_platforms');
|
|
464
|
+
if (existingPlatformsJson) {
|
|
465
|
+
const existingPlatforms = JSON.parse(existingPlatformsJson);
|
|
466
|
+
const updatedPlatforms = existingPlatforms.filter(p => p.toLowerCase() !== platformId.toLowerCase());
|
|
467
|
+
await AsyncStorage.setItem('user_connected_platforms', JSON.stringify(updatedPlatforms));
|
|
468
|
+
await AsyncStorage.setItem('connectedPlatforms', JSON.stringify(updatedPlatforms));
|
|
469
|
+
console.log(`✅ [STORAGE] Removed ${platformId} from both storage keys:`, updatedPlatforms);
|
|
470
|
+
}
|
|
471
|
+
} catch (storageError) {
|
|
472
|
+
console.error('❌ [STORAGE] Error removing platform connection:', storageError);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
// Also remove local LLM connection status
|
|
476
|
+
await AsyncStorage.removeItem(`@onairos:llm_connected:${platformId}`);
|
|
477
|
+
|
|
478
|
+
// Also remove LinkedIn connection status if applicable
|
|
479
|
+
if (platformId.toLowerCase() === 'linkedin') {
|
|
480
|
+
await AsyncStorage.removeItem('@onairos:linkedin_connected');
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
} catch (error) {
|
|
484
|
+
console.error(`Error toggling platform ${platformId}:`, error);
|
|
485
|
+
setConnectionStatuses(prev => ({
|
|
486
|
+
...prev,
|
|
487
|
+
[platformId]: 'error'
|
|
488
|
+
}));
|
|
489
|
+
triggerHaptic(HapticType.ERROR);
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
const handleUpdate = async () => {
|
|
493
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
494
|
+
|
|
495
|
+
// If no new platforms were added since last consent view, skip PIN/loading
|
|
496
|
+
const currentPlatforms = connectedPlatforms;
|
|
497
|
+
const previousPlatforms = platformsAtLastConsent.current;
|
|
498
|
+
const hasNewPlatforms = Array.from(currentPlatforms).some(p => !previousPlatforms.has(p));
|
|
499
|
+
if (!hasNewPlatforms && previousPlatforms.size > 0) {
|
|
500
|
+
console.log('ℹ️ [PLATFORMS] No new platforms connected, skipping PIN/loading');
|
|
501
|
+
platformsAtLastConsent.current = new Set(currentPlatforms);
|
|
502
|
+
setShowConsentScreen(true);
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
setIsContinueLoading(true);
|
|
506
|
+
try {
|
|
507
|
+
setShowPinScreen(true);
|
|
508
|
+
} finally {
|
|
509
|
+
setIsContinueLoading(false);
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
const handleSkip = () => {
|
|
513
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
514
|
+
if (onSkip) {
|
|
515
|
+
onSkip();
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
const handleConsentAccept = async () => {
|
|
519
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
520
|
+
|
|
521
|
+
// 🚀 Show loading on button immediately
|
|
522
|
+
setIsConsentLoading(true);
|
|
523
|
+
|
|
524
|
+
// Small delay to ensure React renders the loading state before async work starts
|
|
525
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
526
|
+
try {
|
|
527
|
+
if (onPinComplete) {
|
|
528
|
+
await onPinComplete(createdPin);
|
|
529
|
+
} else {
|
|
530
|
+
// onUpdate is async - wait for it to complete
|
|
531
|
+
await onUpdate(Array.from(connectedPlatforms));
|
|
532
|
+
}
|
|
533
|
+
} finally {
|
|
534
|
+
setIsConsentLoading(false);
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
const handleConsentDecline = () => {
|
|
538
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
539
|
+
setShowConsentScreen(false);
|
|
540
|
+
};
|
|
541
|
+
const handleRefreshFrequencyChange = async frequency => {
|
|
542
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
543
|
+
setRefreshFrequency(frequency);
|
|
544
|
+
|
|
545
|
+
// Save to AsyncStorage
|
|
546
|
+
try {
|
|
547
|
+
await AsyncStorage.setItem('@onairos:model_refresh_frequency', frequency);
|
|
548
|
+
console.log(`✅ [REFRESH] Model refresh frequency set to: ${frequency}`);
|
|
549
|
+
} catch (error) {
|
|
550
|
+
console.error('❌ [REFRESH] Error saving refresh frequency:', error);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
// Call external handler if provided
|
|
554
|
+
if (onRefreshFrequencyChange) {
|
|
555
|
+
onRefreshFrequencyChange(frequency);
|
|
556
|
+
}
|
|
557
|
+
};
|
|
558
|
+
const openPrivacyPolicy = () => {
|
|
559
|
+
const Linking = require('react-native').Linking;
|
|
560
|
+
Linking.openURL('https://privacy.onairos.io/');
|
|
561
|
+
};
|
|
562
|
+
const handlePinComplete = async pin => {
|
|
563
|
+
setCreatedPin(pin);
|
|
564
|
+
setTemporaryPin(pin);
|
|
565
|
+
setShowPinScreen(false);
|
|
566
|
+
setShowLoadingScreen(true);
|
|
567
|
+
};
|
|
568
|
+
const handleLoadingComplete = () => {
|
|
569
|
+
setShowLoadingScreen(false);
|
|
570
|
+
setShowConsentScreen(true);
|
|
571
|
+
};
|
|
572
|
+
const handleOAuthSuccess = async result => {
|
|
573
|
+
if (currentPlatform) {
|
|
574
|
+
if (result === 'success' || result !== 'error') {
|
|
575
|
+
// 🎯 Don't update connectedPlatforms immediately - set as pending
|
|
576
|
+
// The persona coloring will happen AFTER the WebView closes
|
|
577
|
+
setPendingConnection(currentPlatform);
|
|
578
|
+
setConnectionStatuses(prev => ({
|
|
579
|
+
...prev,
|
|
580
|
+
[currentPlatform]: 'connected'
|
|
581
|
+
}));
|
|
582
|
+
|
|
583
|
+
// 🔄 Store platform connection in BOTH storage keys for consistency
|
|
584
|
+
try {
|
|
585
|
+
const existingPlatformsJson = await AsyncStorage.getItem('user_connected_platforms');
|
|
586
|
+
const existingPlatforms = existingPlatformsJson ? JSON.parse(existingPlatformsJson) : [];
|
|
587
|
+
if (!existingPlatforms.includes(currentPlatform.toLowerCase())) {
|
|
588
|
+
existingPlatforms.push(currentPlatform.toLowerCase());
|
|
589
|
+
await AsyncStorage.setItem('user_connected_platforms', JSON.stringify(existingPlatforms));
|
|
590
|
+
await AsyncStorage.setItem('connectedPlatforms', JSON.stringify(existingPlatforms));
|
|
591
|
+
console.log(`✅ [STORAGE] Added ${currentPlatform} to both storage keys:`, existingPlatforms);
|
|
592
|
+
}
|
|
593
|
+
} catch (storageError) {
|
|
594
|
+
console.error('❌ [STORAGE] Error saving platform connection:', storageError);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
// Store LLM connection status locally
|
|
598
|
+
if (isLLMPlatform(currentPlatform)) {
|
|
599
|
+
await AsyncStorage.setItem(`@onairos:llm_connected:${currentPlatform}`, JSON.stringify({
|
|
600
|
+
connected: true,
|
|
601
|
+
platform: currentPlatform,
|
|
602
|
+
connectedAt: new Date().toISOString()
|
|
603
|
+
}));
|
|
604
|
+
console.log(`✅ [LLM] ${currentPlatform} connection stored locally`);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
// Store LinkedIn connection status locally
|
|
608
|
+
if (currentPlatform.toLowerCase() === 'linkedin') {
|
|
609
|
+
await AsyncStorage.setItem(`@onairos:linkedin_connected`, JSON.stringify({
|
|
610
|
+
connected: true,
|
|
611
|
+
platform: 'linkedin',
|
|
612
|
+
connectedAt: new Date().toISOString()
|
|
613
|
+
}));
|
|
614
|
+
console.log(`✅ [LINKEDIN] Connection stored locally`);
|
|
615
|
+
}
|
|
616
|
+
} else {
|
|
617
|
+
setConnectionStatuses(prev => ({
|
|
618
|
+
...prev,
|
|
619
|
+
[currentPlatform]: 'error'
|
|
620
|
+
}));
|
|
621
|
+
triggerHaptic(HapticType.ERROR);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
setShowOAuthWebView(false);
|
|
625
|
+
setOauthUrl('');
|
|
626
|
+
setCurrentPlatform('');
|
|
627
|
+
};
|
|
628
|
+
|
|
629
|
+
// 🎯 Effect to apply pending connection AFTER WebView closes
|
|
630
|
+
// This ensures persona coloring happens after returning to platform screen
|
|
631
|
+
useEffect(() => {
|
|
632
|
+
if (pendingConnection && !showOAuthWebView) {
|
|
633
|
+
// Small delay to ensure screen is visible before persona colors
|
|
634
|
+
const timer = setTimeout(() => {
|
|
635
|
+
// Use functional update to avoid stale closure issues
|
|
636
|
+
setConnectedPlatforms(prev => {
|
|
637
|
+
const newConnected = new Set(prev);
|
|
638
|
+
newConnected.add(pendingConnection);
|
|
639
|
+
return newConnected;
|
|
640
|
+
});
|
|
641
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
642
|
+
console.log(`✅ [PERSONA] Applied pending connection: ${pendingConnection}`);
|
|
643
|
+
setPendingConnection(null);
|
|
644
|
+
}, 300); // 300ms delay for user to see the screen before coloring
|
|
645
|
+
|
|
646
|
+
return () => clearTimeout(timer);
|
|
647
|
+
}
|
|
648
|
+
}, [pendingConnection, showOAuthWebView]);
|
|
649
|
+
const handleOAuthClose = () => {
|
|
650
|
+
setShowOAuthWebView(false);
|
|
651
|
+
setOauthUrl('');
|
|
652
|
+
if (currentPlatform) {
|
|
653
|
+
setConnectionStatuses(prev => ({
|
|
654
|
+
...prev,
|
|
655
|
+
[currentPlatform]: 'disconnected'
|
|
656
|
+
}));
|
|
657
|
+
}
|
|
658
|
+
setCurrentPlatform('');
|
|
659
|
+
};
|
|
660
|
+
const handlePinBack = () => {
|
|
661
|
+
setShowPinScreen(false);
|
|
662
|
+
};
|
|
663
|
+
const handleReviewerBypass = () => {
|
|
664
|
+
if (onReviewerBypass) {
|
|
665
|
+
onReviewerBypass();
|
|
666
|
+
}
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
// Long press handlers for reviewer bypass
|
|
670
|
+
const handlePressIn = () => {
|
|
671
|
+
Animated.timing(holdProgressAnim, {
|
|
672
|
+
toValue: 1,
|
|
673
|
+
duration: 4000,
|
|
674
|
+
useNativeDriver: false
|
|
675
|
+
}).start();
|
|
676
|
+
const timer = setTimeout(() => {
|
|
677
|
+
triggerHaptic(HapticType.SUCCESS);
|
|
678
|
+
Vibration.vibrate([0, 100, 50, 100]);
|
|
679
|
+
handleReviewerBypass();
|
|
680
|
+
}, 4000);
|
|
681
|
+
setLongPressTimer(timer);
|
|
682
|
+
};
|
|
683
|
+
const handlePressOut = () => {
|
|
684
|
+
if (longPressTimer) {
|
|
685
|
+
clearTimeout(longPressTimer);
|
|
686
|
+
setLongPressTimer(null);
|
|
687
|
+
}
|
|
688
|
+
holdProgressAnim.setValue(0);
|
|
689
|
+
Animated.timing(holdProgressAnim, {
|
|
690
|
+
toValue: 0,
|
|
691
|
+
duration: 200,
|
|
692
|
+
useNativeDriver: false
|
|
693
|
+
}).start();
|
|
694
|
+
};
|
|
695
|
+
useEffect(() => {
|
|
696
|
+
return () => {
|
|
697
|
+
if (longPressTimer) {
|
|
698
|
+
clearTimeout(longPressTimer);
|
|
699
|
+
}
|
|
700
|
+
};
|
|
701
|
+
}, [longPressTimer]);
|
|
702
|
+
|
|
703
|
+
// Debug: Track WebView state changes
|
|
704
|
+
useEffect(() => {
|
|
705
|
+
if (showOAuthWebView || oauthUrl) {
|
|
706
|
+
console.log(`📊 [STATE] WebView state changed - showOAuthWebView: ${showOAuthWebView}, oauthUrl: ${oauthUrl ? 'SET (' + oauthUrl.substring(0, 40) + '...)' : 'NULL'}`);
|
|
707
|
+
}
|
|
708
|
+
}, [showOAuthWebView, oauthUrl]);
|
|
709
|
+
const personaLevel = Math.min(5, Math.max(1, connectedPlatforms.size + 1));
|
|
710
|
+
const PLATFORM_ICONS_BOTTOM = 120;
|
|
711
|
+
const PAGE_DOTS_BOTTOM = 70;
|
|
712
|
+
|
|
713
|
+
// Show PIN screen
|
|
714
|
+
if (showPinScreen) {
|
|
715
|
+
return /*#__PURE__*/React.createElement(PinCreationScreen, {
|
|
716
|
+
visible: showPinScreen,
|
|
717
|
+
onComplete: handlePinComplete,
|
|
718
|
+
onBack: handlePinBack
|
|
719
|
+
});
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// Show loading screen
|
|
723
|
+
if (showLoadingScreen) {
|
|
724
|
+
return /*#__PURE__*/React.createElement(PersonaLoadingScreen, {
|
|
725
|
+
visible: showLoadingScreen,
|
|
726
|
+
onComplete: handleLoadingComplete
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
// Show OAuth WebView (also used for LLM platforms)
|
|
731
|
+
if (showOAuthWebView && oauthUrl) {
|
|
732
|
+
console.log(`✅ [WEBVIEW] Rendering OAuthWebView for ${currentPlatform} with URL: ${oauthUrl.substring(0, 60)}...`);
|
|
733
|
+
return /*#__PURE__*/React.createElement(OAuthWebView, {
|
|
734
|
+
url: oauthUrl,
|
|
735
|
+
platform: currentPlatform,
|
|
736
|
+
onClose: handleOAuthClose,
|
|
737
|
+
onSuccess: handleOAuthSuccess,
|
|
738
|
+
onComplete: handleOAuthClose,
|
|
739
|
+
username: username
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
// Handle connect more - go back to platform selection
|
|
744
|
+
const handleConnectMore = () => {
|
|
745
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
746
|
+
// Snapshot current platforms so we can detect new ones on return
|
|
747
|
+
platformsAtLastConsent.current = new Set(connectedPlatforms);
|
|
748
|
+
setShowConsentScreen(false);
|
|
749
|
+
};
|
|
750
|
+
|
|
751
|
+
// Show consent screen
|
|
752
|
+
if (showConsentScreen) {
|
|
753
|
+
return /*#__PURE__*/React.createElement(PersonalizationConsentScreen, {
|
|
754
|
+
visible: showConsentScreen,
|
|
755
|
+
onAccept: handleConsentAccept,
|
|
756
|
+
onDecline: handleConsentDecline,
|
|
757
|
+
connectedPlatforms: Array.from(connectedPlatforms),
|
|
758
|
+
onConnectMore: handleConnectMore,
|
|
759
|
+
loading: isConsentLoading
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
763
|
+
style: styles.container
|
|
764
|
+
}, /*#__PURE__*/React.createElement(ScrollView, {
|
|
765
|
+
style: styles.scrollContent,
|
|
766
|
+
showsVerticalScrollIndicator: false,
|
|
767
|
+
bounces: true
|
|
768
|
+
}, onLogout && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
769
|
+
style: styles.backButton,
|
|
770
|
+
onPress: onLogout,
|
|
771
|
+
activeOpacity: 0.7
|
|
772
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
773
|
+
style: styles.backButtonText
|
|
774
|
+
}, "\u2039")), /*#__PURE__*/React.createElement(View, {
|
|
775
|
+
style: styles.headingContainer
|
|
776
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
777
|
+
style: styles.title
|
|
778
|
+
}, "Build your persona"), /*#__PURE__*/React.createElement(Text, {
|
|
779
|
+
style: styles.subtitle
|
|
780
|
+
}, "Connect platforms to build your private persona")), /*#__PURE__*/React.createElement(View, {
|
|
781
|
+
style: styles.personaContainer
|
|
782
|
+
}, /*#__PURE__*/React.createElement(PersonaImage, {
|
|
783
|
+
level: personaLevel,
|
|
784
|
+
style: styles.largePersona
|
|
785
|
+
}), /*#__PURE__*/React.createElement(ScrollView, {
|
|
786
|
+
ref: scrollViewRef,
|
|
787
|
+
horizontal: true,
|
|
788
|
+
style: [styles.platformIconsOverlay, {
|
|
789
|
+
bottom: PLATFORM_ICONS_BOTTOM
|
|
790
|
+
}],
|
|
791
|
+
contentContainerStyle: [styles.platformIconsScrollContent, filteredPlatforms.length <= 4 && styles.platformIconsCentered],
|
|
792
|
+
showsHorizontalScrollIndicator: false,
|
|
793
|
+
onScroll: handleScroll,
|
|
794
|
+
scrollEventThrottle: 16,
|
|
795
|
+
decelerationRate: "normal",
|
|
796
|
+
scrollEnabled: filteredPlatforms.length > 4
|
|
797
|
+
}, filteredPlatforms.map(platform => {
|
|
798
|
+
const isSelected = selectedPlatformId === platform.id;
|
|
799
|
+
const isConnected = connectedPlatforms.has(platform.id);
|
|
800
|
+
const isConnecting = connectionStatuses[platform.id] === 'connecting';
|
|
801
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
802
|
+
key: platform.id,
|
|
803
|
+
style: [styles.platformIconButton, isSelected && styles.platformIconButtonSelected],
|
|
804
|
+
onPress: () => {
|
|
805
|
+
triggerHaptic(HapticType.BUTTON_PRESS);
|
|
806
|
+
setSelectedPlatformId(platform.id);
|
|
807
|
+
},
|
|
808
|
+
activeOpacity: 0.7
|
|
809
|
+
}, /*#__PURE__*/React.createElement(Image, {
|
|
810
|
+
source: platform.icon,
|
|
811
|
+
style: [styles.platformIcon, platform.id === 'youtube' && styles.youtubeIcon, platform.id === 'pinterest' && styles.pinterestIcon, platform.id === 'gmail' && styles.gmailIcon, platform.id === 'chatgpt' && styles.chatgptIcon, platform.id === 'claude' && styles.claudeIcon, platform.id === 'grok' && styles.grokIcon],
|
|
812
|
+
resizeMode: "contain"
|
|
813
|
+
}), isConnecting && /*#__PURE__*/React.createElement(View, {
|
|
814
|
+
style: styles.connectingDot
|
|
815
|
+
}), isConnected && /*#__PURE__*/React.createElement(View, {
|
|
816
|
+
style: styles.connectedDot
|
|
817
|
+
}));
|
|
818
|
+
})), filteredPlatforms.length > 4 && /*#__PURE__*/React.createElement(View, {
|
|
819
|
+
style: [styles.pageIndicatorContainer, {
|
|
820
|
+
bottom: PAGE_DOTS_BOTTOM
|
|
821
|
+
}]
|
|
822
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
823
|
+
style: styles.scrollBarTrack
|
|
824
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
825
|
+
style: [styles.scrollBarThumb, {
|
|
826
|
+
left: currentPage * 56
|
|
827
|
+
}]
|
|
828
|
+
}))), showScrollIndicator && filteredPlatforms.length > 4 && /*#__PURE__*/React.createElement(Animated.View, {
|
|
829
|
+
style: [styles.scrollIndicator, {
|
|
830
|
+
transform: [{
|
|
831
|
+
translateX: scrollIndicatorAnim.interpolate({
|
|
832
|
+
inputRange: [0, 1],
|
|
833
|
+
outputRange: [0, 8]
|
|
834
|
+
})
|
|
835
|
+
}],
|
|
836
|
+
opacity: scrollIndicatorAnim.interpolate({
|
|
837
|
+
inputRange: [0, 1],
|
|
838
|
+
outputRange: [0.5, 1]
|
|
839
|
+
})
|
|
840
|
+
}]
|
|
841
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
842
|
+
style: styles.scrollIndicatorText
|
|
843
|
+
}, "\u203A"))), /*#__PURE__*/React.createElement(View, {
|
|
844
|
+
style: styles.cardContainer
|
|
845
|
+
}, selectedPlatformId && (() => {
|
|
846
|
+
const selectedPlatform = filteredPlatforms.find(p => p.id === selectedPlatformId);
|
|
847
|
+
if (!selectedPlatform) return null;
|
|
848
|
+
const isConnected = connectedPlatforms.has(selectedPlatformId);
|
|
849
|
+
const isConnectingPlatform = connectionStatuses[selectedPlatformId] === 'connecting';
|
|
850
|
+
const isRecommended = recommendedPlatforms === null || recommendedPlatforms === void 0 ? void 0 : recommendedPlatforms.includes(selectedPlatformId);
|
|
851
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
852
|
+
style: styles.platformCard
|
|
853
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
854
|
+
style: styles.cardHeader
|
|
855
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
856
|
+
style: styles.platformCardTitle
|
|
857
|
+
}, selectedPlatform.name), isRecommended && /*#__PURE__*/React.createElement(View, {
|
|
858
|
+
style: styles.recommendedBadge
|
|
859
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
860
|
+
style: styles.recommendedBadgeText
|
|
861
|
+
}, "Highly Recommended")), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
862
|
+
activeOpacity: 0.8,
|
|
863
|
+
onPress: () => !isConnectingPlatform && handlePlatformToggle(selectedPlatformId, !isConnected),
|
|
864
|
+
disabled: isConnectingPlatform,
|
|
865
|
+
style: [styles.customToggleTrack, {
|
|
866
|
+
backgroundColor: isConnected ? '#10B981' : '#9CA3AF'
|
|
867
|
+
}]
|
|
868
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
869
|
+
style: [styles.customToggleThumb, {
|
|
870
|
+
transform: [{
|
|
871
|
+
translateX: isConnected ? 20 : 0
|
|
872
|
+
}]
|
|
873
|
+
}]
|
|
874
|
+
}))), /*#__PURE__*/React.createElement(View, {
|
|
875
|
+
style: styles.descriptionContainer
|
|
876
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
877
|
+
style: styles.platformCardDescription
|
|
878
|
+
}, selectedPlatform.description)));
|
|
879
|
+
})()), /*#__PURE__*/React.createElement(View, {
|
|
880
|
+
style: styles.refreshFrequencySection
|
|
881
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
882
|
+
style: styles.refreshFrequencyTitle
|
|
883
|
+
}, "Model Refresh Frequency"), /*#__PURE__*/React.createElement(Text, {
|
|
884
|
+
style: styles.refreshFrequencyDescription
|
|
885
|
+
}, "How often should your model be refreshed from platforms?"), /*#__PURE__*/React.createElement(View, {
|
|
886
|
+
style: styles.refreshSegmentedControl
|
|
887
|
+
}, MODEL_REFRESH_OPTIONS.map(option => /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
888
|
+
key: option.value,
|
|
889
|
+
style: [styles.refreshSegment, refreshFrequency === option.value && styles.refreshSegmentSelected],
|
|
890
|
+
onPress: () => handleRefreshFrequencyChange(option.value),
|
|
891
|
+
activeOpacity: 0.7
|
|
892
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
893
|
+
style: [styles.refreshSegmentText, refreshFrequency === option.value && styles.refreshSegmentTextSelected]
|
|
894
|
+
}, option.label)))), /*#__PURE__*/React.createElement(Text, {
|
|
895
|
+
style: styles.refreshFrequencyHint
|
|
896
|
+
}, ((_MODEL_REFRESH_OPTION = MODEL_REFRESH_OPTIONS.find(o => o.value === refreshFrequency)) === null || _MODEL_REFRESH_OPTION === void 0 ? void 0 : _MODEL_REFRESH_OPTION.description) || '')), /*#__PURE__*/React.createElement(View, {
|
|
897
|
+
style: styles.bottomButtonContainer
|
|
898
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
899
|
+
style: styles.buttonWrapper
|
|
900
|
+
}, /*#__PURE__*/React.createElement(PrimaryButton, {
|
|
901
|
+
label: "Continue",
|
|
902
|
+
onPress: handleUpdate,
|
|
903
|
+
disabled: loading || connectedPlatforms.size === 0 || isConnecting || isContinueLoading,
|
|
904
|
+
loading: loading || isConnecting || isContinueLoading
|
|
905
|
+
}), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
906
|
+
style: styles.buttonOverlay,
|
|
907
|
+
activeOpacity: 1,
|
|
908
|
+
onPressIn: handlePressIn,
|
|
909
|
+
onPressOut: handlePressOut,
|
|
910
|
+
onPress: () => {
|
|
911
|
+
if (connectedPlatforms.size > 0 && !loading && !isConnecting && !isContinueLoading) {
|
|
912
|
+
handleUpdate();
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
916
|
+
style: [styles.holdProgressBar, {
|
|
917
|
+
width: holdProgressAnim.interpolate({
|
|
918
|
+
inputRange: [0, 1],
|
|
919
|
+
outputRange: ['0%', '100%']
|
|
920
|
+
})
|
|
921
|
+
}]
|
|
922
|
+
}))), onSkip && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
923
|
+
style: styles.skipButton,
|
|
924
|
+
onPress: handleSkip
|
|
925
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
926
|
+
style: styles.skipButtonText
|
|
927
|
+
}, "Skip")))));
|
|
928
|
+
};
|
|
929
|
+
const styles = StyleSheet.create({
|
|
930
|
+
container: {
|
|
931
|
+
flex: 1,
|
|
932
|
+
backgroundColor: COLORS.surface,
|
|
933
|
+
paddingHorizontal: 24
|
|
934
|
+
},
|
|
935
|
+
backButton: {
|
|
936
|
+
width: 32,
|
|
937
|
+
height: 32,
|
|
938
|
+
borderRadius: 16,
|
|
939
|
+
backgroundColor: '#F0F0F3',
|
|
940
|
+
alignItems: 'center',
|
|
941
|
+
justifyContent: 'center',
|
|
942
|
+
marginBottom: 2
|
|
943
|
+
},
|
|
944
|
+
backButtonText: {
|
|
945
|
+
fontSize: 22,
|
|
946
|
+
fontWeight: '600',
|
|
947
|
+
color: '#1C1C1E',
|
|
948
|
+
marginTop: -2
|
|
949
|
+
},
|
|
950
|
+
scrollContent: {
|
|
951
|
+
flex: 1
|
|
952
|
+
},
|
|
953
|
+
headingContainer: {
|
|
954
|
+
width: '100%',
|
|
955
|
+
marginBottom: SPACING.sm,
|
|
956
|
+
paddingTop: 0,
|
|
957
|
+
marginTop: 0
|
|
958
|
+
},
|
|
959
|
+
title: {
|
|
960
|
+
fontFamily: 'IBM Plex Sans',
|
|
961
|
+
fontWeight: '700',
|
|
962
|
+
fontSize: 24,
|
|
963
|
+
lineHeight: 32,
|
|
964
|
+
color: COLORS.grey800,
|
|
965
|
+
textAlign: 'left',
|
|
966
|
+
marginBottom: 4
|
|
967
|
+
},
|
|
968
|
+
subtitle: {
|
|
969
|
+
fontFamily: 'Inter',
|
|
970
|
+
fontWeight: '400',
|
|
971
|
+
fontSize: 16,
|
|
972
|
+
lineHeight: 24,
|
|
973
|
+
color: COLORS.grey600,
|
|
974
|
+
textAlign: 'left'
|
|
975
|
+
},
|
|
976
|
+
personaContainer: {
|
|
977
|
+
alignItems: 'center',
|
|
978
|
+
position: 'relative',
|
|
979
|
+
marginTop: -20,
|
|
980
|
+
marginBottom: -120,
|
|
981
|
+
height: 450
|
|
982
|
+
},
|
|
983
|
+
largePersona: {
|
|
984
|
+
width: 500,
|
|
985
|
+
height: 500
|
|
986
|
+
},
|
|
987
|
+
platformIconsOverlay: {
|
|
988
|
+
position: 'absolute',
|
|
989
|
+
width: '100%',
|
|
990
|
+
height: 70,
|
|
991
|
+
zIndex: 10
|
|
992
|
+
},
|
|
993
|
+
platformIconsScrollContent: {
|
|
994
|
+
flexDirection: 'row',
|
|
995
|
+
alignItems: 'center',
|
|
996
|
+
paddingHorizontal: 20,
|
|
997
|
+
gap: 24
|
|
998
|
+
},
|
|
999
|
+
platformIconsCentered: {
|
|
1000
|
+
flexGrow: 1,
|
|
1001
|
+
justifyContent: 'center'
|
|
1002
|
+
},
|
|
1003
|
+
platformIconButton: {
|
|
1004
|
+
width: 52,
|
|
1005
|
+
height: 52,
|
|
1006
|
+
borderRadius: 26,
|
|
1007
|
+
backgroundColor: '#FFFFFF',
|
|
1008
|
+
justifyContent: 'center',
|
|
1009
|
+
alignItems: 'center',
|
|
1010
|
+
borderWidth: 3,
|
|
1011
|
+
borderColor: 'transparent',
|
|
1012
|
+
shadowColor: '#000',
|
|
1013
|
+
shadowOffset: {
|
|
1014
|
+
width: 0,
|
|
1015
|
+
height: 2
|
|
1016
|
+
},
|
|
1017
|
+
shadowOpacity: 0.15,
|
|
1018
|
+
shadowRadius: 4,
|
|
1019
|
+
elevation: 4
|
|
1020
|
+
},
|
|
1021
|
+
platformIconButtonSelected: {
|
|
1022
|
+
borderColor: '#3B82F6',
|
|
1023
|
+
backgroundColor: '#EFF6FF'
|
|
1024
|
+
},
|
|
1025
|
+
platformIcon: {
|
|
1026
|
+
width: 30,
|
|
1027
|
+
height: 30
|
|
1028
|
+
},
|
|
1029
|
+
youtubeIcon: {
|
|
1030
|
+
width: 42,
|
|
1031
|
+
height: 42
|
|
1032
|
+
},
|
|
1033
|
+
pinterestIcon: {
|
|
1034
|
+
width: 36,
|
|
1035
|
+
height: 36
|
|
1036
|
+
},
|
|
1037
|
+
gmailIcon: {
|
|
1038
|
+
width: 36,
|
|
1039
|
+
height: 36
|
|
1040
|
+
},
|
|
1041
|
+
chatgptIcon: {
|
|
1042
|
+
width: 30,
|
|
1043
|
+
height: 30
|
|
1044
|
+
},
|
|
1045
|
+
claudeIcon: {
|
|
1046
|
+
width: 32,
|
|
1047
|
+
height: 32
|
|
1048
|
+
},
|
|
1049
|
+
grokIcon: {
|
|
1050
|
+
width: 36,
|
|
1051
|
+
height: 36
|
|
1052
|
+
},
|
|
1053
|
+
connectingDot: {
|
|
1054
|
+
position: 'absolute',
|
|
1055
|
+
top: 2,
|
|
1056
|
+
right: 2,
|
|
1057
|
+
width: 12,
|
|
1058
|
+
height: 12,
|
|
1059
|
+
borderRadius: 6,
|
|
1060
|
+
backgroundColor: '#FFA500',
|
|
1061
|
+
borderWidth: 2,
|
|
1062
|
+
borderColor: COLORS.surface
|
|
1063
|
+
},
|
|
1064
|
+
connectedDot: {
|
|
1065
|
+
position: 'absolute',
|
|
1066
|
+
top: 2,
|
|
1067
|
+
right: 2,
|
|
1068
|
+
width: 12,
|
|
1069
|
+
height: 12,
|
|
1070
|
+
borderRadius: 6,
|
|
1071
|
+
backgroundColor: '#10B981',
|
|
1072
|
+
borderWidth: 2,
|
|
1073
|
+
borderColor: COLORS.surface
|
|
1074
|
+
},
|
|
1075
|
+
cardContainer: {
|
|
1076
|
+
alignItems: 'center',
|
|
1077
|
+
marginTop: 16,
|
|
1078
|
+
marginBottom: SPACING.md
|
|
1079
|
+
},
|
|
1080
|
+
platformCard: {
|
|
1081
|
+
width: 327,
|
|
1082
|
+
backgroundColor: '#FFFFFF',
|
|
1083
|
+
borderRadius: 16,
|
|
1084
|
+
padding: 8,
|
|
1085
|
+
shadowColor: '#000',
|
|
1086
|
+
shadowOffset: {
|
|
1087
|
+
width: 0,
|
|
1088
|
+
height: 2
|
|
1089
|
+
},
|
|
1090
|
+
shadowOpacity: 0.1,
|
|
1091
|
+
shadowRadius: 8,
|
|
1092
|
+
elevation: 3,
|
|
1093
|
+
gap: 10
|
|
1094
|
+
},
|
|
1095
|
+
cardHeader: {
|
|
1096
|
+
flexDirection: 'row',
|
|
1097
|
+
alignItems: 'center',
|
|
1098
|
+
justifyContent: 'space-between'
|
|
1099
|
+
},
|
|
1100
|
+
platformCardTitle: {
|
|
1101
|
+
fontSize: 16,
|
|
1102
|
+
fontWeight: '600',
|
|
1103
|
+
color: COLORS.grey800,
|
|
1104
|
+
fontFamily: 'IBM Plex Sans'
|
|
1105
|
+
},
|
|
1106
|
+
recommendedBadge: {
|
|
1107
|
+
backgroundColor: '#EFF6FF',
|
|
1108
|
+
paddingHorizontal: 12,
|
|
1109
|
+
paddingVertical: 6,
|
|
1110
|
+
borderRadius: 16,
|
|
1111
|
+
marginLeft: 8
|
|
1112
|
+
},
|
|
1113
|
+
recommendedBadgeText: {
|
|
1114
|
+
fontSize: 12,
|
|
1115
|
+
fontWeight: '600',
|
|
1116
|
+
color: '#2563EB',
|
|
1117
|
+
fontFamily: 'IBM Plex Sans'
|
|
1118
|
+
},
|
|
1119
|
+
customToggleTrack: {
|
|
1120
|
+
width: 50,
|
|
1121
|
+
height: 30,
|
|
1122
|
+
borderRadius: 15,
|
|
1123
|
+
padding: 2,
|
|
1124
|
+
marginLeft: 'auto',
|
|
1125
|
+
marginRight: 8,
|
|
1126
|
+
justifyContent: 'center'
|
|
1127
|
+
},
|
|
1128
|
+
customToggleThumb: {
|
|
1129
|
+
width: 26,
|
|
1130
|
+
height: 26,
|
|
1131
|
+
borderRadius: 13,
|
|
1132
|
+
backgroundColor: '#FFFFFF',
|
|
1133
|
+
shadowColor: '#000',
|
|
1134
|
+
shadowOffset: {
|
|
1135
|
+
width: 0,
|
|
1136
|
+
height: 2
|
|
1137
|
+
},
|
|
1138
|
+
shadowOpacity: 0.2,
|
|
1139
|
+
shadowRadius: 2,
|
|
1140
|
+
elevation: 2
|
|
1141
|
+
},
|
|
1142
|
+
descriptionContainer: {
|
|
1143
|
+
backgroundColor: '#F9FAFB',
|
|
1144
|
+
borderRadius: 8,
|
|
1145
|
+
padding: 8
|
|
1146
|
+
},
|
|
1147
|
+
platformCardDescription: {
|
|
1148
|
+
fontSize: 13,
|
|
1149
|
+
lineHeight: 18,
|
|
1150
|
+
color: COLORS.grey600,
|
|
1151
|
+
fontFamily: 'Inter'
|
|
1152
|
+
},
|
|
1153
|
+
refreshFrequencySection: {
|
|
1154
|
+
paddingHorizontal: 16,
|
|
1155
|
+
paddingVertical: 20,
|
|
1156
|
+
marginTop: 12,
|
|
1157
|
+
backgroundColor: '#F5F5F7',
|
|
1158
|
+
borderRadius: 16,
|
|
1159
|
+
marginHorizontal: SPACING.md,
|
|
1160
|
+
marginBottom: 8,
|
|
1161
|
+
borderWidth: 1,
|
|
1162
|
+
borderColor: '#E0E0E4'
|
|
1163
|
+
},
|
|
1164
|
+
refreshFrequencyTitle: {
|
|
1165
|
+
fontSize: 17,
|
|
1166
|
+
fontWeight: '700',
|
|
1167
|
+
color: '#1C1C1E',
|
|
1168
|
+
fontFamily: 'IBM Plex Sans',
|
|
1169
|
+
marginBottom: 4
|
|
1170
|
+
},
|
|
1171
|
+
refreshFrequencyDescription: {
|
|
1172
|
+
fontSize: 14,
|
|
1173
|
+
color: '#8E8E93',
|
|
1174
|
+
fontFamily: 'Inter',
|
|
1175
|
+
fontWeight: '400',
|
|
1176
|
+
marginBottom: 16
|
|
1177
|
+
},
|
|
1178
|
+
refreshSegmentedControl: {
|
|
1179
|
+
flexDirection: 'row',
|
|
1180
|
+
backgroundColor: '#E8E8ED',
|
|
1181
|
+
borderRadius: 12,
|
|
1182
|
+
padding: 3
|
|
1183
|
+
},
|
|
1184
|
+
refreshSegment: {
|
|
1185
|
+
flex: 1,
|
|
1186
|
+
paddingVertical: 10,
|
|
1187
|
+
alignItems: 'center',
|
|
1188
|
+
justifyContent: 'center',
|
|
1189
|
+
borderRadius: 10
|
|
1190
|
+
},
|
|
1191
|
+
refreshSegmentSelected: {
|
|
1192
|
+
backgroundColor: '#1C1C1E',
|
|
1193
|
+
shadowColor: '#000',
|
|
1194
|
+
shadowOffset: {
|
|
1195
|
+
width: 0,
|
|
1196
|
+
height: 2
|
|
1197
|
+
},
|
|
1198
|
+
shadowOpacity: 0.15,
|
|
1199
|
+
shadowRadius: 4,
|
|
1200
|
+
elevation: 3
|
|
1201
|
+
},
|
|
1202
|
+
refreshSegmentText: {
|
|
1203
|
+
fontSize: 15,
|
|
1204
|
+
fontFamily: 'Inter',
|
|
1205
|
+
fontWeight: '500',
|
|
1206
|
+
color: '#8E8E93'
|
|
1207
|
+
},
|
|
1208
|
+
refreshSegmentTextSelected: {
|
|
1209
|
+
fontWeight: '700',
|
|
1210
|
+
color: '#FFFFFF'
|
|
1211
|
+
},
|
|
1212
|
+
refreshFrequencyHint: {
|
|
1213
|
+
fontSize: 13,
|
|
1214
|
+
fontFamily: 'Inter',
|
|
1215
|
+
fontWeight: '400',
|
|
1216
|
+
color: '#8E8E93',
|
|
1217
|
+
textAlign: 'center',
|
|
1218
|
+
marginTop: 12
|
|
1219
|
+
},
|
|
1220
|
+
privacyLinkContainer: {
|
|
1221
|
+
marginTop: 16,
|
|
1222
|
+
paddingTop: 16,
|
|
1223
|
+
borderTopWidth: 1,
|
|
1224
|
+
borderTopColor: '#E5E7EB',
|
|
1225
|
+
alignItems: 'center'
|
|
1226
|
+
},
|
|
1227
|
+
privacyLinkText: {
|
|
1228
|
+
fontSize: 14,
|
|
1229
|
+
color: '#8B5CF6',
|
|
1230
|
+
fontFamily: 'Inter',
|
|
1231
|
+
fontWeight: '500'
|
|
1232
|
+
},
|
|
1233
|
+
bottomButtonContainer: {
|
|
1234
|
+
paddingTop: 8,
|
|
1235
|
+
paddingBottom: 0,
|
|
1236
|
+
paddingHorizontal: SPACING.md
|
|
1237
|
+
},
|
|
1238
|
+
buttonWrapper: {
|
|
1239
|
+
position: 'relative'
|
|
1240
|
+
},
|
|
1241
|
+
buttonOverlay: {
|
|
1242
|
+
position: 'absolute',
|
|
1243
|
+
top: 0,
|
|
1244
|
+
left: 0,
|
|
1245
|
+
right: 0,
|
|
1246
|
+
bottom: 0,
|
|
1247
|
+
borderRadius: 12,
|
|
1248
|
+
overflow: 'hidden'
|
|
1249
|
+
},
|
|
1250
|
+
holdProgressBar: {
|
|
1251
|
+
position: 'absolute',
|
|
1252
|
+
bottom: 0,
|
|
1253
|
+
left: 0,
|
|
1254
|
+
height: 4,
|
|
1255
|
+
backgroundColor: '#10B981',
|
|
1256
|
+
borderRadius: 2
|
|
1257
|
+
},
|
|
1258
|
+
skipButton: {
|
|
1259
|
+
alignItems: 'center',
|
|
1260
|
+
paddingVertical: 10,
|
|
1261
|
+
marginBottom: 34
|
|
1262
|
+
},
|
|
1263
|
+
skipButtonText: {
|
|
1264
|
+
fontSize: 16,
|
|
1265
|
+
fontFamily: 'Inter',
|
|
1266
|
+
fontWeight: '500',
|
|
1267
|
+
color: COLORS.grey600
|
|
1268
|
+
},
|
|
1269
|
+
pageIndicatorContainer: {
|
|
1270
|
+
position: 'absolute',
|
|
1271
|
+
alignSelf: 'center',
|
|
1272
|
+
zIndex: 11
|
|
1273
|
+
},
|
|
1274
|
+
scrollBarTrack: {
|
|
1275
|
+
width: 80,
|
|
1276
|
+
height: 4,
|
|
1277
|
+
backgroundColor: COLORS.grey300,
|
|
1278
|
+
borderRadius: 2,
|
|
1279
|
+
position: 'relative',
|
|
1280
|
+
overflow: 'hidden'
|
|
1281
|
+
},
|
|
1282
|
+
scrollBarThumb: {
|
|
1283
|
+
position: 'absolute',
|
|
1284
|
+
width: 24,
|
|
1285
|
+
height: 4,
|
|
1286
|
+
backgroundColor: COLORS.grey600,
|
|
1287
|
+
borderRadius: 2,
|
|
1288
|
+
left: 0
|
|
1289
|
+
},
|
|
1290
|
+
scrollIndicator: {
|
|
1291
|
+
position: 'absolute',
|
|
1292
|
+
bottom: 60,
|
|
1293
|
+
right: 30,
|
|
1294
|
+
zIndex: 12
|
|
1295
|
+
},
|
|
1296
|
+
scrollIndicatorText: {
|
|
1297
|
+
fontSize: 32,
|
|
1298
|
+
color: COLORS.grey500,
|
|
1299
|
+
fontWeight: 'bold'
|
|
1300
|
+
}
|
|
1301
|
+
});
|
|
1302
|
+
export default PlatformConnectorsStep;
|
|
1303
|
+
//# sourceMappingURL=PlatformConnectorsStep.js.map
|