@onairos/react-native 3.7.2 → 3.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +120 -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 +113 -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,14 +1,664 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
Object['defineProperty'](exports,_0x2897(0x0),{'value':!![]}),exports[_0x2897(0x1)]=void 0x0;var _react=_interopRequireWildcard(__ONAIROS_REQ_FUNC__(0x0)),_reactNative=__ONAIROS_REQ_FUNC__(0x1),_theme=__ONAIROS_REQ_FUNC__(0x2),_haptics=__ONAIROS_REQ_FUNC__(0x3),_asyncStorage=_interopRequireDefault(__ONAIROS_REQ_FUNC__(0x4)),_api=__ONAIROS_REQ_FUNC__(0x5);function _interopRequireDefault(_0x2def64){return _0x2def64&&_0x2def64['__esModule']?_0x2def64:{'default':_0x2def64};}function _interopRequireWildcard(_0x586a4a,_0x1f6162){const _0x3cc284={'GWrVQ':_0x2897(0x2),'qOeZd':_0x2897(0x3),'SHAmc':_0x2897(0x4),'KnxuE':_0x2897(0x5),'pYNqu':'Export\x20your\x20Gemini\x20(Google\x20AI)\x20conversations\x20and\x20paste\x20the\x20data\x20below.','FebEM':'Paste\x20your\x20Gemini\x20conversation\x20JSON\x20here...','VKXkm':_0x2897(0x6),'uQecb':'Connect\x20Grok','OiIMR':'Export\x20your\x20Grok\x20conversations\x20from\x20X/Twitter\x20and\x20paste\x20the\x20data\x20below.','KEbfO':'Paste\x20your\x20Grok\x20conversation\x20JSON\x20here...','QZWzd':_0x2897(0x7),'Spnai':function(_0x1a53b0,_0x44de84){return _0x1a53b0===_0x44de84;},'xNMVu':_0x2897(0x8),'QrCnw':function(_0x3e4c59,_0x3bade6){return _0x3e4c59&&_0x3bade6;},'BfAIO':function(_0x527416,_0x1afe45){return _0x527416!=_0x1afe45;},'aNSWU':function(_0x2ef91d,_0x8f0f07){return _0x2ef91d!=_0x8f0f07;},'bBhkL':'function','YOqVM':_0x2897(0x9),'XOLUR':'caywL','ZHUwP':function(_0x22c951,_0x2afe76){return _0x22c951!==_0x2afe76;},'lSYAV':_0x2897(0x1),'EPTwg':function(_0x3158e7,_0x4ae2a8,_0x5b06e6,_0xf4602c){return _0x3158e7(_0x4ae2a8,_0x5b06e6,_0xf4602c);},'JVYPb':function(_0x40f312,_0x437637){return _0x40f312==_0x437637;}};if(_0x3cc284['JVYPb'](_0x2897(0xa),typeof WeakMap))var _0x2adb0b=new WeakMap(),_0x2c87db=new WeakMap();return(_interopRequireWildcard=function(_0x23333f,_0x41fa7b){const _0x2e4c2a={'WLsJq':_0x3cc284[_0x2897(0xb)],'whCKu':_0x2897(0xc),'LLyft':_0x2897(0xd),'zIyfU':_0x3cc284[_0x2897(0xe)],'RRUIr':_0x3cc284['SHAmc'],'YJZne':_0x3cc284['KnxuE'],'rORsb':_0x2897(0xf),'xTOnU':_0x3cc284[_0x2897(0x10)],'YUupH':_0x3cc284[_0x2897(0x11)],'JiHXu':_0x3cc284['VKXkm'],'sdKdq':_0x3cc284['uQecb'],'LbPaZ':_0x3cc284[_0x2897(0x12)],'ErtMe':_0x3cc284['KEbfO'],'VCDiD':_0x3cc284[_0x2897(0x13)]};if(_0x3cc284[_0x2897(0x14)](_0x3cc284['xNMVu'],_0x3cc284[_0x2897(0x15)])){if(_0x3cc284[_0x2897(0x16)](!_0x41fa7b,_0x23333f)&&_0x23333f[_0x2897(0x0)])return _0x23333f;var _0x25d7f4,_0x3a3d57,_0x493a86={'__proto__':null,'default':_0x23333f};if(null===_0x23333f||_0x3cc284['BfAIO']('object',typeof _0x23333f)&&_0x3cc284[_0x2897(0x17)](_0x3cc284[_0x2897(0x18)],typeof _0x23333f))return _0x493a86;if(_0x25d7f4=_0x41fa7b?_0x2c87db:_0x2adb0b){if(_0x3cc284[_0x2897(0x14)](_0x3cc284[_0x2897(0x19)],_0x3cc284[_0x2897(0x1a)]))switch(_0x1a7ab7){case _0x2e4c2a[_0x2897(0x1b)]:return{'title':_0x2e4c2a[_0x2897(0x1c)],'instructions':_0x2897(0x1d),'placeholder':_0x2e4c2a[_0x2897(0x1e)]};case _0x2897(0x1f):return{'title':_0x2897(0x20),'instructions':_0x2e4c2a[_0x2897(0x21)],'placeholder':_0x2e4c2a[_0x2897(0x22)]};case _0x2e4c2a[_0x2897(0x23)]:return{'title':_0x2e4c2a[_0x2897(0x24)],'instructions':_0x2e4c2a[_0x2897(0x25)],'placeholder':_0x2e4c2a[_0x2897(0x26)]};case _0x2e4c2a[_0x2897(0x27)]:return{'title':_0x2e4c2a[_0x2897(0x28)],'instructions':_0x2e4c2a[_0x2897(0x29)],'placeholder':_0x2e4c2a['ErtMe']};default:return{'title':_0x2897(0x2a)+_0x51c4f6,'instructions':_0x2e4c2a[_0x2897(0x2b)],'placeholder':_0x2897(0x2c)};}else{if(_0x25d7f4[_0x2897(0x2d)](_0x23333f))return _0x25d7f4[_0x2897(0x2e)](_0x23333f);_0x25d7f4[_0x2897(0x2f)](_0x23333f,_0x493a86);}}for(const _0x5de522 in _0x23333f)_0x3cc284[_0x2897(0x30)](_0x3cc284['lSYAV'],_0x5de522)&&{}['hasOwnProperty'][_0x2897(0x31)](_0x23333f,_0x5de522)&&((_0x3a3d57=(_0x25d7f4=Object['defineProperty'])&&Object[_0x2897(0x32)](_0x23333f,_0x5de522))&&(_0x3a3d57[_0x2897(0x2e)]||_0x3a3d57[_0x2897(0x2f)])?_0x3cc284[_0x2897(0x33)](_0x25d7f4,_0x493a86,_0x5de522,_0x3a3d57):_0x493a86[_0x5de522]=_0x23333f[_0x5de522]);return _0x493a86;}else _0x2f896d++;})(_0x586a4a,_0x1f6162);}function _0xeaaf(){const _0x5d07ab=['__esModule','default','chatgpt','Export\x20your\x20Claude\x20conversations\x20and\x20paste\x20the\x20JSON\x20data\x20below,\x20or\x20upload\x20your\x20exported\x20file.','Paste\x20your\x20Claude\x20conversation\x20JSON\x20here...','gemini','grok','Paste\x20your\x20conversation\x20data\x20below\x20or\x20upload\x20a\x20JSON\x20file.','nYXMO','XUKJs','function','GWrVQ','Connect\x20ChatGPT','Paste\x20your\x20ChatGPT\x20conversation\x20JSON\x20here...','qOeZd','Connect\x20Gemini','pYNqu','FebEM','OiIMR','QZWzd','Spnai','xNMVu','QrCnw','aNSWU','bBhkL','YOqVM','XOLUR','WLsJq','whCKu','Export\x20your\x20ChatGPT\x20conversations\x20from\x20Settings\x20→\x20Data\x20Controls\x20→\x20Export\x20data.\x20Then\x20upload\x20the\x20JSON\x20file\x20or\x20paste\x20your\x20conversation\x20data.','LLyft','claude','Connect\x20Claude','zIyfU','RRUIr','YJZne','rORsb','xTOnU','YUupH','JiHXu','sdKdq','LbPaZ','Connect\x20','VCDiD','Paste\x20your\x20conversation\x20JSON\x20here...','has','get','set','ZHUwP','call','getOwnPropertyDescriptor','EPTwg','log','Paste\x20your\x20Gemini\x20conversation\x20JSON\x20here...','Export\x20your\x20Grok\x20conversations\x20from\x20X/Twitter\x20and\x20paste\x20the\x20data\x20below.','Submit\x20error:','Failed\x20to\x20import\x20data.\x20Please\x20try\x20again.','assistant','hAJlF','UedZN','cviXr','Imported\x20Conversation','Error\x20parsing\x20conversation\x20data:','unknown','Failed\x20to\x20import\x20any\x20conversations.\x20Please\x20check\x20your\x20data\x20format.','paste','string','mspKn','ORoCq','user','lmbij','RgdKZ','dJosA','fUuNW','content://','Authentication\x20required.\x20Please\x20sign\x20in\x20first.','file','Please\x20paste\x20or\x20upload\x20conversation\x20data\x20first.','JKCZC','McLjm','XXTQn','XOcWK','No\x20valid\x20conversations\x20found\x20in\x20the\x20data.\x20Please\x20check\x20the\x20format.','onairos_jwt_token','1.0.0','conversation','Success!\x20🎉','CYdCW','slide','pageSheet','ios','height','(N/A)','top','none','Data\x20Preview','...','\x20characters','#FFFFFF','small','useState','eiRQN','TVOSb','YigPX','VUqZO','CfBXK','YVTDv','kLnmA','TxDQQ','aIaHZ','ukIJH','BjIIH','heTsT','qbSpl','qiPxW','jiNTU','TcsIV','object','LkgMC','wbwhm','elnnZ','human','KdMLx','aOeaE','KzLZx','pMevZ','parse','isArray','BMGyX','cjgwF','FDlIZ','bTsHW','lqNiM','length','RPWLr','ekryG','conv_','now','title','name','Conversation\x20','create_time','update_time','bcSyQ','TNORg','bJTRk','jbfQZ','kQaWG','rDeVx','AOScw','xfwgP','RzADj','VznJr','AYEdG','hasOwnProperty','OalwT','chat_messages','forEach','text','content','push','uuid','msg_','sender','beFoF','created_at','conversations','ZBLmC','mapping','IBBMY','vRvDs','LqHek','error','message','triggerHaptic','MKtXM','CEhNj','tJBCH','XxXzx','defineProperty','Invalid\x20JSON\x20format.\x20Please\x20check\x20your\x20data\x20and\x20try\x20again.','pAmZU','BooAm','XIVIk','UmllU','GyFeZ','fpRvx','values','fYTtY','parts','join','trim','kimgm','Bifxs','author','toISOString','sDwsn','messages','Cktha','vViZw','HapticType','BUTTON_PRESS','role','timestamp','elZAn','DYDWm','ixOTp','dspXO','tWQTS','manmQ','LlMYX','omHsS','OuNvF','vVtnS','PLnlm','KfFoS','lrciy','CUIaI','json','plainText','allFiles','Selected\x20file','startsWith','xrRmV','readFile','uri','utf8','SUCCESS','gyCZs','Failed\x20to\x20read\x20file.\x20Please\x20try\x20again\x20or\x20paste\x20data\x20manually.','VrBYJ','ERROR','kIjOQ','dIhTu','nSoVE','DXCeG','pKphN','QQNtL','CNkgm','sRYvD','getItem','QLSYi','AECuU','auth_token','mobile-','kFJsC','API_CONFIG','BASE_URL','/llm-data/store','Bearer\x20','stringify','conversationId','context','Platform','pDvHS','Version','mobile_app_import','Failed\x20to\x20store\x20conversation\x20','setItem','Alert','zHngl','\x20conversation','rHtgc','VFGwC','WpGTv','rDYQO','NJCGz','oHVnm','split','RkZPf','DwZVc','createElement','Modal','NDHsD','KeyboardAvoidingView','container','ZLHRZ','LyDgl','KpCXU','View','header','TouchableOpacity','Text','closeButtonText','kXkuI','headerTitle','closeButton','ScrollView','contentContainer','handled','instructionsContainer','instructionsText','tabContainer','tab','tabActive','gGXKf','tabText','HNCos','tabDisabled','rCKtW','GDNML','File\x20upload\x20requires\x20additional\x20dependencies.\x20Please\x20paste\x20data\x20instead.','tabTextActive','tabTextDisabled','XJkKu','DLvru','bfkXb','inputContainer','TextInput','textInput','COLORS','grey400','PcSeW','QQkUn','fileInputContainer','filePickButton','filePickIcon','filePickText','vUFFb','fileSelectedContainer','fileSelectedText','previewContainer','previewTitle','UCtcC','previewText','substring','rdYPC','aDaJN','CuHNP','footer','submitButton','submitButtonDisabled','ActivityIndicator','GVLeb','XRfDv','StyleSheet','surface','row','center','#E5E7EB','600','IBM\x20Plex\x20Sans','#3B82F6','Inter','#F3F4F6','500','grey500','grey800','grey300','Menlo','monospace','dashed','grey600','#F0FDF4','#FEF2F2','#DC2626','#10B981'];_0xeaaf=function(){return _0x5d07ab;};return _0xeaaf();}let DocumentPicker=null,RNFS=null;try{DocumentPicker=__ONAIROS_REQ_FUNC__(0x6);}catch(_0x4894b1){console[_0x2897(0x34)]('react-native-document-picker not available - file upload disabled');}try{RNFS=__ONAIROS_REQ_FUNC__(0x7);}catch(_0x3300a3){console[_0x2897(0x34)]('react-native-fs not available - file upload disabled');}const FILE_UPLOAD_AVAILABLE=DocumentPicker!==null&&RNFS!==null,LLMDataInputModal=({visible:_0x252b95,platform:_0xbda81f,platformName:_0x384102,onClose:_0x13e2ee,onSuccess:_0x487b46})=>{const _0x441ce5={'pSIdL':_0x2897(0x2),'TVOSb':_0x2897(0xc),'YigPX':'Export\x20your\x20ChatGPT\x20conversations\x20from\x20Settings\x20→\x20Data\x20Controls\x20→\x20Export\x20data.\x20Then\x20upload\x20the\x20JSON\x20file\x20or\x20paste\x20your\x20conversation\x20data.','VUqZO':_0x2897(0xd),'CfBXK':_0x2897(0x1f),'YVTDv':_0x2897(0x20),'kLnmA':_0x2897(0x3),'TxDQQ':_0x2897(0x4),'aIaHZ':'Connect\x20Gemini','ukIJH':'Export\x20your\x20Gemini\x20(Google\x20AI)\x20conversations\x20and\x20paste\x20the\x20data\x20below.','BjIIH':_0x2897(0x35),'heTsT':'grok','qbSpl':'Connect\x20Grok','qiPxW':_0x2897(0x36),'jiNTU':'Paste\x20your\x20Grok\x20conversation\x20JSON\x20here...','CUfqA':_0x2897(0x7),'XXcyq':'Paste\x20your\x20conversation\x20JSON\x20here...','bTsHW':'FvGJZ','lqNiM':function(_0x57f594,_0x62ee3b){return _0x57f594>_0x62ee3b;},'RPWLr':function(_0x58e265,_0x41083f){return _0x58e265!==_0x41083f;},'ZBLmC':function(_0x341281,_0x547b61){return _0x341281+_0x547b61;},'VFGwC':_0x2897(0x37),'rDYQO':_0x2897(0x38),'tJBCH':function(_0x4c6e9f,_0x4868c2){return _0x4c6e9f&&_0x4868c2;},'XxXzx':function(_0x4ad7ab,_0x15582c){return _0x4ad7ab===_0x15582c;},'LkgMC':function(_0x29760b,_0x2666bf){return _0x29760b!=_0x2666bf;},'elnnZ':_0x2897(0xa),'wbwhm':function(_0x296184,_0x29afd2){return _0x296184==_0x29afd2;},'KdMLx':_0x2897(0x39),'aOeaE':function(_0x4001dc,_0x4f121a){return _0x4001dc!==_0x4f121a;},'KzLZx':_0x2897(0x3a),'pMevZ':_0x2897(0x3b),'cjgwF':'ngFyQ','IBBMY':_0x2897(0x3c),'LqHek':_0x2897(0x3d),'bOrMJ':'fGtzQ','rdYPC':function(_0x2ea7e0,_0x2deb39){return _0x2ea7e0>_0x2deb39;},'CEhNj':_0x2897(0x3e),'WNSRC':'Invalid\x20JSON\x20format.\x20Please\x20check\x20your\x20data\x20and\x20try\x20again.','fYTtY':function(_0x329f04,_0x26e78c){return _0x329f04!==_0x26e78c;},'ZcrkW':function(_0x44415b,_0x38d6b9){return _0x44415b!==_0x38d6b9;},'kimgm':'LaRuP','Bifxs':function(_0x4dc0c7,_0x2727bb){return _0x4dc0c7===_0x2727bb;},'qjYXA':_0x2897(0x3f),'sDwsn':_0x2897(0x40),'eiRQN':_0x2897(0x41),'FcieR':_0x2897(0x42),'Cktha':_0x2897(0x43),'vViZw':_0x2897(0x44),'UmllU':_0x2897(0x45),'elZAn':_0x2897(0x46),'pAmZU':_0x2897(0x47),'BooAm':_0x2897(0x48),'XIVIk':function(_0x4fef98,_0x5e6028){return _0x4fef98===_0x5e6028;},'GyFeZ':_0x2897(0x49),'CUIaI':function(_0x3eebdd,_0x17de6a){return _0x3eebdd(_0x17de6a);},'xrRmV':_0x2897(0x4a),'gyCZs':'DOCUMENT_PICKER_CANCELED','eYRmV':'File\x20pick\x20error:','rHtgc':_0x2897(0x4b),'mLvdf':function(_0x415acb,_0x110b90){return _0x415acb===_0x110b90;},'GDNML':_0x2897(0x4c),'VrBYJ':_0x2897(0x4d),'kIjOQ':function(_0x42dd9f,_0x3835ba){return _0x42dd9f(_0x3835ba);},'dIhTu':_0x2897(0x4e),'nSoVE':_0x2897(0x4f),'DXCeG':function(_0x104092,_0x17a7f3){return _0x104092(_0x17a7f3);},'pKphN':function(_0x19fb9a,_0x6fc507){return _0x19fb9a===_0x6fc507;},'QQNtL':_0x2897(0x50),'CNkgm':_0x2897(0x51),'sRYvD':_0x2897(0x52),'QLSYi':_0x2897(0x53),'AECuU':'enoch_token','kFJsC':function(_0x326b57,_0x5f4b26,_0xd8c09b){return _0x326b57(_0x5f4b26,_0xd8c09b);},'pDvHS':_0x2897(0x54),'gKyyk':_0x2897(0x55),'zHngl':_0x2897(0x56),'WpGTv':function(_0x45f652,_0x3cba1d){return _0x45f652(_0x3cba1d);},'NJCGz':_0x2897(0x57),'oHVnm':'2|3|4|0|5|1','CpDLT':function(_0x4ce453){return _0x4ce453();},'RkZPf':function(_0x4a5256,_0x2e8790){return _0x4a5256(_0x2e8790);},'DwZVc':function(_0x51e572,_0x47d2d8){return _0x51e572(_0x47d2d8);},'gGXKf':function(_0x424663,_0xfec803){return _0x424663(_0xfec803);},'rCKtW':function(_0xa77a00,_0xe9d1bc){return _0xa77a00(_0xe9d1bc);},'TcsIV':function(_0x5c08a2){return _0x5c08a2();},'NDHsD':_0x2897(0x58),'WwpaD':_0x2897(0x59),'ZLHRZ':function(_0xb5a9f1,_0x2d833d){return _0xb5a9f1===_0x2d833d;},'LyDgl':_0x2897(0x5a),'KpCXU':_0x2897(0x5b),'kXkuI':'Cancel','uDkwD':function(_0x266924,_0x1960db){return _0x266924===_0x1960db;},'HNCos':'Paste\x20Data','XJkKu':'Upload\x20File\x20','DLvru':_0x2897(0x5c),'bfkXb':function(_0x444e46,_0x523fca){return _0x444e46===_0x523fca;},'PcSeW':_0x2897(0x5d),'QQkUn':_0x2897(0x5e),'vUFFb':function(_0x315c73,_0x5611f7){return _0x315c73||_0x5611f7;},'cKSqo':'Tap\x20to\x20select\x20a\x20file','UCtcC':_0x2897(0x5f),'aDaJN':_0x2897(0x60),'CuHNP':_0x2897(0x61),'GVLeb':_0x2897(0x62),'XRfDv':_0x2897(0x63),'YJSXE':'Import\x20Conversations'},[_0x2dc4e0,_0x51765a]=(0x0,_react[_0x2897(0x64)])(_0x441ce5[_0x2897(0x65)]),[_0x5e9ab1,_0x227c60]=(0x0,_react[_0x2897(0x64)])(''),[_0x18d24f,_0x36afe4]=(0x0,_react[_0x2897(0x64)])(![]),[_0x46ac80,_0x22ee01]=(0x0,_react['useState'])(null),[_0x48e7f6,_0x6a7ce7]=(0x0,_react[_0x2897(0x64)])(null),[_0x2cfbd4,_0x3d7caa]=(0x0,_react[_0x2897(0x64)])(null),_0xb3215d=()=>{switch(_0xbda81f){case _0x441ce5['pSIdL']:return{'title':_0x441ce5[_0x2897(0x66)],'instructions':_0x441ce5[_0x2897(0x67)],'placeholder':_0x441ce5[_0x2897(0x68)]};case _0x441ce5[_0x2897(0x69)]:return{'title':_0x441ce5[_0x2897(0x6a)],'instructions':_0x441ce5[_0x2897(0x6b)],'placeholder':_0x441ce5[_0x2897(0x6c)]};case _0x2897(0x5):return{'title':_0x441ce5[_0x2897(0x6d)],'instructions':_0x441ce5[_0x2897(0x6e)],'placeholder':_0x441ce5[_0x2897(0x6f)]};case _0x441ce5[_0x2897(0x70)]:return{'title':_0x441ce5[_0x2897(0x71)],'instructions':_0x441ce5[_0x2897(0x72)],'placeholder':_0x441ce5[_0x2897(0x73)]};default:return{'title':_0x2897(0x2a)+_0x384102,'instructions':_0x441ce5['CUfqA'],'placeholder':_0x441ce5['XXcyq']};}},{title:_0x1d0240,instructions:_0x540c20,placeholder:_0xa3eb93}=_0x441ce5[_0x2897(0x74)](_0xb3215d),_0x2ab052=_0x32497d=>{const _0x4a465c={'QIHvR':function(_0x4aff77,_0x344870){return _0x4aff77===_0x344870;},'bcSyQ':_0x2897(0x75),'TNORg':function(_0xcf04d7,_0x942f9b){return _0x441ce5[_0x2897(0x76)](_0xcf04d7,_0x942f9b);},'bJTRk':function(_0x4a38c5,_0x586d76){return _0x441ce5['RPWLr'](_0x4a38c5,_0x586d76);},'jbfQZ':function(_0x183036,_0x5d92a8,_0x263058,_0x258f89){return _0x183036(_0x5d92a8,_0x263058,_0x258f89);},'kQaWG':function(_0x160aed,_0x1eb796){return _0x441ce5[_0x2897(0x77)](_0x160aed,_0x1eb796);},'rDeVx':_0x441ce5[_0x2897(0x78)],'yMGdX':_0x2897(0x79),'beFoF':_0x441ce5[_0x2897(0x7a)]};if(_0x441ce5[_0x2897(0x7b)](_0x441ce5[_0x2897(0x7c)],_0x441ce5[_0x2897(0x7d)]))try{const _0x5ca9fc=JSON[_0x2897(0x7e)](_0x32497d),_0x268edd=[];if(Array[_0x2897(0x7f)](_0x5ca9fc))_0x2897(0x80)!==_0x441ce5[_0x2897(0x81)]?_0x5ca9fc['forEach']((_0x293a2f,_0x260160)=>{if(_0x2897(0x82)===_0x441ce5[_0x2897(0x83)]){if(_0x39a419['has'](_0x3afd43))return _0x225a5d[_0x2897(0x2e)](_0x38688f);_0x332234['set'](_0x4e26e1,_0x213204);}else{const _0x318cce=_0x1ad83d(_0x293a2f);if(_0x441ce5[_0x2897(0x84)](_0x318cce[_0x2897(0x85)],0x0)){if(_0x441ce5[_0x2897(0x86)]('FfnQl',_0x2897(0x87)))_0x268edd['push']({'conversationId':_0x293a2f['id']||_0x293a2f['conversation_id']||_0x2897(0x88)+_0x260160+'_'+Date[_0x2897(0x89)](),'messages':_0x318cce,'context':{'title':_0x293a2f[_0x2897(0x8a)]||_0x293a2f[_0x2897(0x8b)]||_0x2897(0x8c)+(_0x260160+0x1),'create_time':_0x293a2f[_0x2897(0x8d)]||_0x293a2f['created_at'],'update_time':_0x293a2f[_0x2897(0x8e)]||_0x293a2f['updated_at']}});else{const _0x194368={'AOScw':function(_0x1ce341,_0x1c4469){return _0x1ce341&&_0x1c4469;},'xfwgP':function(_0x2cba38,_0x10d609){return _0x4a465c['QIHvR'](_0x2cba38,_0x10d609);},'VGZju':_0x4a465c[_0x2897(0x8f)],'RzADj':function(_0x17020b,_0x1618cf){return _0x4a465c[_0x2897(0x90)](_0x17020b,_0x1618cf);},'VznJr':_0x2897(0xa),'AYEdG':function(_0x414713,_0x1087d6){return _0x4a465c[_0x2897(0x91)](_0x414713,_0x1087d6);},'BiqYk':_0x2897(0x1),'OalwT':function(_0x583dc3,_0x358a97,_0xa12c5a,_0x3ee441){return _0x4a465c[_0x2897(0x92)](_0x583dc3,_0x358a97,_0xa12c5a,_0x3ee441);}};if(_0x4a465c[_0x2897(0x93)](_0x4a465c[_0x2897(0x94)],typeof _0x2d12b4))var _0x74ccdd=new _0x296871(),_0x48f2cf=new _0x2a31cf();return(_0x4256be=function(_0x569fe7,_0x5e6edc){if(_0x194368[_0x2897(0x95)](!_0x5e6edc,_0x569fe7)&&_0x569fe7['__esModule'])return _0x569fe7;var _0x33732e,_0x2dd020,_0x2715a0={'__proto__':null,'default':_0x569fe7};if(_0x194368[_0x2897(0x96)](null,_0x569fe7)||_0x194368['VGZju']!=typeof _0x569fe7&&_0x194368[_0x2897(0x97)](_0x194368[_0x2897(0x98)],typeof _0x569fe7))return _0x2715a0;if(_0x33732e=_0x5e6edc?_0x48f2cf:_0x74ccdd){if(_0x33732e[_0x2897(0x2d)](_0x569fe7))return _0x33732e[_0x2897(0x2e)](_0x569fe7);_0x33732e[_0x2897(0x2f)](_0x569fe7,_0x2715a0);}for(const _0x5a2f19 in _0x569fe7)_0x194368[_0x2897(0x99)](_0x194368['BiqYk'],_0x5a2f19)&&{}[_0x2897(0x9a)][_0x2897(0x31)](_0x569fe7,_0x5a2f19)&&((_0x2dd020=(_0x33732e=_0x3a307d['defineProperty'])&&_0x3871af[_0x2897(0x32)](_0x569fe7,_0x5a2f19))&&(_0x2dd020[_0x2897(0x2e)]||_0x2dd020[_0x2897(0x2f)])?_0x194368[_0x2897(0x9b)](_0x33732e,_0x2715a0,_0x5a2f19,_0x2dd020):_0x2715a0[_0x5a2f19]=_0x569fe7[_0x5a2f19]);return _0x2715a0;})(_0x438ee8,_0xc9da15);}}}}):_0x13f090[_0x2897(0x9c)][_0x2897(0x9d)]((_0x118b61,_0x5ae2f1)=>{(_0x118b61[_0x2897(0x9e)]||_0x118b61[_0x2897(0x9f)])&&_0x2a5601[_0x2897(0xa0)]({'id':_0x118b61[_0x2897(0xa1)]||_0x2897(0xa2)+_0x5ae2f1,'role':_0x4a465c['QIHvR'](_0x118b61[_0x2897(0xa3)],_0x4a465c['yMGdX'])?'user':_0x4a465c[_0x2897(0xa4)],'content':_0x118b61['text']||_0x118b61[_0x2897(0x9f)],'timestamp':_0x118b61[_0x2897(0xa5)]});});else{if(_0x5ca9fc[_0x2897(0xa6)]&&Array[_0x2897(0x7f)](_0x5ca9fc['conversations']))_0x5ca9fc[_0x2897(0xa6)][_0x2897(0x9d)]((_0x42d7a2,_0x49a3c3)=>{const _0x124bc4=_0x1ad83d(_0x42d7a2);_0x124bc4[_0x2897(0x85)]>0x0&&_0x268edd[_0x2897(0xa0)]({'conversationId':_0x42d7a2['id']||_0x2897(0x88)+_0x49a3c3+'_'+Date[_0x2897(0x89)](),'messages':_0x124bc4,'context':{'title':_0x42d7a2[_0x2897(0x8a)]||_0x2897(0x8c)+_0x441ce5[_0x2897(0xa7)](_0x49a3c3,0x1),'create_time':_0x42d7a2['create_time'],'update_time':_0x42d7a2['update_time']}});});else{if(_0x5ca9fc[_0x2897(0xa8)]||_0x5ca9fc['messages']){const _0x50f0aa=_0x1ad83d(_0x5ca9fc);_0x441ce5[_0x2897(0x84)](_0x50f0aa['length'],0x0)&&(_0x441ce5[_0x2897(0xa9)]!==_0x2897(0xaa)?_0x268edd[_0x2897(0xa0)]({'conversationId':_0x5ca9fc['id']||_0x2897(0x88)+Date['now'](),'messages':_0x50f0aa,'context':{'title':_0x5ca9fc[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)],'create_time':_0x5ca9fc[_0x2897(0x8d)],'update_time':_0x5ca9fc['update_time']}}):(_0x5b790d[_0x2897(0xac)](_0x441ce5['VFGwC'],_0x4c318c),_0x20cbb1(_0x1c862c[_0x2897(0xad)]||_0x441ce5['rDYQO']),(0x0,_0x11a522[_0x2897(0xae)])(_0x10cdad['HapticType']['ERROR'])));}else{if(_0x441ce5[_0x2897(0x86)](_0x441ce5['bOrMJ'],_0x2897(0xaf))){const _0x181cb3=_0x1ad83d(_0x5ca9fc);_0x441ce5['rdYPC'](_0x181cb3[_0x2897(0x85)],0x0)&&_0x268edd[_0x2897(0xa0)]({'conversationId':_0x2897(0x88)+Date[_0x2897(0x89)](),'messages':_0x181cb3,'context':{'title':_0x5ca9fc[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)]}});}else _0x33dc33[_0x2897(0xac)]('Error\x20storing\x20conversation:',_0x3e4fc9);}}}return _0x268edd;}catch(_0x525418){console[_0x2897(0xac)](_0x441ce5[_0x2897(0xb0)],_0x525418);throw new Error(_0x441ce5['WNSRC']);}else{if(_0x441ce5[_0x2897(0xb1)](!_0x3535f4,_0x146d92)&&_0x10cbdb[_0x2897(0x0)])return _0xb84526;var _0x488a5a,_0x3cb1d9,_0x72fe74={'__proto__':null,'default':_0x311b50};if(_0x441ce5[_0x2897(0xb2)](null,_0x4d4241)||'object'!=typeof _0xa74a79&&_0x441ce5['LkgMC'](_0x441ce5[_0x2897(0x78)],typeof _0x2b07d1))return _0x72fe74;if(_0x488a5a=_0x1045cd?_0x31c909:_0x305092){if(_0x488a5a['has'](_0x2fd28b))return _0x488a5a['get'](_0xb61c89);_0x488a5a[_0x2897(0x2f)](_0xff0b1f,_0x72fe74);}for(const _0x2bd858 in _0x429296)_0x441ce5[_0x2897(0x86)](_0x2897(0x1),_0x2bd858)&&{}[_0x2897(0x9a)][_0x2897(0x31)](_0x41a3c3,_0x2bd858)&&((_0x3cb1d9=(_0x488a5a=_0xe3530e[_0x2897(0xb3)])&&_0x56a0dc[_0x2897(0x32)](_0x132fa1,_0x2bd858))&&(_0x3cb1d9[_0x2897(0x2e)]||_0x3cb1d9[_0x2897(0x2f)])?_0x488a5a(_0x72fe74,_0x2bd858,_0x3cb1d9):_0x72fe74[_0x2bd858]=_0xe347b2[_0x2bd858]);return _0x72fe74;}},_0x1ad83d=_0x34c895=>{const _0x57435a={'nhNpM':_0x2897(0x3e),'NLxfO':_0x2897(0xb4),'KfFoS':function(_0x40d18e,_0x1412ad){return _0x441ce5[_0x2897(0xa7)](_0x40d18e,_0x1412ad);},'omHsS':function(_0x15171e,_0x106b67){return _0x15171e===_0x106b67;},'lrciy':_0x2897(0x79),'SujiO':_0x441ce5[_0x2897(0xb5)],'OuNvF':_0x441ce5[_0x2897(0xb6)],'KXcjC':function(_0x5b57ed,_0x19c376){return _0x441ce5[_0x2897(0xb7)](_0x5b57ed,_0x19c376);},'vVtnS':_0x441ce5[_0x2897(0xb8)],'PLnlm':_0x441ce5[_0x2897(0x7a)]},_0x5254b3=[];if(_0x34c895[_0x2897(0xa8)]){if(_0x441ce5[_0x2897(0xb9)]!==_0x2897(0xba))Object[_0x2897(0xbb)](_0x34c895[_0x2897(0xa8)])[_0x2897(0x9d)]((_0x33dddb,_0x454b3e)=>{var _0x938ca9;if(_0x441ce5[_0x2897(0x7b)](_0x33dddb,null)&&_0x33dddb!==void 0x0&&_0x441ce5[_0x2897(0x7b)](_0x938ca9=_0x33dddb['message'],null)&&_0x938ca9!==void 0x0&&_0x441ce5[_0x2897(0xbc)](_0x938ca9=_0x938ca9[_0x2897(0x9f)],null)&&_0x441ce5['ZcrkW'](_0x938ca9,void 0x0)&&_0x938ca9[_0x2897(0xbd)]){const _0x334137=_0x33dddb['message'][_0x2897(0x9f)]['parts'][_0x2897(0xbe)]('\x0a');if(_0x334137[_0x2897(0xbf)]()){if(_0x441ce5[_0x2897(0xc0)]!==_0x441ce5[_0x2897(0xc0)]){_0x4a79ae[_0x2897(0xac)](_0x57435a['nhNpM'],_0x22ff3e);throw new _0x44e515(_0x57435a['NLxfO']);}else{var _0x2ec0ef;_0x5254b3[_0x2897(0xa0)]({'id':_0x33dddb[_0x2897(0xad)]['id']||_0x2897(0xa2)+_0x454b3e,'role':(_0x441ce5[_0x2897(0xc1)](_0x2ec0ef=_0x33dddb[_0x2897(0xad)][_0x2897(0xc2)],null)||_0x2ec0ef===void 0x0?void 0x0:_0x2ec0ef['role'])||_0x441ce5['qjYXA'],'content':_0x334137,'timestamp':_0x33dddb[_0x2897(0xad)]['create_time']?new Date(_0x33dddb['message'][_0x2897(0x8d)]*0x3e8)[_0x2897(0xc3)]():undefined});}}}});else throw new _0xe345cc(_0x441ce5[_0x2897(0xc4)]);}return _0x34c895[_0x2897(0xc5)]&&Array[_0x2897(0x7f)](_0x34c895[_0x2897(0xc5)])&&_0x34c895[_0x2897(0xc5)][_0x2897(0x9d)]((_0x2e80b8,_0x42a553)=>{const _0x2bde76={'GvGZK':_0x441ce5[_0x2897(0x65)],'DYDWm':function(_0x17dd23,_0x15d7d5){return _0x441ce5['RPWLr'](_0x17dd23,_0x15d7d5);},'NbXUn':function(_0x2dce28,_0x40c436){return _0x441ce5[_0x2897(0xb2)](_0x2dce28,_0x40c436);}};var _0x4f8990;const _0x50230a=_0x2e80b8['content']||_0x2e80b8['text']||_0x2e80b8['message']||'';if(_0x441ce5[_0x2897(0xc1)](typeof _0x50230a,_0x441ce5['FcieR'])&&_0x50230a[_0x2897(0xbf)]())_0x441ce5[_0x2897(0xc6)]===_0x441ce5[_0x2897(0xc7)]?(_0x210821(_0x2bde76['GvGZK']),(0x0,_0x48e954[_0x2897(0xae)])(_0x123fa9[_0x2897(0xc8)][_0x2897(0xc9)])):_0x5254b3[_0x2897(0xa0)]({'id':_0x2e80b8['id']||_0x2897(0xa2)+_0x42a553,'role':_0x2e80b8[_0x2897(0xca)]||_0x2e80b8[_0x2897(0xc2)]||_0x441ce5[_0x2897(0xb8)],'content':_0x50230a,'timestamp':_0x2e80b8[_0x2897(0xcb)]||_0x2e80b8[_0x2897(0xa5)]});else{if((_0x4f8990=_0x2e80b8['content'])!==null&&_0x4f8990!==void 0x0&&_0x4f8990[_0x2897(0xbd)]){if(_0x441ce5[_0x2897(0xcc)]===_0x441ce5[_0x2897(0xcc)])_0x5254b3[_0x2897(0xa0)]({'id':_0x2e80b8['id']||_0x2897(0xa2)+_0x42a553,'role':_0x2e80b8[_0x2897(0xca)]||_0x441ce5[_0x2897(0xb8)],'content':_0x2e80b8[_0x2897(0x9f)]['parts'][_0x2897(0xbe)]('\x0a'),'timestamp':_0x2e80b8[_0x2897(0xcb)]});else{const _0x5ef97b={'ixOTp':function(_0x569e34,_0x35cf70){return _0x2bde76[_0x2897(0xcd)](_0x569e34,_0x35cf70);},'ZllER':function(_0x4edff9,_0x1c23c2){return _0x2bde76[_0x2897(0xcd)](_0x4edff9,_0x1c23c2);},'dspXO':function(_0x5a0896,_0x215965){return _0x2bde76[_0x2897(0xcd)](_0x5a0896,_0x215965);},'tWQTS':function(_0x271d9c,_0x2fb979){return _0x2bde76[_0x2897(0xcd)](_0x271d9c,_0x2fb979);},'manmQ':function(_0x4b5ae5,_0xdbb90e){return _0x2bde76[_0x2897(0xcd)](_0x4b5ae5,_0xdbb90e);},'LlMYX':function(_0x1c2bf7,_0x5d03fd){return _0x2bde76['NbXUn'](_0x1c2bf7,_0x5d03fd);}};_0x3c1ae7[_0x2897(0xbb)](_0x4fbab4['mapping'])[_0x2897(0x9d)]((_0x3d3c78,_0x5d8276)=>{var _0x2f98b2;if(_0x5ef97b[_0x2897(0xce)](_0x3d3c78,null)&&_0x5ef97b['ZllER'](_0x3d3c78,void 0x0)&&_0x5ef97b['ZllER'](_0x2f98b2=_0x3d3c78['message'],null)&&_0x5ef97b[_0x2897(0xcf)](_0x2f98b2,void 0x0)&&_0x5ef97b[_0x2897(0xd0)](_0x2f98b2=_0x2f98b2['content'],null)&&_0x5ef97b[_0x2897(0xd1)](_0x2f98b2,void 0x0)&&_0x2f98b2[_0x2897(0xbd)]){const _0x72ad96=_0x3d3c78['message'][_0x2897(0x9f)][_0x2897(0xbd)][_0x2897(0xbe)]('\x0a');if(_0x72ad96[_0x2897(0xbf)]()){var _0x195393;_0xf1dd34[_0x2897(0xa0)]({'id':_0x3d3c78['message']['id']||'msg_'+_0x5d8276,'role':(_0x5ef97b[_0x2897(0xd2)](_0x195393=_0x3d3c78[_0x2897(0xad)][_0x2897(0xc2)],null)||_0x5ef97b['LlMYX'](_0x195393,void 0x0)?void 0x0:_0x195393[_0x2897(0xca)])||_0x2897(0x3f),'content':_0x72ad96,'timestamp':_0x3d3c78[_0x2897(0xad)]['create_time']?new _0x20bdb3(_0x3d3c78[_0x2897(0xad)][_0x2897(0x8d)]*0x3e8)['toISOString']():_0x144154});}}});}}}}),_0x34c895[_0x2897(0x9c)]&&Array[_0x2897(0x7f)](_0x34c895['chat_messages'])&&_0x34c895[_0x2897(0x9c)][_0x2897(0x9d)]((_0x4b6d0d,_0x57bf17)=>{_0x57435a[_0x2897(0xd3)](_0x57435a['SujiO'],_0x2897(0x47))?(_0x4b6d0d[_0x2897(0x9e)]||_0x4b6d0d[_0x2897(0x9f)])&&(_0x57435a[_0x2897(0xd4)]===_0x57435a[_0x2897(0xd4)]?_0x5254b3[_0x2897(0xa0)]({'id':_0x4b6d0d[_0x2897(0xa1)]||_0x2897(0xa2)+_0x57bf17,'role':_0x57435a['KXcjC'](_0x4b6d0d[_0x2897(0xa3)],_0x2897(0x79))?_0x57435a[_0x2897(0xd5)]:_0x57435a[_0x2897(0xd6)],'content':_0x4b6d0d['text']||_0x4b6d0d['content'],'timestamp':_0x4b6d0d[_0x2897(0xa5)]}):_0x3dae82[_0x2897(0xa0)]({'conversationId':_0x52a76d['id']||_0x2897(0x88)+_0x4f0725+'_'+_0x29bad0['now'](),'messages':_0x54dc85,'context':{'title':_0x3f183b[_0x2897(0x8a)]||_0x2897(0x8c)+_0x57435a[_0x2897(0xd7)](_0x5413b7,0x1),'create_time':_0x3d97bf[_0x2897(0x8d)],'update_time':_0x51413a[_0x2897(0x8e)]}})):(_0x186807[_0x2897(0x9e)]||_0x5b8cab[_0x2897(0x9f)])&&_0x19efd6[_0x2897(0xa0)]({'id':_0x3a91f7[_0x2897(0xa1)]||_0x2897(0xa2)+_0x79a88e,'role':_0x57435a[_0x2897(0xd3)](_0x78e4b7[_0x2897(0xa3)],_0x57435a[_0x2897(0xd8)])?_0x2897(0x45):_0x2897(0x39),'content':_0xbc0e05[_0x2897(0x9e)]||_0x4c8692[_0x2897(0x9f)],'timestamp':_0x16e2fb['created_at']});}),_0x5254b3;},_0x19368c=async()=>{if(!FILE_UPLOAD_AVAILABLE){_0x441ce5['CUIaI'](_0x22ee01,'File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');return;}try{_0x441ce5[_0x2897(0xd9)](_0x22ee01,null);const {pick:_0xd39d15,types:_0x362204}=DocumentPicker,_0x4dc493=await _0x441ce5[_0x2897(0xd9)](_0xd39d15,{'type':[_0x362204[_0x2897(0xda)],_0x362204[_0x2897(0xdb)],_0x362204[_0x2897(0xdc)]]});if(_0x4dc493&&_0x4dc493[0x0]){const _0x18d0c5=_0x4dc493[0x0];_0x441ce5[_0x2897(0xd9)](_0x6a7ce7,_0x18d0c5[_0x2897(0x8b)]||_0x2897(0xdd));let _0x1a41a2;_0x18d0c5['uri'][_0x2897(0xde)](_0x441ce5[_0x2897(0xdf)])?_0x1a41a2=await RNFS[_0x2897(0xe0)](_0x18d0c5[_0x2897(0xe1)],_0x2897(0xe2)):_0x1a41a2=await RNFS[_0x2897(0xe0)](_0x18d0c5[_0x2897(0xe1)],_0x2897(0xe2)),_0x3d7caa(_0x1a41a2),_0x227c60(_0x1a41a2),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xe3)]);}}catch(_0x59c9e3){_0x441ce5[_0x2897(0xbc)](_0x59c9e3['code'],_0x441ce5[_0x2897(0xe4)])&&(console['error'](_0x441ce5['eYRmV'],_0x59c9e3),_0x441ce5['CUIaI'](_0x22ee01,_0x2897(0xe5)),(0x0,_haptics[_0x2897(0xae)])(_haptics['HapticType']['ERROR']));}},_0x47bd2a=async()=>{const _0x1ea508=_0x441ce5['mLvdf'](_0x2dc4e0,_0x441ce5['GDNML'])&&_0x2cfbd4?_0x2cfbd4:_0x5e9ab1;if(!_0x1ea508['trim']()){_0x441ce5[_0x2897(0xd9)](_0x22ee01,_0x441ce5[_0x2897(0xe6)]),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]);return;}_0x441ce5[_0x2897(0xe8)](_0x36afe4,!![]),_0x22ee01(null);try{if(_0x441ce5[_0x2897(0xe9)]!==_0x441ce5[_0x2897(0xea)]){const _0x4c384f=_0x441ce5[_0x2897(0xeb)](_0x2ab052,_0x1ea508);if(_0x441ce5[_0x2897(0xec)](_0x4c384f[_0x2897(0x85)],0x0)){if(_0x441ce5[_0x2897(0xed)]===_0x441ce5[_0x2897(0xee)])_0x5024dc['push']({'conversationId':_0x25c425['id']||_0x2897(0x88)+_0x294b15[_0x2897(0x89)](),'messages':_0x4683b2,'context':{'title':_0x1c4162[_0x2897(0x8a)]||_0x441ce5[_0x2897(0xab)],'create_time':_0x5d436b[_0x2897(0x8d)],'update_time':_0x9c4b4[_0x2897(0x8e)]}});else throw new Error(_0x441ce5[_0x2897(0xef)]);}const _0x5d44aa=await _asyncStorage[_0x2897(0x1)][_0x2897(0xf0)](_0x441ce5[_0x2897(0xf1)])||await _asyncStorage[_0x2897(0x1)][_0x2897(0xf0)](_0x441ce5[_0x2897(0xf2)])||await _asyncStorage['default'][_0x2897(0xf0)](_0x2897(0xf3));if(!_0x5d44aa)throw new Error(_0x2897(0x4b));const _0x202c39=_0x2897(0xf4)+_0xbda81f;let _0x3258b9=0x0;for(const _0x20c1bb of _0x4c384f){try{const _0x2fd6ca=await _0x441ce5[_0x2897(0xf5)](fetch,_api[_0x2897(0xf6)][_0x2897(0xf7)]+_0x2897(0xf8),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x2897(0xf9)+_0x5d44aa},'body':JSON[_0x2897(0xfa)]({'platform':_0x202c39,'conversationData':{'conversationId':_0x20c1bb[_0x2897(0xfb)],'messages':_0x20c1bb['messages'],'context':_0x20c1bb[_0x2897(0xfc)],'mobileMetadata':{'platform':_reactNative[_0x2897(0xfd)]['OS'],'appVersion':_0x441ce5[_0x2897(0xfe)],'osVersion':_reactNative[_0x2897(0xfd)][_0x2897(0xff)],'isOfflineSync':![]}},'memoryType':_0x441ce5['gKyyk'],'metadata':{'source':_0x2897(0x100),'importedAt':new Date()[_0x2897(0xc3)](),'originalPlatform':_0xbda81f}})});if(_0x2fd6ca['ok'])_0x3258b9++;else{const _0x2fa0e2=await _0x2fd6ca[_0x2897(0x9e)]();console[_0x2897(0xac)](_0x2897(0x101)+_0x20c1bb[_0x2897(0xfb)]+':',_0x2fa0e2);}}catch(_0x41a4e2){console['error']('Error\x20storing\x20conversation:',_0x41a4e2);}}if(_0x3258b9>0x0)await _asyncStorage[_0x2897(0x1)][_0x2897(0x102)]('@onairos:llm_connected:'+_0xbda81f,JSON['stringify']({'connected':!![],'platform':_0xbda81f,'conversationsCount':_0x3258b9,'lastSyncAt':new Date()[_0x2897(0xc3)]()})),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe3)]),_reactNative[_0x2897(0x103)]['alert'](_0x441ce5[_0x2897(0x104)],'Successfully\x20imported\x20'+_0x3258b9+_0x2897(0x105)+(_0x3258b9>0x1?'s':'')+'\x20from\x20'+_0x384102+'.',[{'text':'OK','onPress':()=>_0x487b46(_0xbda81f)}]);else throw new Error(_0x441ce5[_0x2897(0xc4)]);}else throw new _0x22c0bc(_0x441ce5[_0x2897(0x106)]);}catch(_0x30be5e){console['error'](_0x441ce5[_0x2897(0x107)],_0x30be5e),_0x441ce5[_0x2897(0x108)](_0x22ee01,_0x30be5e[_0x2897(0xad)]||_0x441ce5[_0x2897(0x109)]),(0x0,_haptics[_0x2897(0xae)])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]);}finally{_0x441ce5[_0x2897(0x108)](_0x36afe4,![]);}},_0x171ffd=()=>{if(_0x441ce5['NJCGz']===_0x441ce5[_0x2897(0x10a)]){const _0x1275c8=_0x441ce5[_0x2897(0x10b)][_0x2897(0x10c)]('|');let _0x512f8f=0x0;while(!![]){switch(_0x1275c8[_0x512f8f++]){case'0':_0x441ce5[_0x2897(0xe8)](_0x22ee01,null);continue;case'1':_0x441ce5['CpDLT'](_0x13e2ee);continue;case'2':_0x441ce5[_0x2897(0x10d)](_0x227c60,'');continue;case'3':_0x441ce5[_0x2897(0x10e)](_0x3d7caa,null);continue;case'4':_0x6a7ce7(null);continue;case'5':_0x441ce5['RkZPf'](_0x51765a,_0x441ce5['eiRQN']);continue;}break;}}else throw new _0x548636(_0x441ce5['sRYvD']);};return _react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x110)],{'visible':_0x252b95,'animationType':_0x441ce5[_0x2897(0x111)],'presentationStyle':_0x441ce5['WwpaD'],'onRequestClose':_0x171ffd},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x112)],{'style':styles[_0x2897(0x113)],'behavior':_0x441ce5[_0x2897(0x114)](_reactNative[_0x2897(0xfd)]['OS'],_0x441ce5[_0x2897(0x115)])?'padding':_0x441ce5[_0x2897(0x116)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x118)]},_react['default']['createElement'](_reactNative[_0x2897(0x119)],{'style':styles['closeButton'],'onPress':_0x171ffd},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x11b)]},_0x441ce5[_0x2897(0x11c)])),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x11d)]},_0x1d0240),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x11e)]})),_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x11f)],{'style':styles[_0x2897(0x9f)],'contentContainerStyle':styles[_0x2897(0x120)],'keyboardShouldPersistTaps':_0x2897(0x121)},_react['default']['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x122)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x123)]},_0x540c20)),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x124)]},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x125)],_0x2dc4e0===_0x441ce5[_0x2897(0x65)]&&styles[_0x2897(0x126)]],'onPress':()=>{_0x441ce5[_0x2897(0x127)](_0x51765a,_0x2897(0x41)),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xc9)]);}},_react['default']['createElement'](_reactNative[_0x2897(0x11a)],{'style':[styles[_0x2897(0x128)],_0x441ce5['uDkwD'](_0x2dc4e0,_0x441ce5[_0x2897(0x65)])&&styles['tabTextActive']]},_0x441ce5[_0x2897(0x129)])),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x125)],_0x441ce5['ZLHRZ'](_0x2dc4e0,'file')&&styles[_0x2897(0x126)],!FILE_UPLOAD_AVAILABLE&&styles[_0x2897(0x12a)]],'onPress':()=>{FILE_UPLOAD_AVAILABLE?(_0x441ce5[_0x2897(0x12b)](_0x51765a,_0x441ce5[_0x2897(0x12c)]),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xc9)])):(_0x441ce5[_0x2897(0xe8)](_0x22ee01,_0x2897(0x12d)),(0x0,_haptics['triggerHaptic'])(_haptics[_0x2897(0xc8)][_0x2897(0xe7)]));}},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':[styles[_0x2897(0x128)],_0x2dc4e0===_0x441ce5[_0x2897(0x12c)]&&styles[_0x2897(0x12e)],!FILE_UPLOAD_AVAILABLE&&styles[_0x2897(0x12f)]]},_0x441ce5[_0x2897(0x130)],_0x441ce5['tJBCH'](!FILE_UPLOAD_AVAILABLE,_0x441ce5[_0x2897(0x131)])))),_0x441ce5[_0x2897(0x132)](_0x2dc4e0,_0x441ce5['eiRQN'])?_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x133)]},_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x134)],{'style':styles[_0x2897(0x135)],'multiline':!![],'placeholder':_0xa3eb93,'placeholderTextColor':_theme[_0x2897(0x136)][_0x2897(0x137)],'value':_0x5e9ab1,'onChangeText':_0x227c60,'textAlignVertical':_0x441ce5[_0x2897(0x138)],'autoCapitalize':_0x441ce5[_0x2897(0x139)],'autoCorrect':![]})):_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x13a)]},_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x119)],{'style':styles[_0x2897(0x13b)],'onPress':_0x19368c},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x13c)]},'📁'),_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x13d)]},_0x441ce5[_0x2897(0x13e)](_0x48e7f6,_0x441ce5['cKSqo']))),_0x48e7f6&&_react[_0x2897(0x1)]['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x13f)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x140)]},'✓\x20',_0x48e7f6))),_0x46ac80&&_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x117)],{'style':styles['errorContainer']},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['errorText']},_0x46ac80)),_0x5e9ab1[_0x2897(0x85)]>0x0&&_react['default']['createElement'](_reactNative[_0x2897(0x117)],{'style':styles[_0x2897(0x141)]},_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles[_0x2897(0x142)]},_0x441ce5[_0x2897(0x143)]),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['Text'],{'style':styles[_0x2897(0x144)],'numberOfLines':0x5},_0x5e9ab1[_0x2897(0x145)](0x0,0x1f4),_0x441ce5[_0x2897(0x146)](_0x5e9ab1[_0x2897(0x85)],0x1f4)?_0x441ce5[_0x2897(0x147)]:''),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['previewInfo']},_0x5e9ab1[_0x2897(0x85)]['toLocaleString'](),_0x441ce5[_0x2897(0x148)]))),_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative['View'],{'style':styles[_0x2897(0x149)]},_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x119)],{'style':[styles[_0x2897(0x14a)],(!_0x5e9ab1['trim']()||_0x18d24f)&&styles[_0x2897(0x14b)]],'onPress':_0x47bd2a,'disabled':!_0x5e9ab1[_0x2897(0xbf)]()||_0x18d24f},_0x18d24f?_react['default'][_0x2897(0x10f)](_reactNative[_0x2897(0x14c)],{'color':_0x441ce5[_0x2897(0x14d)],'size':_0x441ce5[_0x2897(0x14e)]}):_react[_0x2897(0x1)][_0x2897(0x10f)](_reactNative[_0x2897(0x11a)],{'style':styles['submitButtonText']},_0x441ce5['YJSXE'])))));},styles=_reactNative[_0x2897(0x14f)]['create']({'container':{'flex':0x1,'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x150)]},'header':{'flexDirection':_0x2897(0x151),'alignItems':_0x2897(0x152),'justifyContent':'space-between','paddingHorizontal':0x10,'paddingTop':_reactNative[_0x2897(0xfd)]['OS']===_0x2897(0x5a)?0xc:0x10,'paddingBottom':0xc,'borderBottomWidth':0x1,'borderBottomColor':_0x2897(0x153)},'headerTitle':{'fontSize':0x11,'fontWeight':_0x2897(0x154),'color':_theme[_0x2897(0x136)]['grey800'],'fontFamily':_0x2897(0x155)},'closeButton':{'width':0x3c},'closeButtonText':{'fontSize':0x10,'color':_0x2897(0x156),'fontFamily':_0x2897(0x157)},'content':{'flex':0x1},'contentContainer':{'padding':0x14,'paddingBottom':0x28},'instructionsContainer':{'backgroundColor':'#F0F9FF','borderRadius':0xc,'padding':0x10,'marginBottom':0x14},'instructionsText':{'fontSize':0xe,'lineHeight':0x14,'color':'#0369A1','fontFamily':_0x2897(0x157)},'tabContainer':{'flexDirection':_0x2897(0x151),'backgroundColor':_0x2897(0x158),'borderRadius':0xa,'padding':0x4,'marginBottom':0x14},'tab':{'flex':0x1,'paddingVertical':0xa,'borderRadius':0x8,'alignItems':'center'},'tabActive':{'backgroundColor':_0x2897(0x62),'shadowColor':'#000','shadowOffset':{'width':0x0,'height':0x1},'shadowOpacity':0.1,'shadowRadius':0x2,'elevation':0x2},'tabText':{'fontSize':0xe,'fontWeight':_0x2897(0x159),'color':_theme[_0x2897(0x136)][_0x2897(0x15a)],'fontFamily':'Inter'},'tabTextActive':{'color':_theme['COLORS'][_0x2897(0x15b)]},'tabDisabled':{'opacity':0.5},'tabTextDisabled':{'color':_theme[_0x2897(0x136)][_0x2897(0x137)]},'inputContainer':{'marginBottom':0x14},'textInput':{'backgroundColor':_0x2897(0x62),'borderWidth':0x1,'borderColor':_theme[_0x2897(0x136)][_0x2897(0x15c)],'borderRadius':0xc,'padding':0x10,'minHeight':0xc8,'fontSize':0xe,'fontFamily':_reactNative['Platform']['OS']===_0x2897(0x5a)?_0x2897(0x15d):_0x2897(0x15e),'color':_theme[_0x2897(0x136)][_0x2897(0x15b)]},'fileInputContainer':{'marginBottom':0x14},'filePickButton':{'backgroundColor':_0x2897(0x62),'borderWidth':0x2,'borderColor':_theme[_0x2897(0x136)]['grey300'],'borderStyle':_0x2897(0x15f),'borderRadius':0xc,'padding':0x28,'alignItems':_0x2897(0x152),'justifyContent':'center'},'filePickIcon':{'fontSize':0x28,'marginBottom':0xc},'filePickText':{'fontSize':0xf,'color':_theme['COLORS'][_0x2897(0x160)],'fontFamily':_0x2897(0x157)},'fileSelectedContainer':{'marginTop':0xc,'backgroundColor':_0x2897(0x161),'borderRadius':0x8,'padding':0xc},'fileSelectedText':{'fontSize':0xe,'color':'#166534','fontFamily':_0x2897(0x157),'fontWeight':'500'},'errorContainer':{'backgroundColor':_0x2897(0x162),'borderRadius':0x8,'padding':0xc,'marginBottom':0x10},'errorText':{'fontSize':0xe,'color':_0x2897(0x163),'fontFamily':'Inter'},'previewContainer':{'backgroundColor':'#F3F4F6','borderRadius':0xc,'padding':0x10},'previewTitle':{'fontSize':0xe,'fontWeight':_0x2897(0x154),'color':_theme[_0x2897(0x136)][_0x2897(0x15b)],'marginBottom':0x8,'fontFamily':_0x2897(0x157)},'previewText':{'fontSize':0xc,'color':_theme[_0x2897(0x136)][_0x2897(0x160)],'fontFamily':_reactNative[_0x2897(0xfd)]['OS']===_0x2897(0x5a)?_0x2897(0x15d):_0x2897(0x15e),'lineHeight':0x12},'previewInfo':{'fontSize':0xc,'color':_theme['COLORS']['grey500'],'marginTop':0x8,'fontFamily':_0x2897(0x157)},'footer':{'padding':0x14,'paddingBottom':_reactNative['Platform']['OS']===_0x2897(0x5a)?0x22:0x14,'borderTopWidth':0x1,'borderTopColor':_0x2897(0x153),'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x150)]},'submitButton':{'backgroundColor':_0x2897(0x164),'borderRadius':0xc,'paddingVertical':0x10,'alignItems':_0x2897(0x152),'justifyContent':_0x2897(0x152)},'submitButtonDisabled':{'backgroundColor':_theme[_0x2897(0x136)][_0x2897(0x15c)]},'submitButtonText':{'fontSize':0x10,'fontWeight':_0x2897(0x154),'color':_0x2897(0x62),'fontFamily':'Inter'}});function _0x2897(_0xeaaf2a,_0x289767){_0xeaaf2a=_0xeaaf2a-0x0;const _0x3cbd5a=_0xeaaf();let _0x5397a4=_0x3cbd5a[_0xeaaf2a];return _0x5397a4;}var _default=exports[_0x2897(0x1)]=LLMDataInputModal;
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _theme = require("../theme");
|
|
10
|
+
var _haptics = require("../utils/haptics");
|
|
11
|
+
var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
|
|
12
|
+
var _api = require("../config/api");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
/**
|
|
16
|
+
* LLMDataInputModal.tsx
|
|
17
|
+
*
|
|
18
|
+
* Modal for inputting LLM conversation data via file upload or paste.
|
|
19
|
+
* Supports ChatGPT, Claude, Gemini, and Grok data formats.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
// Optional dependencies - file upload won't work without them
|
|
23
|
+
let DocumentPicker = null;
|
|
24
|
+
let RNFS = null;
|
|
25
|
+
try {
|
|
26
|
+
DocumentPicker = require('react-native-document-picker');
|
|
27
|
+
} catch (e) {
|
|
28
|
+
console.log('react-native-document-picker not available - file upload disabled');
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
RNFS = require('react-native-fs');
|
|
32
|
+
} catch (e) {
|
|
33
|
+
console.log('react-native-fs not available - file upload disabled');
|
|
34
|
+
}
|
|
35
|
+
const FILE_UPLOAD_AVAILABLE = DocumentPicker !== null && RNFS !== null;
|
|
36
|
+
const LLMDataInputModal = ({
|
|
37
|
+
visible,
|
|
38
|
+
platform,
|
|
39
|
+
platformName,
|
|
40
|
+
onClose,
|
|
41
|
+
onSuccess
|
|
42
|
+
}) => {
|
|
43
|
+
const [inputMode, setInputMode] = (0, _react.useState)('paste');
|
|
44
|
+
const [pastedData, setPastedData] = (0, _react.useState)('');
|
|
45
|
+
const [isLoading, setIsLoading] = (0, _react.useState)(false);
|
|
46
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
47
|
+
const [selectedFileName, setSelectedFileName] = (0, _react.useState)(null);
|
|
48
|
+
const [fileContent, setFileContent] = (0, _react.useState)(null);
|
|
49
|
+
|
|
50
|
+
// Get platform-specific instructions
|
|
51
|
+
const getInstructions = () => {
|
|
52
|
+
switch (platform) {
|
|
53
|
+
case 'chatgpt':
|
|
54
|
+
return {
|
|
55
|
+
title: 'Connect ChatGPT',
|
|
56
|
+
instructions: 'Export your ChatGPT conversations from Settings → Data Controls → Export data. Then upload the JSON file or paste your conversation data.',
|
|
57
|
+
placeholder: 'Paste your ChatGPT conversation JSON here...'
|
|
58
|
+
};
|
|
59
|
+
case 'claude':
|
|
60
|
+
return {
|
|
61
|
+
title: 'Connect Claude',
|
|
62
|
+
instructions: 'Export your Claude conversations and paste the JSON data below, or upload your exported file.',
|
|
63
|
+
placeholder: 'Paste your Claude conversation JSON here...'
|
|
64
|
+
};
|
|
65
|
+
case 'gemini':
|
|
66
|
+
return {
|
|
67
|
+
title: 'Connect Gemini',
|
|
68
|
+
instructions: 'Export your Gemini (Google AI) conversations and paste the data below.',
|
|
69
|
+
placeholder: 'Paste your Gemini conversation JSON here...'
|
|
70
|
+
};
|
|
71
|
+
case 'grok':
|
|
72
|
+
return {
|
|
73
|
+
title: 'Connect Grok',
|
|
74
|
+
instructions: 'Export your Grok conversations from X/Twitter and paste the data below.',
|
|
75
|
+
placeholder: 'Paste your Grok conversation JSON here...'
|
|
76
|
+
};
|
|
77
|
+
default:
|
|
78
|
+
return {
|
|
79
|
+
title: `Connect ${platformName}`,
|
|
80
|
+
instructions: 'Paste your conversation data below or upload a JSON file.',
|
|
81
|
+
placeholder: 'Paste your conversation JSON here...'
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const {
|
|
86
|
+
title,
|
|
87
|
+
instructions,
|
|
88
|
+
placeholder
|
|
89
|
+
} = getInstructions();
|
|
90
|
+
|
|
91
|
+
// Parse conversation data based on platform format
|
|
92
|
+
const parseConversationData = data => {
|
|
93
|
+
try {
|
|
94
|
+
const parsed = JSON.parse(data);
|
|
95
|
+
const conversations = [];
|
|
96
|
+
|
|
97
|
+
// Handle ChatGPT export format
|
|
98
|
+
if (Array.isArray(parsed)) {
|
|
99
|
+
// Array of conversations
|
|
100
|
+
parsed.forEach((conv, index) => {
|
|
101
|
+
const messages = extractMessages(conv);
|
|
102
|
+
if (messages.length > 0) {
|
|
103
|
+
conversations.push({
|
|
104
|
+
conversationId: conv.id || conv.conversation_id || `conv_${index}_${Date.now()}`,
|
|
105
|
+
messages,
|
|
106
|
+
context: {
|
|
107
|
+
title: conv.title || conv.name || `Conversation ${index + 1}`,
|
|
108
|
+
create_time: conv.create_time || conv.created_at,
|
|
109
|
+
update_time: conv.update_time || conv.updated_at
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
} else if (parsed.conversations && Array.isArray(parsed.conversations)) {
|
|
115
|
+
// ChatGPT export with conversations array
|
|
116
|
+
parsed.conversations.forEach((conv, index) => {
|
|
117
|
+
const messages = extractMessages(conv);
|
|
118
|
+
if (messages.length > 0) {
|
|
119
|
+
conversations.push({
|
|
120
|
+
conversationId: conv.id || `conv_${index}_${Date.now()}`,
|
|
121
|
+
messages,
|
|
122
|
+
context: {
|
|
123
|
+
title: conv.title || `Conversation ${index + 1}`,
|
|
124
|
+
create_time: conv.create_time,
|
|
125
|
+
update_time: conv.update_time
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
} else if (parsed.mapping || parsed.messages) {
|
|
131
|
+
// Single conversation format
|
|
132
|
+
const messages = extractMessages(parsed);
|
|
133
|
+
if (messages.length > 0) {
|
|
134
|
+
conversations.push({
|
|
135
|
+
conversationId: parsed.id || `conv_${Date.now()}`,
|
|
136
|
+
messages,
|
|
137
|
+
context: {
|
|
138
|
+
title: parsed.title || 'Imported Conversation',
|
|
139
|
+
create_time: parsed.create_time,
|
|
140
|
+
update_time: parsed.update_time
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
// Try to handle as a single object with message array
|
|
146
|
+
const messages = extractMessages(parsed);
|
|
147
|
+
if (messages.length > 0) {
|
|
148
|
+
conversations.push({
|
|
149
|
+
conversationId: `conv_${Date.now()}`,
|
|
150
|
+
messages,
|
|
151
|
+
context: {
|
|
152
|
+
title: parsed.title || 'Imported Conversation'
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return conversations;
|
|
158
|
+
} catch (e) {
|
|
159
|
+
console.error('Error parsing conversation data:', e);
|
|
160
|
+
throw new Error('Invalid JSON format. Please check your data and try again.');
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
// Extract messages from various formats
|
|
165
|
+
const extractMessages = conv => {
|
|
166
|
+
const messages = [];
|
|
167
|
+
|
|
168
|
+
// ChatGPT mapping format
|
|
169
|
+
if (conv.mapping) {
|
|
170
|
+
Object.values(conv.mapping).forEach((node, index) => {
|
|
171
|
+
var _node$message;
|
|
172
|
+
if (node !== null && node !== void 0 && (_node$message = node.message) !== null && _node$message !== void 0 && (_node$message = _node$message.content) !== null && _node$message !== void 0 && _node$message.parts) {
|
|
173
|
+
const content = node.message.content.parts.join('\n');
|
|
174
|
+
if (content.trim()) {
|
|
175
|
+
var _node$message$author;
|
|
176
|
+
messages.push({
|
|
177
|
+
id: node.message.id || `msg_${index}`,
|
|
178
|
+
role: ((_node$message$author = node.message.author) === null || _node$message$author === void 0 ? void 0 : _node$message$author.role) || 'unknown',
|
|
179
|
+
content,
|
|
180
|
+
timestamp: node.message.create_time ? new Date(node.message.create_time * 1000).toISOString() : undefined
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Direct messages array
|
|
188
|
+
if (conv.messages && Array.isArray(conv.messages)) {
|
|
189
|
+
conv.messages.forEach((msg, index) => {
|
|
190
|
+
var _msg$content;
|
|
191
|
+
const content = msg.content || msg.text || msg.message || '';
|
|
192
|
+
if (typeof content === 'string' && content.trim()) {
|
|
193
|
+
messages.push({
|
|
194
|
+
id: msg.id || `msg_${index}`,
|
|
195
|
+
role: msg.role || msg.author || 'user',
|
|
196
|
+
content,
|
|
197
|
+
timestamp: msg.timestamp || msg.created_at
|
|
198
|
+
});
|
|
199
|
+
} else if ((_msg$content = msg.content) !== null && _msg$content !== void 0 && _msg$content.parts) {
|
|
200
|
+
messages.push({
|
|
201
|
+
id: msg.id || `msg_${index}`,
|
|
202
|
+
role: msg.role || 'user',
|
|
203
|
+
content: msg.content.parts.join('\n'),
|
|
204
|
+
timestamp: msg.timestamp
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Claude format
|
|
211
|
+
if (conv.chat_messages && Array.isArray(conv.chat_messages)) {
|
|
212
|
+
conv.chat_messages.forEach((msg, index) => {
|
|
213
|
+
if (msg.text || msg.content) {
|
|
214
|
+
messages.push({
|
|
215
|
+
id: msg.uuid || `msg_${index}`,
|
|
216
|
+
role: msg.sender === 'human' ? 'user' : 'assistant',
|
|
217
|
+
content: msg.text || msg.content,
|
|
218
|
+
timestamp: msg.created_at
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
return messages;
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// Handle file selection
|
|
227
|
+
const handleFilePick = async () => {
|
|
228
|
+
if (!FILE_UPLOAD_AVAILABLE) {
|
|
229
|
+
setError('File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
setError(null);
|
|
234
|
+
const {
|
|
235
|
+
pick,
|
|
236
|
+
types
|
|
237
|
+
} = DocumentPicker;
|
|
238
|
+
const result = await pick({
|
|
239
|
+
type: [types.json, types.plainText, types.allFiles]
|
|
240
|
+
});
|
|
241
|
+
if (result && result[0]) {
|
|
242
|
+
const file = result[0];
|
|
243
|
+
setSelectedFileName(file.name || 'Selected file');
|
|
244
|
+
|
|
245
|
+
// Read file content
|
|
246
|
+
let content;
|
|
247
|
+
if (file.uri.startsWith('content://')) {
|
|
248
|
+
// Android content URI
|
|
249
|
+
content = await RNFS.readFile(file.uri, 'utf8');
|
|
250
|
+
} else {
|
|
251
|
+
content = await RNFS.readFile(file.uri, 'utf8');
|
|
252
|
+
}
|
|
253
|
+
setFileContent(content);
|
|
254
|
+
setPastedData(content);
|
|
255
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
|
|
256
|
+
}
|
|
257
|
+
} catch (err) {
|
|
258
|
+
if (err.code !== 'DOCUMENT_PICKER_CANCELED') {
|
|
259
|
+
console.error('File pick error:', err);
|
|
260
|
+
setError('Failed to read file. Please try again or paste data manually.');
|
|
261
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// Submit data to backend
|
|
267
|
+
const handleSubmit = async () => {
|
|
268
|
+
const dataToProcess = inputMode === 'file' && fileContent ? fileContent : pastedData;
|
|
269
|
+
if (!dataToProcess.trim()) {
|
|
270
|
+
setError('Please paste or upload conversation data first.');
|
|
271
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
setIsLoading(true);
|
|
275
|
+
setError(null);
|
|
276
|
+
try {
|
|
277
|
+
// Parse the conversation data
|
|
278
|
+
const conversations = parseConversationData(dataToProcess);
|
|
279
|
+
if (conversations.length === 0) {
|
|
280
|
+
throw new Error('No valid conversations found in the data. Please check the format.');
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Get auth token
|
|
284
|
+
const authToken = (await _asyncStorage.default.getItem('onairos_jwt_token')) || (await _asyncStorage.default.getItem('enoch_token')) || (await _asyncStorage.default.getItem('auth_token'));
|
|
285
|
+
if (!authToken) {
|
|
286
|
+
throw new Error('Authentication required. Please sign in first.');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// Send each conversation to backend
|
|
290
|
+
const mobilePlatform = `mobile-${platform}`;
|
|
291
|
+
let successCount = 0;
|
|
292
|
+
for (const conversation of conversations) {
|
|
293
|
+
try {
|
|
294
|
+
const response = await fetch(`${_api.API_CONFIG.BASE_URL}/llm-data/store`, {
|
|
295
|
+
method: 'POST',
|
|
296
|
+
headers: {
|
|
297
|
+
'Content-Type': 'application/json',
|
|
298
|
+
'Authorization': `Bearer ${authToken}`
|
|
299
|
+
},
|
|
300
|
+
body: JSON.stringify({
|
|
301
|
+
platform: mobilePlatform,
|
|
302
|
+
conversationData: {
|
|
303
|
+
conversationId: conversation.conversationId,
|
|
304
|
+
messages: conversation.messages,
|
|
305
|
+
context: conversation.context,
|
|
306
|
+
mobileMetadata: {
|
|
307
|
+
platform: _reactNative.Platform.OS,
|
|
308
|
+
appVersion: '1.0.0',
|
|
309
|
+
osVersion: _reactNative.Platform.Version,
|
|
310
|
+
isOfflineSync: false
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
memoryType: 'conversation',
|
|
314
|
+
metadata: {
|
|
315
|
+
source: 'mobile_app_import',
|
|
316
|
+
importedAt: new Date().toISOString(),
|
|
317
|
+
originalPlatform: platform
|
|
318
|
+
}
|
|
319
|
+
})
|
|
320
|
+
});
|
|
321
|
+
if (response.ok) {
|
|
322
|
+
successCount++;
|
|
323
|
+
} else {
|
|
324
|
+
const errorText = await response.text();
|
|
325
|
+
console.error(`Failed to store conversation ${conversation.conversationId}:`, errorText);
|
|
326
|
+
}
|
|
327
|
+
} catch (convError) {
|
|
328
|
+
console.error(`Error storing conversation:`, convError);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
if (successCount > 0) {
|
|
332
|
+
// Store connection status locally
|
|
333
|
+
await _asyncStorage.default.setItem(`@onairos:llm_connected:${platform}`, JSON.stringify({
|
|
334
|
+
connected: true,
|
|
335
|
+
platform,
|
|
336
|
+
conversationsCount: successCount,
|
|
337
|
+
lastSyncAt: new Date().toISOString()
|
|
338
|
+
}));
|
|
339
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.SUCCESS);
|
|
340
|
+
_reactNative.Alert.alert('Success! 🎉', `Successfully imported ${successCount} conversation${successCount > 1 ? 's' : ''} from ${platformName}.`, [{
|
|
341
|
+
text: 'OK',
|
|
342
|
+
onPress: () => onSuccess(platform)
|
|
343
|
+
}]);
|
|
344
|
+
} else {
|
|
345
|
+
throw new Error('Failed to import any conversations. Please check your data format.');
|
|
346
|
+
}
|
|
347
|
+
} catch (err) {
|
|
348
|
+
console.error('Submit error:', err);
|
|
349
|
+
setError(err.message || 'Failed to import data. Please try again.');
|
|
350
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
|
|
351
|
+
} finally {
|
|
352
|
+
setIsLoading(false);
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
// Reset state when modal closes
|
|
357
|
+
const handleClose = () => {
|
|
358
|
+
setPastedData('');
|
|
359
|
+
setFileContent(null);
|
|
360
|
+
setSelectedFileName(null);
|
|
361
|
+
setError(null);
|
|
362
|
+
setInputMode('paste');
|
|
363
|
+
onClose();
|
|
364
|
+
};
|
|
365
|
+
return /*#__PURE__*/_react.default.createElement(_reactNative.Modal, {
|
|
366
|
+
visible: visible,
|
|
367
|
+
animationType: "slide",
|
|
368
|
+
presentationStyle: "pageSheet",
|
|
369
|
+
onRequestClose: handleClose
|
|
370
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.KeyboardAvoidingView, {
|
|
371
|
+
style: styles.container,
|
|
372
|
+
behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : 'height'
|
|
373
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
374
|
+
style: styles.header
|
|
375
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
376
|
+
style: styles.closeButton,
|
|
377
|
+
onPress: handleClose
|
|
378
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
379
|
+
style: styles.closeButtonText
|
|
380
|
+
}, "Cancel")), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
381
|
+
style: styles.headerTitle
|
|
382
|
+
}, title), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
383
|
+
style: styles.closeButton
|
|
384
|
+
})), /*#__PURE__*/_react.default.createElement(_reactNative.ScrollView, {
|
|
385
|
+
style: styles.content,
|
|
386
|
+
contentContainerStyle: styles.contentContainer,
|
|
387
|
+
keyboardShouldPersistTaps: "handled"
|
|
388
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
389
|
+
style: styles.instructionsContainer
|
|
390
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
391
|
+
style: styles.instructionsText
|
|
392
|
+
}, instructions)), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
393
|
+
style: styles.tabContainer
|
|
394
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
395
|
+
style: [styles.tab, inputMode === 'paste' && styles.tabActive],
|
|
396
|
+
onPress: () => {
|
|
397
|
+
setInputMode('paste');
|
|
398
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
|
|
399
|
+
}
|
|
400
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
401
|
+
style: [styles.tabText, inputMode === 'paste' && styles.tabTextActive]
|
|
402
|
+
}, "Paste Data")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
403
|
+
style: [styles.tab, inputMode === 'file' && styles.tabActive, !FILE_UPLOAD_AVAILABLE && styles.tabDisabled],
|
|
404
|
+
onPress: () => {
|
|
405
|
+
if (FILE_UPLOAD_AVAILABLE) {
|
|
406
|
+
setInputMode('file');
|
|
407
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.BUTTON_PRESS);
|
|
408
|
+
} else {
|
|
409
|
+
setError('File upload requires additional dependencies. Please paste data instead.');
|
|
410
|
+
(0, _haptics.triggerHaptic)(_haptics.HapticType.ERROR);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
414
|
+
style: [styles.tabText, inputMode === 'file' && styles.tabTextActive, !FILE_UPLOAD_AVAILABLE && styles.tabTextDisabled]
|
|
415
|
+
}, "Upload File ", !FILE_UPLOAD_AVAILABLE && '(N/A)'))), inputMode === 'paste' ? /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
416
|
+
style: styles.inputContainer
|
|
417
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
|
|
418
|
+
style: styles.textInput,
|
|
419
|
+
multiline: true,
|
|
420
|
+
placeholder: placeholder,
|
|
421
|
+
placeholderTextColor: _theme.COLORS.grey400,
|
|
422
|
+
value: pastedData,
|
|
423
|
+
onChangeText: setPastedData,
|
|
424
|
+
textAlignVertical: "top",
|
|
425
|
+
autoCapitalize: "none",
|
|
426
|
+
autoCorrect: false
|
|
427
|
+
})) : /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
428
|
+
style: styles.fileInputContainer
|
|
429
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
430
|
+
style: styles.filePickButton,
|
|
431
|
+
onPress: handleFilePick
|
|
432
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
433
|
+
style: styles.filePickIcon
|
|
434
|
+
}, "\uD83D\uDCC1"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
435
|
+
style: styles.filePickText
|
|
436
|
+
}, selectedFileName || 'Tap to select a file')), selectedFileName && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
437
|
+
style: styles.fileSelectedContainer
|
|
438
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
439
|
+
style: styles.fileSelectedText
|
|
440
|
+
}, "\u2713 ", selectedFileName))), error && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
441
|
+
style: styles.errorContainer
|
|
442
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
443
|
+
style: styles.errorText
|
|
444
|
+
}, error)), pastedData.length > 0 && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
445
|
+
style: styles.previewContainer
|
|
446
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
447
|
+
style: styles.previewTitle
|
|
448
|
+
}, "Data Preview"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
449
|
+
style: styles.previewText,
|
|
450
|
+
numberOfLines: 5
|
|
451
|
+
}, pastedData.substring(0, 500), pastedData.length > 500 ? '...' : ''), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
452
|
+
style: styles.previewInfo
|
|
453
|
+
}, pastedData.length.toLocaleString(), " characters"))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
454
|
+
style: styles.footer
|
|
455
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
|
|
456
|
+
style: [styles.submitButton, (!pastedData.trim() || isLoading) && styles.submitButtonDisabled],
|
|
457
|
+
onPress: handleSubmit,
|
|
458
|
+
disabled: !pastedData.trim() || isLoading
|
|
459
|
+
}, isLoading ? /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
|
|
460
|
+
color: "#FFFFFF",
|
|
461
|
+
size: "small"
|
|
462
|
+
}) : /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
|
|
463
|
+
style: styles.submitButtonText
|
|
464
|
+
}, "Import Conversations")))));
|
|
465
|
+
};
|
|
466
|
+
const styles = _reactNative.StyleSheet.create({
|
|
467
|
+
container: {
|
|
468
|
+
flex: 1,
|
|
469
|
+
backgroundColor: _theme.COLORS.surface
|
|
470
|
+
},
|
|
471
|
+
header: {
|
|
472
|
+
flexDirection: 'row',
|
|
473
|
+
alignItems: 'center',
|
|
474
|
+
justifyContent: 'space-between',
|
|
475
|
+
paddingHorizontal: 16,
|
|
476
|
+
paddingTop: _reactNative.Platform.OS === 'ios' ? 12 : 16,
|
|
477
|
+
paddingBottom: 12,
|
|
478
|
+
borderBottomWidth: 1,
|
|
479
|
+
borderBottomColor: '#E5E7EB' // grey200
|
|
480
|
+
},
|
|
481
|
+
headerTitle: {
|
|
482
|
+
fontSize: 17,
|
|
483
|
+
fontWeight: '600',
|
|
484
|
+
color: _theme.COLORS.grey800,
|
|
485
|
+
fontFamily: 'IBM Plex Sans'
|
|
486
|
+
},
|
|
487
|
+
closeButton: {
|
|
488
|
+
width: 60
|
|
489
|
+
},
|
|
490
|
+
closeButtonText: {
|
|
491
|
+
fontSize: 16,
|
|
492
|
+
color: '#3B82F6',
|
|
493
|
+
fontFamily: 'Inter'
|
|
494
|
+
},
|
|
495
|
+
content: {
|
|
496
|
+
flex: 1
|
|
497
|
+
},
|
|
498
|
+
contentContainer: {
|
|
499
|
+
padding: 20,
|
|
500
|
+
paddingBottom: 40
|
|
501
|
+
},
|
|
502
|
+
instructionsContainer: {
|
|
503
|
+
backgroundColor: '#F0F9FF',
|
|
504
|
+
borderRadius: 12,
|
|
505
|
+
padding: 16,
|
|
506
|
+
marginBottom: 20
|
|
507
|
+
},
|
|
508
|
+
instructionsText: {
|
|
509
|
+
fontSize: 14,
|
|
510
|
+
lineHeight: 20,
|
|
511
|
+
color: '#0369A1',
|
|
512
|
+
fontFamily: 'Inter'
|
|
513
|
+
},
|
|
514
|
+
tabContainer: {
|
|
515
|
+
flexDirection: 'row',
|
|
516
|
+
backgroundColor: '#F3F4F6',
|
|
517
|
+
// grey100
|
|
518
|
+
borderRadius: 10,
|
|
519
|
+
padding: 4,
|
|
520
|
+
marginBottom: 20
|
|
521
|
+
},
|
|
522
|
+
tab: {
|
|
523
|
+
flex: 1,
|
|
524
|
+
paddingVertical: 10,
|
|
525
|
+
borderRadius: 8,
|
|
526
|
+
alignItems: 'center'
|
|
527
|
+
},
|
|
528
|
+
tabActive: {
|
|
529
|
+
backgroundColor: '#FFFFFF',
|
|
530
|
+
shadowColor: '#000',
|
|
531
|
+
shadowOffset: {
|
|
532
|
+
width: 0,
|
|
533
|
+
height: 1
|
|
534
|
+
},
|
|
535
|
+
shadowOpacity: 0.1,
|
|
536
|
+
shadowRadius: 2,
|
|
537
|
+
elevation: 2
|
|
538
|
+
},
|
|
539
|
+
tabText: {
|
|
540
|
+
fontSize: 14,
|
|
541
|
+
fontWeight: '500',
|
|
542
|
+
color: _theme.COLORS.grey500,
|
|
543
|
+
fontFamily: 'Inter'
|
|
544
|
+
},
|
|
545
|
+
tabTextActive: {
|
|
546
|
+
color: _theme.COLORS.grey800
|
|
547
|
+
},
|
|
548
|
+
tabDisabled: {
|
|
549
|
+
opacity: 0.5
|
|
550
|
+
},
|
|
551
|
+
tabTextDisabled: {
|
|
552
|
+
color: _theme.COLORS.grey400
|
|
553
|
+
},
|
|
554
|
+
inputContainer: {
|
|
555
|
+
marginBottom: 20
|
|
556
|
+
},
|
|
557
|
+
textInput: {
|
|
558
|
+
backgroundColor: '#FFFFFF',
|
|
559
|
+
borderWidth: 1,
|
|
560
|
+
borderColor: _theme.COLORS.grey300,
|
|
561
|
+
borderRadius: 12,
|
|
562
|
+
padding: 16,
|
|
563
|
+
minHeight: 200,
|
|
564
|
+
fontSize: 14,
|
|
565
|
+
fontFamily: _reactNative.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
|
|
566
|
+
color: _theme.COLORS.grey800
|
|
567
|
+
},
|
|
568
|
+
fileInputContainer: {
|
|
569
|
+
marginBottom: 20
|
|
570
|
+
},
|
|
571
|
+
filePickButton: {
|
|
572
|
+
backgroundColor: '#FFFFFF',
|
|
573
|
+
borderWidth: 2,
|
|
574
|
+
borderColor: _theme.COLORS.grey300,
|
|
575
|
+
borderStyle: 'dashed',
|
|
576
|
+
borderRadius: 12,
|
|
577
|
+
padding: 40,
|
|
578
|
+
alignItems: 'center',
|
|
579
|
+
justifyContent: 'center'
|
|
580
|
+
},
|
|
581
|
+
filePickIcon: {
|
|
582
|
+
fontSize: 40,
|
|
583
|
+
marginBottom: 12
|
|
584
|
+
},
|
|
585
|
+
filePickText: {
|
|
586
|
+
fontSize: 15,
|
|
587
|
+
color: _theme.COLORS.grey600,
|
|
588
|
+
fontFamily: 'Inter'
|
|
589
|
+
},
|
|
590
|
+
fileSelectedContainer: {
|
|
591
|
+
marginTop: 12,
|
|
592
|
+
backgroundColor: '#F0FDF4',
|
|
593
|
+
borderRadius: 8,
|
|
594
|
+
padding: 12
|
|
595
|
+
},
|
|
596
|
+
fileSelectedText: {
|
|
597
|
+
fontSize: 14,
|
|
598
|
+
color: '#166534',
|
|
599
|
+
fontFamily: 'Inter',
|
|
600
|
+
fontWeight: '500'
|
|
601
|
+
},
|
|
602
|
+
errorContainer: {
|
|
603
|
+
backgroundColor: '#FEF2F2',
|
|
604
|
+
borderRadius: 8,
|
|
605
|
+
padding: 12,
|
|
606
|
+
marginBottom: 16
|
|
607
|
+
},
|
|
608
|
+
errorText: {
|
|
609
|
+
fontSize: 14,
|
|
610
|
+
color: '#DC2626',
|
|
611
|
+
fontFamily: 'Inter'
|
|
612
|
+
},
|
|
613
|
+
previewContainer: {
|
|
614
|
+
backgroundColor: '#F3F4F6',
|
|
615
|
+
// grey100
|
|
616
|
+
borderRadius: 12,
|
|
617
|
+
padding: 16
|
|
618
|
+
},
|
|
619
|
+
previewTitle: {
|
|
620
|
+
fontSize: 14,
|
|
621
|
+
fontWeight: '600',
|
|
622
|
+
color: _theme.COLORS.grey800,
|
|
623
|
+
marginBottom: 8,
|
|
624
|
+
fontFamily: 'Inter'
|
|
625
|
+
},
|
|
626
|
+
previewText: {
|
|
627
|
+
fontSize: 12,
|
|
628
|
+
color: _theme.COLORS.grey600,
|
|
629
|
+
fontFamily: _reactNative.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
|
|
630
|
+
lineHeight: 18
|
|
631
|
+
},
|
|
632
|
+
previewInfo: {
|
|
633
|
+
fontSize: 12,
|
|
634
|
+
color: _theme.COLORS.grey500,
|
|
635
|
+
marginTop: 8,
|
|
636
|
+
fontFamily: 'Inter'
|
|
637
|
+
},
|
|
638
|
+
footer: {
|
|
639
|
+
padding: 20,
|
|
640
|
+
paddingBottom: _reactNative.Platform.OS === 'ios' ? 34 : 20,
|
|
641
|
+
borderTopWidth: 1,
|
|
642
|
+
borderTopColor: '#E5E7EB',
|
|
643
|
+
// grey200
|
|
644
|
+
backgroundColor: _theme.COLORS.surface
|
|
645
|
+
},
|
|
646
|
+
submitButton: {
|
|
647
|
+
backgroundColor: '#10B981',
|
|
648
|
+
borderRadius: 12,
|
|
649
|
+
paddingVertical: 16,
|
|
650
|
+
alignItems: 'center',
|
|
651
|
+
justifyContent: 'center'
|
|
652
|
+
},
|
|
653
|
+
submitButtonDisabled: {
|
|
654
|
+
backgroundColor: _theme.COLORS.grey300
|
|
655
|
+
},
|
|
656
|
+
submitButtonText: {
|
|
657
|
+
fontSize: 16,
|
|
658
|
+
fontWeight: '600',
|
|
659
|
+
color: '#FFFFFF',
|
|
660
|
+
fontFamily: 'Inter'
|
|
661
|
+
}
|
|
662
|
+
});
|
|
663
|
+
var _default = exports.default = LLMDataInputModal;
|
|
664
|
+
//# sourceMappingURL=LLMDataInputModal.js.map
|