@adminide-stack/yantra-mobile 12.0.69-alpha.13 → 12.0.69-alpha.15
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/components/GatewayConnector/GatewayConnector.js +2 -2
- package/lib/components/GatewayConnector/GatewayConnector.js.map +1 -1
- package/lib/components/KeyboardComposerDock.js +8 -1
- package/lib/components/KeyboardComposerDock.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js +2 -2
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +2 -2
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/audio-input/MicErrorBoundary.js +2 -2
- package/lib/features/audio-input/MicErrorBoundary.js.map +1 -1
- package/lib/features/canvas/AudioEditorExperience.js +308 -0
- package/lib/features/canvas/AudioEditorExperience.js.map +1 -0
- package/lib/features/canvas/CanvasAgentChatPane.js +310 -0
- package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -0
- package/lib/features/canvas/CanvasBoardsGrid.js +414 -0
- package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -0
- package/lib/features/canvas/CanvasChatResultCard.js +113 -0
- package/lib/features/canvas/CanvasChatResultCard.js.map +1 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js +179 -0
- package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -0
- package/lib/features/canvas/CanvasExperience.js +859 -0
- package/lib/features/canvas/CanvasExperience.js.map +1 -0
- package/lib/features/canvas/CanvasGeneratePanel.js +514 -0
- package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -0
- package/lib/features/canvas/CanvasLibrarySheet.js +355 -0
- package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -0
- package/lib/features/canvas/CanvasLooksPanel.js +184 -0
- package/lib/features/canvas/CanvasLooksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTasksPanel.js +138 -0
- package/lib/features/canvas/CanvasTasksPanel.js.map +1 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js +226 -0
- package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -0
- package/lib/features/canvas/CanvasToolDock.js +423 -0
- package/lib/features/canvas/CanvasToolDock.js.map +1 -0
- package/lib/features/canvas/FrameExtractorExperience.js +242 -0
- package/lib/features/canvas/FrameExtractorExperience.js.map +1 -0
- package/lib/features/canvas/ImageEditorExperience.js +491 -0
- package/lib/features/canvas/ImageEditorExperience.js.map +1 -0
- package/lib/features/canvas/InfluencerStudioExperience.js +288 -0
- package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -0
- package/lib/features/canvas/MoodboardExperience.js +205 -0
- package/lib/features/canvas/MoodboardExperience.js.map +1 -0
- package/lib/features/canvas/NativeCanvasViewer.js +929 -0
- package/lib/features/canvas/NativeCanvasViewer.js.map +1 -0
- package/lib/features/canvas/PromoContextFields.js +150 -0
- package/lib/features/canvas/PromoContextFields.js.map +1 -0
- package/lib/features/canvas/SetStudioExperience.js +323 -0
- package/lib/features/canvas/SetStudioExperience.js.map +1 -0
- package/lib/features/canvas/VideoClipsExperience.js +175 -0
- package/lib/features/canvas/VideoClipsExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditExperience.js +824 -0
- package/lib/features/canvas/VideoEditExperience.js.map +1 -0
- package/lib/features/canvas/VideoEditorExperience.js +3050 -0
- package/lib/features/canvas/VideoEditorExperience.js.map +1 -0
- package/lib/features/canvas/VideoGeneratorExperience.js +415 -0
- package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -0
- package/lib/features/canvas/aiEdit.js +53 -0
- package/lib/features/canvas/aiEdit.js.map +1 -0
- package/lib/features/canvas/canvasAgentChat.js +76 -0
- package/lib/features/canvas/canvasAgentChat.js.map +1 -0
- package/lib/features/canvas/canvasBoardsCatalog.js +59 -0
- package/lib/features/canvas/canvasBoardsCatalog.js.map +1 -0
- package/lib/features/canvas/canvasBoardsSnapshot.js +14 -1
- package/lib/features/canvas/canvasBoardsSnapshot.js.map +1 -1
- package/lib/features/canvas/canvasChatDisplay.js +38 -0
- package/lib/features/canvas/canvasChatDisplay.js.map +1 -0
- package/lib/features/canvas/canvasChatTemplates.js +219 -0
- package/lib/features/canvas/canvasChatTemplates.js.map +1 -0
- package/lib/features/canvas/canvasCore.js +138 -1
- package/lib/features/canvas/canvasCore.js.map +1 -1
- package/lib/features/canvas/canvasEditOps.js +224 -0
- package/lib/features/canvas/canvasEditOps.js.map +1 -0
- package/lib/features/canvas/canvasTasks.js +187 -0
- package/lib/features/canvas/canvasTasks.js.map +1 -0
- package/lib/features/canvas/designPromptTemplates.js +3084 -0
- package/lib/features/canvas/designPromptTemplates.js.map +1 -0
- package/lib/features/canvas/editTools.js +54 -0
- package/lib/features/canvas/editTools.js.map +1 -0
- package/lib/features/canvas/extendVideo.js +5 -0
- package/lib/features/canvas/extendVideo.js.map +1 -0
- package/lib/features/canvas/frameExtract.js +33 -0
- package/lib/features/canvas/frameExtract.js.map +1 -0
- package/lib/features/canvas/generationModels.js +201 -0
- package/lib/features/canvas/generationModels.js.map +1 -0
- package/lib/features/canvas/influencer/influencerPipeline.js +170 -0
- package/lib/features/canvas/influencer/influencerPipeline.js.map +1 -0
- package/lib/features/canvas/influencer/productReel.js +72 -0
- package/lib/features/canvas/influencer/productReel.js.map +1 -0
- package/lib/features/canvas/influencer/reelPlan.js +159 -0
- package/lib/features/canvas/influencer/reelPlan.js.map +1 -0
- package/lib/features/canvas/moodboardCore.js +13 -0
- package/lib/features/canvas/moodboardCore.js.map +1 -0
- package/lib/features/canvas/promoProjectImport.js +99 -0
- package/lib/features/canvas/promoProjectImport.js.map +1 -0
- package/lib/features/canvas/promoVideo.js +312 -0
- package/lib/features/canvas/promoVideo.js.map +1 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -0
- package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -0
- package/lib/features/canvas/sessionIdentity.js +28 -1
- package/lib/features/canvas/sessionIdentity.js.map +1 -1
- package/lib/features/canvas/set/SetViewportWebView.js +133 -0
- package/lib/features/canvas/set/SetViewportWebView.js.map +1 -0
- package/lib/features/canvas/set/cameraPath.js +194 -0
- package/lib/features/canvas/set/cameraPath.js.map +1 -0
- package/lib/features/canvas/set/setProject.js +24 -0
- package/lib/features/canvas/set/setProject.js.map +1 -0
- package/lib/features/canvas/storageLibrary.js +184 -0
- package/lib/features/canvas/storageLibrary.js.map +1 -0
- package/lib/features/canvas/studioCatalog.js +129 -0
- package/lib/features/canvas/studioCatalog.js.map +1 -0
- package/lib/features/canvas/studioLooks.js +189 -0
- package/lib/features/canvas/studioLooks.js.map +1 -0
- package/lib/features/canvas/surfaceIndex.js +63 -1
- package/lib/features/canvas/surfaceIndex.js.map +1 -1
- package/lib/features/canvas/templateImport/invideoNative.js +221 -0
- package/lib/features/canvas/templateImport/invideoNative.js.map +1 -0
- package/lib/features/canvas/templateImport/loadTemplate.js +43 -0
- package/lib/features/canvas/templateImport/loadTemplate.js.map +1 -0
- package/lib/features/canvas/templateImport/renderConfig.js +93 -0
- package/lib/features/canvas/templateImport/renderConfig.js.map +1 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js +134 -0
- package/lib/features/canvas/useStudioCatalogTemplates.js.map +1 -0
- package/lib/features/canvas/video3d.js +109 -0
- package/lib/features/canvas/video3d.js.map +1 -0
- package/lib/features/canvas/videoClips.js +42 -0
- package/lib/features/canvas/videoClips.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +120 -0
- package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js +69 -0
- package/lib/features/canvas/videoEditor/agent/agentLoop.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js +45 -0
- package/lib/features/canvas/videoEditor/agent/brainClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js +129 -0
- package/lib/features/canvas/videoEditor/agent/cutTools.js.map +1 -0
- package/lib/features/canvas/videoEditor/editorModel.js +346 -0
- package/lib/features/canvas/videoEditor/editorModel.js.map +1 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js +214 -0
- package/lib/features/canvas/videoEditor/exportRenderer.js.map +1 -0
- package/lib/features/canvas/videoEditor/filters.js +41 -0
- package/lib/features/canvas/videoEditor/filters.js.map +1 -0
- package/lib/features/canvas/videoEditor/mediaActions.js +57 -0
- package/lib/features/canvas/videoEditor/mediaActions.js.map +1 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js +129 -0
- package/lib/features/canvas/videoEditor/remoteMediaClient.js.map +1 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js +115 -0
- package/lib/features/canvas/videoEditor/solidColorPng.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js +191 -0
- package/lib/features/canvas/videoEditor/videoEditOps.js.map +1 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js +82 -0
- package/lib/features/canvas/videoEditor/videoProjectsStore.js.map +1 -0
- package/lib/features/canvas/videoRenderer.js +8 -0
- package/lib/features/canvas/videoRenderer.js.map +1 -0
- package/lib/features/canvas/withRemoteSafeArea.js +2 -2
- package/lib/features/canvas/withRemoteSafeArea.js.map +1 -1
- package/lib/features/characters/characterStudioProps.js +14 -0
- package/lib/features/characters/characterStudioProps.js.map +1 -0
- package/lib/features/design/DesignEditorExperience.js +643 -0
- package/lib/features/design/DesignEditorExperience.js.map +1 -0
- package/lib/features/design/DesignExperience.js +444 -0
- package/lib/features/design/DesignExperience.js.map +1 -0
- package/lib/features/design/designCore.js +298 -0
- package/lib/features/design/designCore.js.map +1 -0
- package/lib/features/design/designIndex.js +150 -0
- package/lib/features/design/designIndex.js.map +1 -0
- package/lib/features/design/exportDesign.js +133 -0
- package/lib/features/design/exportDesign.js.map +1 -0
- package/lib/features/job-search/ApplicationsPanel.js +907 -0
- package/lib/features/job-search/ApplicationsPanel.js.map +1 -0
- package/lib/features/job-search/ContactsPanel.js +627 -0
- package/lib/features/job-search/ContactsPanel.js.map +1 -0
- package/lib/features/job-search/InsightsPanel.js +299 -0
- package/lib/features/job-search/InsightsPanel.js.map +1 -0
- package/lib/features/job-search/InterviewPanel.js +637 -0
- package/lib/features/job-search/InterviewPanel.js.map +1 -0
- package/lib/features/job-search/JdPastePrompt.js +130 -0
- package/lib/features/job-search/JdPastePrompt.js.map +1 -0
- package/lib/features/job-search/JobCard.js +199 -0
- package/lib/features/job-search/JobCard.js.map +1 -0
- package/lib/features/job-search/JobDetailSheet.js +255 -0
- package/lib/features/job-search/JobDetailSheet.js.map +1 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js +377 -0
- package/lib/features/job-search/JobSearchAgentChatPane.js.map +1 -0
- package/lib/features/job-search/JobSearchExperience.js +1324 -0
- package/lib/features/job-search/JobSearchExperience.js.map +1 -0
- package/lib/features/job-search/JobSearchLocationField.js +231 -0
- package/lib/features/job-search/JobSearchLocationField.js.map +1 -0
- package/lib/features/job-search/ProfilePanel.js +679 -0
- package/lib/features/job-search/ProfilePanel.js.map +1 -0
- package/lib/features/job-search/RepliesPanel.js +344 -0
- package/lib/features/job-search/RepliesPanel.js.map +1 -0
- package/lib/features/job-search/SavedPanel.js +297 -0
- package/lib/features/job-search/SavedPanel.js.map +1 -0
- package/lib/features/job-search/chat/widgetContent.js +29 -0
- package/lib/features/job-search/chat/widgetContent.js.map +1 -0
- package/lib/features/job-search/cvText.js +91 -0
- package/lib/features/job-search/cvText.js.map +1 -0
- package/lib/features/job-search/jobAgentSwipe.js +7 -0
- package/lib/features/job-search/jobAgentSwipe.js.map +1 -0
- package/lib/features/job-search/jobSearchClient.js +184 -0
- package/lib/features/job-search/jobSearchClient.js.map +1 -0
- package/lib/features/job-search/jobSearchExec.js +14 -0
- package/lib/features/job-search/jobSearchExec.js.map +1 -0
- package/lib/features/job-search/jobSearchRuntime.js +50 -0
- package/lib/features/job-search/jobSearchRuntime.js.map +1 -0
- package/lib/features/job-search/jobSearchTheme.js +44 -0
- package/lib/features/job-search/jobSearchTheme.js.map +1 -0
- package/lib/features/job-search/savedJobs.js +85 -0
- package/lib/features/job-search/savedJobs.js.map +1 -0
- package/lib/features/job-search/searchHistory.js +117 -0
- package/lib/features/job-search/searchHistory.js.map +1 -0
- package/lib/features/job-search/types.js +36 -0
- package/lib/features/job-search/types.js.map +1 -0
- package/lib/features/job-search/useJobSearchSession.js +558 -0
- package/lib/features/job-search/useJobSearchSession.js.map +1 -0
- package/lib/features/messaging/ChatComponents.js +529 -0
- package/lib/features/messaging/ChatComponents.js.map +1 -0
- package/lib/features/messaging/ChatInviteDeepLink.js +92 -0
- package/lib/features/messaging/ChatInviteDeepLink.js.map +1 -0
- package/lib/features/messaging/ContactsScreen.js +230 -0
- package/lib/features/messaging/ContactsScreen.js.map +1 -0
- package/lib/features/messaging/ConversationListScreen.js +144 -0
- package/lib/features/messaging/ConversationListScreen.js.map +1 -0
- package/lib/features/messaging/MessageActions.js +283 -0
- package/lib/features/messaging/MessageActions.js.map +1 -0
- package/lib/features/messaging/NativeChatExperience.js +173 -0
- package/lib/features/messaging/NativeChatExperience.js.map +1 -0
- package/lib/features/messaging/RegistrationScreen.js +7 -7
- package/lib/features/messaging/RegistrationScreen.js.map +1 -1
- package/lib/features/messaging/ThreadScreen.js +215 -0
- package/lib/features/messaging/ThreadScreen.js.map +1 -0
- package/lib/features/messaging/chatInviteLink.js +52 -0
- package/lib/features/messaging/chatInviteLink.js.map +1 -0
- package/lib/features/messaging/chatModel.js +278 -0
- package/lib/features/messaging/chatModel.js.map +1 -0
- package/lib/features/messaging/chatOperations.js +107 -1
- package/lib/features/messaging/chatOperations.js.map +1 -1
- package/lib/features/messaging/emojiCatalog.js +36 -0
- package/lib/features/messaging/emojiCatalog.js.map +1 -0
- package/lib/features/messaging/nativeChatChannelQuery.js +27 -0
- package/lib/features/messaging/nativeChatChannelQuery.js.map +1 -0
- package/lib/features/messaging/phoneNumbers.js +52 -1
- package/lib/features/messaging/phoneNumbers.js.map +1 -1
- package/lib/features/messaging/sha256.js +68 -0
- package/lib/features/messaging/sha256.js.map +1 -0
- package/lib/features/messaging/useChatData.js +421 -0
- package/lib/features/messaging/useChatData.js.map +1 -0
- package/lib/features/messaging/useContactMatches.js +231 -0
- package/lib/features/messaging/useContactMatches.js.map +1 -0
- package/lib/features/messaging/usePhoneVerification.js +6 -5
- package/lib/features/messaging/usePhoneVerification.js.map +1 -1
- package/lib/features/messaging/yantraChatOrg.js +8 -3
- package/lib/features/messaging/yantraChatOrg.js.map +1 -1
- package/lib/features/resume/AnnotateModal.js +100 -0
- package/lib/features/resume/AnnotateModal.js.map +1 -0
- package/lib/features/resume/AnnotationBar.js +69 -0
- package/lib/features/resume/AnnotationBar.js.map +1 -0
- package/lib/features/resume/ExportSheet.js +105 -0
- package/lib/features/resume/ExportSheet.js.map +1 -0
- package/lib/features/resume/ResumeAgentChatPane.js +95 -0
- package/lib/features/resume/ResumeAgentChatPane.js.map +1 -0
- package/lib/features/resume/ResumeEditor.js +676 -0
- package/lib/features/resume/ResumeEditor.js.map +1 -0
- package/lib/features/resume/ResumeExperience.js +235 -0
- package/lib/features/resume/ResumeExperience.js.map +1 -0
- package/lib/features/resume/ResumeListPanel.js +262 -0
- package/lib/features/resume/ResumeListPanel.js.map +1 -0
- package/lib/features/resume/ResumeToolbar.js +236 -0
- package/lib/features/resume/ResumeToolbar.js.map +1 -0
- package/lib/features/resume/annotations.js +17 -0
- package/lib/features/resume/annotations.js.map +1 -0
- package/lib/features/resume/documentCss.js +52 -0
- package/lib/features/resume/documentCss.js.map +1 -0
- package/lib/features/resume/draft.js +89 -0
- package/lib/features/resume/draft.js.map +1 -0
- package/lib/features/resume/exportResume.js +43 -0
- package/lib/features/resume/exportResume.js.map +1 -0
- package/lib/features/resume/pickResumePhoto.js +22 -0
- package/lib/features/resume/pickResumePhoto.js.map +1 -0
- package/lib/features/resume/renderResume.js +121 -0
- package/lib/features/resume/renderResume.js.map +1 -0
- package/lib/features/resume/resumeClient.js +69 -0
- package/lib/features/resume/resumeClient.js.map +1 -0
- package/lib/features/resume/resumeExec.js +14 -0
- package/lib/features/resume/resumeExec.js.map +1 -0
- package/lib/features/resume/resumeIndex.js +244 -0
- package/lib/features/resume/resumeIndex.js.map +1 -0
- package/lib/features/resume/resumeRuntime.js +50 -0
- package/lib/features/resume/resumeRuntime.js.map +1 -0
- package/lib/features/resume/resumeTheme.js +34 -0
- package/lib/features/resume/resumeTheme.js.map +1 -0
- package/lib/features/resume/resumeToolbox.js +49 -0
- package/lib/features/resume/resumeToolbox.js.map +1 -0
- package/lib/features/resume/templates.js +90 -0
- package/lib/features/resume/templates.js.map +1 -0
- package/lib/features/resume/types.js +10 -0
- package/lib/features/resume/types.js.map +1 -0
- package/lib/features/resume/useResumeSession.js +183 -0
- package/lib/features/resume/useResumeSession.js.map +1 -0
- package/lib/features/shopping/DealsPanel.js +254 -0
- package/lib/features/shopping/DealsPanel.js.map +1 -0
- package/lib/features/shopping/HistoryPanel.js +147 -0
- package/lib/features/shopping/HistoryPanel.js.map +1 -0
- package/lib/features/shopping/OrdersPanel.js +157 -0
- package/lib/features/shopping/OrdersPanel.js.map +1 -0
- package/lib/features/shopping/ProductCard.js +326 -0
- package/lib/features/shopping/ProductCard.js.map +1 -0
- package/lib/features/shopping/ProductDetailSheet.js +313 -0
- package/lib/features/shopping/ProductDetailSheet.js.map +1 -0
- package/lib/features/shopping/ProductFilterBar.js +153 -0
- package/lib/features/shopping/ProductFilterBar.js.map +1 -0
- package/lib/features/shopping/ProductPhoto.js +27 -0
- package/lib/features/shopping/ProductPhoto.js.map +1 -0
- package/lib/features/shopping/SavedPanel.js +139 -0
- package/lib/features/shopping/SavedPanel.js.map +1 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js +436 -0
- package/lib/features/shopping/ShoppingAgentChatPane.js.map +1 -0
- package/lib/features/shopping/ShoppingExperience.js +888 -0
- package/lib/features/shopping/ShoppingExperience.js.map +1 -0
- package/lib/features/shopping/TrendingSections.js +199 -0
- package/lib/features/shopping/TrendingSections.js.map +1 -0
- package/lib/features/shopping/WatchlistPanel.js +148 -0
- package/lib/features/shopping/WatchlistPanel.js.map +1 -0
- package/lib/features/shopping/catalog.js +238 -0
- package/lib/features/shopping/catalog.js.map +1 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js +175 -0
- package/lib/features/shopping/chat/ShoppingChatResultCard.js.map +1 -0
- package/lib/features/shopping/chat/streamAssistantReply.js +34 -0
- package/lib/features/shopping/chat/streamAssistantReply.js.map +1 -0
- package/lib/features/shopping/chat/widgetContent.js +233 -0
- package/lib/features/shopping/chat/widgetContent.js.map +1 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js +162 -0
- package/lib/features/shopping/hooks/useTrendingProducts.js.map +1 -0
- package/lib/features/shopping/productImage.js +42 -0
- package/lib/features/shopping/productImage.js.map +1 -0
- package/lib/features/shopping/savedProducts.js +84 -0
- package/lib/features/shopping/savedProducts.js.map +1 -0
- package/lib/features/shopping/services/catalogActions.js +166 -0
- package/lib/features/shopping/services/catalogActions.js.map +1 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js +58 -0
- package/lib/features/shopping/services/parsePriceCheckIntent.js.map +1 -0
- package/lib/features/shopping/services/parseShoppingIntent.js +67 -0
- package/lib/features/shopping/services/parseShoppingIntent.js.map +1 -0
- package/lib/features/shopping/services/productAvailability.js +25 -0
- package/lib/features/shopping/services/productAvailability.js.map +1 -0
- package/lib/features/shopping/services/productFilters.js +72 -0
- package/lib/features/shopping/services/productFilters.js.map +1 -0
- package/lib/features/shopping/services/retailerUrl.js +75 -0
- package/lib/features/shopping/services/retailerUrl.js.map +1 -0
- package/lib/features/shopping/services/shoppingChatReply.js +46 -0
- package/lib/features/shopping/services/shoppingChatReply.js.map +1 -0
- package/lib/features/shopping/services/shoppingProductSearch.js +336 -0
- package/lib/features/shopping/services/shoppingProductSearch.js.map +1 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js +41 -0
- package/lib/features/shopping/services/shoppingSearchConnectorClient.js.map +1 -0
- package/lib/features/shopping/shopAgentSwipe.js +7 -0
- package/lib/features/shopping/shopAgentSwipe.js.map +1 -0
- package/lib/features/shopping/shoppingCart.js +116 -0
- package/lib/features/shopping/shoppingCart.js.map +1 -0
- package/lib/features/shopping/shoppingExec.js +14 -0
- package/lib/features/shopping/shoppingExec.js.map +1 -0
- package/lib/features/shopping/shoppingHistoryStore.js +176 -0
- package/lib/features/shopping/shoppingHistoryStore.js.map +1 -0
- package/lib/features/shopping/shoppingRuntime.js +63 -0
- package/lib/features/shopping/shoppingRuntime.js.map +1 -0
- package/lib/features/shopping/timeAgo.js +14 -0
- package/lib/features/shopping/timeAgo.js.map +1 -0
- package/lib/features/shopping/useShoppingSearch.js +262 -0
- package/lib/features/shopping/useShoppingSearch.js.map +1 -0
- package/lib/features/travel/BookHeaderGlow.js +48 -0
- package/lib/features/travel/BookHeaderGlow.js.map +1 -0
- package/lib/features/travel/BookingsPanel.js +29 -0
- package/lib/features/travel/BookingsPanel.js.map +1 -0
- package/lib/features/travel/DiscoverPanel.js +155 -0
- package/lib/features/travel/DiscoverPanel.js.map +1 -0
- package/lib/features/travel/FlightCompareBar.js +86 -0
- package/lib/features/travel/FlightCompareBar.js.map +1 -0
- package/lib/features/travel/FlightDealsBoard.js +100 -0
- package/lib/features/travel/FlightDealsBoard.js.map +1 -0
- package/lib/features/travel/HistoryPanel.js +82 -0
- package/lib/features/travel/HistoryPanel.js.map +1 -0
- package/lib/features/travel/PopularDestinations.js +144 -0
- package/lib/features/travel/PopularDestinations.js.map +1 -0
- package/lib/features/travel/SavedPanel.js +27 -0
- package/lib/features/travel/SavedPanel.js.map +1 -0
- package/lib/features/travel/TravelAgentChatPane.js +303 -0
- package/lib/features/travel/TravelAgentChatPane.js.map +1 -0
- package/lib/features/travel/TravelBookHero.js +425 -0
- package/lib/features/travel/TravelBookHero.js.map +1 -0
- package/lib/features/travel/TravelDatesField.js +234 -0
- package/lib/features/travel/TravelDatesField.js.map +1 -0
- package/lib/features/travel/TravelDetailSheet.js +106 -0
- package/lib/features/travel/TravelDetailSheet.js.map +1 -0
- package/lib/features/travel/TravelExperience.js +624 -0
- package/lib/features/travel/TravelExperience.js.map +1 -0
- package/lib/features/travel/TravelGuestsField.js +85 -0
- package/lib/features/travel/TravelGuestsField.js.map +1 -0
- package/lib/features/travel/TravelLanding.js +318 -0
- package/lib/features/travel/TravelLanding.js.map +1 -0
- package/lib/features/travel/TravelLocationField.js +179 -0
- package/lib/features/travel/TravelLocationField.js.map +1 -0
- package/lib/features/travel/TravelPropertyCard.js +266 -0
- package/lib/features/travel/TravelPropertyCard.js.map +1 -0
- package/lib/features/travel/TravelPropertyPhoto.js +22 -0
- package/lib/features/travel/TravelPropertyPhoto.js.map +1 -0
- package/lib/features/travel/TravelRailFlyout.js +79 -0
- package/lib/features/travel/TravelRailFlyout.js.map +1 -0
- package/lib/features/travel/TravelResultsMap.js +126 -0
- package/lib/features/travel/TravelResultsMap.js.map +1 -0
- package/lib/features/travel/WorkspacePanel.js +148 -0
- package/lib/features/travel/WorkspacePanel.js.map +1 -0
- package/lib/features/travel/appNav.js +244 -0
- package/lib/features/travel/appNav.js.map +1 -0
- package/lib/features/travel/calendarDays.js +50 -0
- package/lib/features/travel/calendarDays.js.map +1 -0
- package/lib/features/travel/catalog.js +72 -0
- package/lib/features/travel/catalog.js.map +1 -0
- package/lib/features/travel/chat/TravelChatResultCard.js +107 -0
- package/lib/features/travel/chat/TravelChatResultCard.js.map +1 -0
- package/lib/features/travel/chat/widgetContent.js +107 -0
- package/lib/features/travel/chat/widgetContent.js.map +1 -0
- package/lib/features/travel/flightDeals.js +65 -0
- package/lib/features/travel/flightDeals.js.map +1 -0
- package/lib/features/travel/mapCoordinates.js +36 -0
- package/lib/features/travel/mapCoordinates.js.map +1 -0
- package/lib/features/travel/parseTravelIntent.js +303 -0
- package/lib/features/travel/parseTravelIntent.js.map +1 -0
- package/lib/features/travel/savedStays.js +66 -0
- package/lib/features/travel/savedStays.js.map +1 -0
- package/lib/features/travel/services/flightDealsBoard.js +111 -0
- package/lib/features/travel/services/flightDealsBoard.js.map +1 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js +42 -0
- package/lib/features/travel/services/flightSearchConnectorClient.js.map +1 -0
- package/lib/features/travel/services/geocodeLocation.js +79 -0
- package/lib/features/travel/services/geocodeLocation.js.map +1 -0
- package/lib/features/travel/services/placePredictions.js +113 -0
- package/lib/features/travel/services/placePredictions.js.map +1 -0
- package/lib/features/travel/services/resolveOriginCity.js +27 -0
- package/lib/features/travel/services/resolveOriginCity.js.map +1 -0
- package/lib/features/travel/services/resortifiConnectorClient.js +76 -0
- package/lib/features/travel/services/resortifiConnectorClient.js.map +1 -0
- package/lib/features/travel/services/travelFlightSearch.js +289 -0
- package/lib/features/travel/services/travelFlightSearch.js.map +1 -0
- package/lib/features/travel/services/travelPropertySearch.js +377 -0
- package/lib/features/travel/services/travelPropertySearch.js.map +1 -0
- package/lib/features/travel/travelAgentSwipe.js +7 -0
- package/lib/features/travel/travelAgentSwipe.js.map +1 -0
- package/lib/features/travel/travelExec.js +14 -0
- package/lib/features/travel/travelExec.js.map +1 -0
- package/lib/features/travel/travelHistoryStore.js +108 -0
- package/lib/features/travel/travelHistoryStore.js.map +1 -0
- package/lib/features/travel/travelRuntime.js +62 -0
- package/lib/features/travel/travelRuntime.js.map +1 -0
- package/lib/features/travel/types.js +9 -0
- package/lib/features/travel/types.js.map +1 -0
- package/lib/features/travel/useTravelSearch.js +330 -0
- package/lib/features/travel/useTravelSearch.js.map +1 -0
- package/lib/features/travel/workspaceContent.js +548 -0
- package/lib/features/travel/workspaceContent.js.map +1 -0
- package/lib/hooks/useObtainSystemToken.js +23 -5
- package/lib/hooks/useObtainSystemToken.js.map +1 -1
- package/lib/hooks/webViewRetentionPolicy.js +1 -0
- package/lib/hooks/webViewRetentionPolicy.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/screens/ChatNative/index.js +8 -2
- package/lib/screens/ChatNative/index.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +3 -3
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Home/components/ChatHistoryLanding.js +32 -32
- package/lib/screens/Home/components/ChatHistoryLanding.js.map +1 -1
- package/lib/screens/WebBuilder/WebViewWithNavigation.js +2 -2
- package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
- package/lib/services/brainQuickReply.js +38 -1
- package/lib/services/brainQuickReply.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {useCallback}from'react';import {useCreateSecretApiTokenMutation,useRevealSecretApiTokenMutation,useRevokeSecretApiTokenMutation,useGetUserSystemTokenQuery}from'common/graphql';import {SecretApiTokenAlgorithm}from'common';import {usePrerequisiteIds}from'./usePrerequisiteIds.js';import {isSystemTokenRowStale,isMissingRs256KeyError,isAlreadyHasSystemTokenError,isMissingVaultSecretError,isJwtExpired}from'./systemTokenJwt.js';var __defProp = Object.defineProperty;
|
|
1
|
+
import {useRef,useCallback}from'react';import {useCreateSecretApiTokenMutation,useRevealSecretApiTokenMutation,useRevokeSecretApiTokenMutation,useGetUserSystemTokenQuery}from'common/graphql';import {SecretApiTokenAlgorithm}from'common';import {usePrerequisiteIds}from'./usePrerequisiteIds.js';import {isSystemTokenRowStale,isMissingRs256KeyError,isAlreadyHasSystemTokenError,isMissingVaultSecretError,isJwtExpired}from'./systemTokenJwt.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
3
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
4
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -20,6 +20,7 @@ function useObtainSystemToken(enabled = true) {
|
|
|
20
20
|
projectId,
|
|
21
21
|
tagId
|
|
22
22
|
} = usePrerequisiteIds();
|
|
23
|
+
const lastError = useRef(null);
|
|
23
24
|
const [createTokenMutation] = useCreateSecretApiTokenMutation();
|
|
24
25
|
const [revealTokenMutation] = useRevealSecretApiTokenMutation();
|
|
25
26
|
const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();
|
|
@@ -49,6 +50,7 @@ function useObtainSystemToken(enabled = true) {
|
|
|
49
50
|
}, [createTokenMutation, orgName, projectId, tagId]);
|
|
50
51
|
const obtainSystemToken = useCallback(async (opts = {}) => {
|
|
51
52
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F;
|
|
53
|
+
lastError.current = null;
|
|
52
54
|
try {
|
|
53
55
|
let tokenId = (_b = (_a = systemTokenData == null ? void 0 : systemTokenData.getUserSystemToken) == null ? void 0 : _a.id) != null ? _b : null;
|
|
54
56
|
let expiresAt = (_d = (_c = systemTokenData == null ? void 0 : systemTokenData.getUserSystemToken) == null ? void 0 : _c.expiresAt) != null ? _d : null;
|
|
@@ -71,10 +73,13 @@ function useObtainSystemToken(enabled = true) {
|
|
|
71
73
|
}
|
|
72
74
|
if (!tokenId) {
|
|
73
75
|
if (!orgName || !projectId || !tagId) {
|
|
76
|
+
const missing = [!orgName && "organization", !projectId && "project", !tagId && "environment"].filter(Boolean).join(", ");
|
|
77
|
+
lastError.current = `Your account is still being set up (${missing} not ready). Try again in a moment.`;
|
|
74
78
|
return null;
|
|
75
79
|
}
|
|
76
80
|
if (!__DEV__ && projectId === "9a8ac704-1040-4836-9b72-48b771ca91b1") {
|
|
77
81
|
console.warn("[useObtainSystemToken] refusing staging mint with testing project UUID");
|
|
82
|
+
lastError.current = "Your account has no project yet. Try again in a moment.";
|
|
78
83
|
return null;
|
|
79
84
|
}
|
|
80
85
|
try {
|
|
@@ -99,13 +104,19 @@ function useObtainSystemToken(enabled = true) {
|
|
|
99
104
|
const refetchResult = await refetchSystemToken().catch(() => null);
|
|
100
105
|
tokenId = (_A = (_z = (_y = refetchResult == null ? void 0 : refetchResult.data) == null ? void 0 : _y.getUserSystemToken) == null ? void 0 : _z.id) != null ? _A : null;
|
|
101
106
|
expiresAt = (_D = (_C = (_B = refetchResult == null ? void 0 : refetchResult.data) == null ? void 0 : _B.getUserSystemToken) == null ? void 0 : _C.expiresAt) != null ? _D : expiresAt;
|
|
102
|
-
if (!tokenId)
|
|
107
|
+
if (!tokenId) {
|
|
108
|
+
lastError.current = "System token exists but could not be loaded.";
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
103
111
|
} else {
|
|
104
112
|
throw createErr;
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
|
-
if (!tokenId)
|
|
116
|
+
if (!tokenId) {
|
|
117
|
+
lastError.current = "The server did not create a system token.";
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
109
120
|
let token = null;
|
|
110
121
|
try {
|
|
111
122
|
const {
|
|
@@ -137,7 +148,10 @@ function useObtainSystemToken(enabled = true) {
|
|
|
137
148
|
createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;
|
|
138
149
|
}
|
|
139
150
|
const newTokenId = (_F = (_E = createData == null ? void 0 : createData.createSecretApiToken) == null ? void 0 : _E.id) != null ? _F : null;
|
|
140
|
-
if (!newTokenId)
|
|
151
|
+
if (!newTokenId) {
|
|
152
|
+
lastError.current = "The server did not recreate the system token.";
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
141
155
|
const {
|
|
142
156
|
data: revealData
|
|
143
157
|
} = await revealTokenMutation({
|
|
@@ -152,18 +166,22 @@ function useObtainSystemToken(enabled = true) {
|
|
|
152
166
|
discardExistingRow: true
|
|
153
167
|
});
|
|
154
168
|
}
|
|
169
|
+
if (!token) lastError.current = "The server returned an empty system token.";
|
|
155
170
|
return token;
|
|
156
171
|
} catch (err) {
|
|
157
172
|
console.error("[useObtainSystemToken] error:", err);
|
|
173
|
+
lastError.current = `System token error: ${err instanceof Error ? err.message : String(err)}`;
|
|
158
174
|
return null;
|
|
159
175
|
}
|
|
160
176
|
}, [systemTokenData, createSystemToken, revealTokenMutation, revokeTokenMutation, refetchSystemToken, orgName, projectId, tagId]);
|
|
161
177
|
const regenerateSystemToken = useCallback(() => obtainSystemToken({
|
|
162
178
|
discardExistingRow: true
|
|
163
179
|
}), [obtainSystemToken]);
|
|
180
|
+
const getLastError = useCallback(() => lastError.current, []);
|
|
164
181
|
return {
|
|
165
182
|
loading,
|
|
166
183
|
obtainSystemToken,
|
|
167
|
-
regenerateSystemToken
|
|
184
|
+
regenerateSystemToken,
|
|
185
|
+
getLastError
|
|
168
186
|
};
|
|
169
187
|
}export{useObtainSystemToken};//# sourceMappingURL=useObtainSystemToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useObtainSystemToken.js","sources":["../../src/hooks/useObtainSystemToken.ts"],"sourcesContent":["/**\n * Mint / reveal the org-scoped system JWT (GetUserSystemToken → RevealSecretApiToken).\n * Same token the webbuilder surface expects as `cdecli_token` / `?token=`.\n *\n * Matches web `useObtainSystemToken`: revoke a stale/rejected row before create\n * (one-per-user), and do not force HS256 — the backend default is HS256 when no\n * RS256 private key is present; forcing HS256 forever re-reveals a JWT signed\n * with a rotated secret.\n */\n\nimport { useCallback } from 'react';\nimport {\n useGetUserSystemTokenQuery,\n useCreateSecretApiTokenMutation,\n useRevealSecretApiTokenMutation,\n useRevokeSecretApiTokenMutation,\n} from 'common/graphql';\nimport { SecretApiTokenAlgorithm } from 'common';\nimport { usePrerequisiteIds } from './usePrerequisiteIds';\nimport {\n isAlreadyHasSystemTokenError,\n isJwtExpired,\n isMissingRs256KeyError,\n isMissingVaultSecretError,\n isSystemTokenRowStale,\n} from './systemTokenJwt';\n\nexport interface ObtainSystemTokenOptions {\n /** Revoke the server row first (dead signature, key rotation). */\n discardExistingRow?: boolean;\n}\n\nexport interface UseObtainSystemTokenResult {\n /** True while the initial GetUserSystemToken query is in flight. */\n loading: boolean;\n /** Mint or reveal the current system token. Returns null on failure. */\n obtainSystemToken: (opts?: ObtainSystemTokenOptions) => Promise<string | null>;\n /** Always revoke + remint. */\n regenerateSystemToken: () => Promise<string | null>;\n}\n\nexport function useObtainSystemToken(enabled = true): UseObtainSystemTokenResult {\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n const [createTokenMutation] = useCreateSecretApiTokenMutation();\n const [revealTokenMutation] = useRevealSecretApiTokenMutation();\n const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();\n const {\n data: systemTokenData,\n loading,\n refetch: refetchSystemToken,\n } = useGetUserSystemTokenQuery({\n skip: !enabled,\n fetchPolicy: 'network-only',\n });\n\n const createSystemToken = useCallback(\n async (algorithm?: SecretApiTokenAlgorithm) => {\n return createTokenMutation({\n variables: {\n input: {\n name: 'System Token',\n expiryInSeconds: 31536000,\n isSystemToken: true,\n environmentTagId: tagId,\n orgName: orgName || 'default',\n projectId: projectId || 'default',\n ...(algorithm ? { algorithm } : {}),\n },\n },\n });\n },\n [createTokenMutation, orgName, projectId, tagId],\n );\n\n const obtainSystemToken = useCallback(\n async (opts: ObtainSystemTokenOptions = {}): Promise<string | null> => {\n try {\n let tokenId: string | null = systemTokenData?.getUserSystemToken?.id ?? null;\n let expiresAt: string | null = systemTokenData?.getUserSystemToken?.expiresAt ?? null;\n\n if (!tokenId) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n\n if (tokenId && (opts.discardExistingRow || isSystemTokenRowStale(expiresAt))) {\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* best-effort — create below surfaces a real conflict */\n }\n tokenId = null;\n expiresAt = null;\n }\n\n if (!tokenId) {\n if (!orgName || !projectId || !tagId) {\n return null;\n }\n if (!__DEV__ && projectId === '9a8ac704-1040-4836-9b72-48b771ca91b1') {\n console.warn('[useObtainSystemToken] refusing staging mint with testing project UUID');\n return null;\n }\n try {\n const { data: createData } = await createSystemToken();\n tokenId = createData?.createSecretApiToken?.id ?? null;\n expiresAt = createData?.createSecretApiToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n const afterCreate = await refetchSystemToken().catch(() => null);\n tokenId = afterCreate?.data?.getUserSystemToken?.id ?? null;\n expiresAt = afterCreate?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n } catch (createErr) {\n if (isMissingRs256KeyError(createErr)) {\n const { data: hsData } = await createSystemToken(SecretApiTokenAlgorithm.Hs256);\n tokenId = hsData?.createSecretApiToken?.id ?? null;\n expiresAt = hsData?.createSecretApiToken?.expiresAt ?? expiresAt;\n } else if (isAlreadyHasSystemTokenError(createErr)) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n if (!tokenId) return null;\n } else {\n throw createErr;\n }\n }\n }\n\n if (!tokenId) return null;\n\n let token: string | null = null;\n try {\n const { data: revealData } = await revealTokenMutation({\n variables: { id: tokenId },\n });\n token = (revealData?.revealSecretApiToken as string) || null;\n } catch (revealErr) {\n const msg = revealErr instanceof Error ? revealErr.message : String(revealErr);\n if (!isMissingVaultSecretError(msg) || !orgName || !projectId || !tagId) {\n throw revealErr;\n }\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* continue with recreation */\n }\n let createData;\n try {\n createData = (await createSystemToken()).data;\n } catch (retryErr) {\n if (!isMissingRs256KeyError(retryErr)) throw retryErr;\n createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;\n }\n const newTokenId = createData?.createSecretApiToken?.id ?? null;\n if (!newTokenId) return null;\n const { data: revealData } = await revealTokenMutation({ variables: { id: newTokenId } });\n token = (revealData?.revealSecretApiToken as string) || null;\n }\n\n if (token && isJwtExpired(token) && !opts.discardExistingRow) {\n return obtainSystemToken({ discardExistingRow: true });\n }\n\n return token;\n } catch (err) {\n console.error('[useObtainSystemToken] error:', err);\n return null;\n }\n },\n [\n systemTokenData,\n createSystemToken,\n revealTokenMutation,\n revokeTokenMutation,\n refetchSystemToken,\n orgName,\n projectId,\n tagId,\n ],\n );\n\n const regenerateSystemToken = useCallback(\n () => obtainSystemToken({ discardExistingRow: true }),\n [obtainSystemToken],\n );\n\n return { loading, obtainSystemToken, regenerateSystemToken };\n}\n\n/**\n * Append `?token=&state=` for SurfaceLoginGate.captureLoginCallback(),\n * or replace existing token/state query params.\n */\nexport function appendSurfaceAuthParams(baseUrl: string, token: string, state = 'mobile-webview'): string {\n try {\n const url = new URL(baseUrl);\n url.searchParams.set('token', token);\n url.searchParams.set('state', state);\n return url.toString();\n } catch {\n const sep = baseUrl.includes('?') ? '&' : '?';\n return `${baseUrl}${sep}token=${encodeURIComponent(token)}&state=${encodeURIComponent(state)}`;\n }\n}\n\n/** Injected before page scripts so SurfaceLoginGate finds cdecli_token immediately. */\nexport function buildCdecliTokenInjection(token: string): string {\n const safe = JSON.stringify(token);\n return `\n(function () {\n try {\n localStorage.setItem('cdecli_token', ${safe});\n sessionStorage.setItem('cdecli_token', ${safe});\n } catch (e) {}\n true;\n})();\ntrue;\n`;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useObtainSystemToken.js","sources":["../../src/hooks/useObtainSystemToken.ts"],"sourcesContent":["/**\n * Mint / reveal the org-scoped system JWT (GetUserSystemToken → RevealSecretApiToken).\n * Same token the webbuilder surface expects as `cdecli_token` / `?token=`.\n *\n * Matches web `useObtainSystemToken`: revoke a stale/rejected row before create\n * (one-per-user), and do not force HS256 — the backend default is HS256 when no\n * RS256 private key is present; forcing HS256 forever re-reveals a JWT signed\n * with a rotated secret.\n */\n\nimport { useCallback, useRef } from 'react';\nimport {\n useGetUserSystemTokenQuery,\n useCreateSecretApiTokenMutation,\n useRevealSecretApiTokenMutation,\n useRevokeSecretApiTokenMutation,\n} from 'common/graphql';\nimport { SecretApiTokenAlgorithm } from 'common';\nimport { usePrerequisiteIds } from './usePrerequisiteIds';\nimport {\n isAlreadyHasSystemTokenError,\n isJwtExpired,\n isMissingRs256KeyError,\n isMissingVaultSecretError,\n isSystemTokenRowStale,\n} from './systemTokenJwt';\n\nexport interface ObtainSystemTokenOptions {\n /** Revoke the server row first (dead signature, key rotation). */\n discardExistingRow?: boolean;\n}\n\nexport interface UseObtainSystemTokenResult {\n /** True while the initial GetUserSystemToken query is in flight. */\n loading: boolean;\n /** Mint or reveal the current system token. Returns null on failure. */\n obtainSystemToken: (opts?: ObtainSystemTokenOptions) => Promise<string | null>;\n /** Always revoke + remint. */\n regenerateSystemToken: () => Promise<string | null>;\n /** Why the last obtainSystemToken() returned null (null when it succeeded). */\n getLastError: () => string | null;\n}\n\nexport function useObtainSystemToken(enabled = true): UseObtainSystemTokenResult {\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n const lastError = useRef<string | null>(null);\n const [createTokenMutation] = useCreateSecretApiTokenMutation();\n const [revealTokenMutation] = useRevealSecretApiTokenMutation();\n const [revokeTokenMutation] = useRevokeSecretApiTokenMutation();\n const {\n data: systemTokenData,\n loading,\n refetch: refetchSystemToken,\n } = useGetUserSystemTokenQuery({\n skip: !enabled,\n fetchPolicy: 'network-only',\n });\n\n const createSystemToken = useCallback(\n async (algorithm?: SecretApiTokenAlgorithm) => {\n return createTokenMutation({\n variables: {\n input: {\n name: 'System Token',\n expiryInSeconds: 31536000,\n isSystemToken: true,\n environmentTagId: tagId,\n orgName: orgName || 'default',\n projectId: projectId || 'default',\n ...(algorithm ? { algorithm } : {}),\n },\n },\n });\n },\n [createTokenMutation, orgName, projectId, tagId],\n );\n\n const obtainSystemToken = useCallback(\n async (opts: ObtainSystemTokenOptions = {}): Promise<string | null> => {\n lastError.current = null;\n try {\n let tokenId: string | null = systemTokenData?.getUserSystemToken?.id ?? null;\n let expiresAt: string | null = systemTokenData?.getUserSystemToken?.expiresAt ?? null;\n\n if (!tokenId) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n\n if (tokenId && (opts.discardExistingRow || isSystemTokenRowStale(expiresAt))) {\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* best-effort — create below surfaces a real conflict */\n }\n tokenId = null;\n expiresAt = null;\n }\n\n if (!tokenId) {\n if (!orgName || !projectId || !tagId) {\n const missing = [!orgName && 'organization', !projectId && 'project', !tagId && 'environment']\n .filter(Boolean)\n .join(', ');\n lastError.current = `Your account is still being set up (${missing} not ready). Try again in a moment.`;\n return null;\n }\n if (!__DEV__ && projectId === '9a8ac704-1040-4836-9b72-48b771ca91b1') {\n console.warn('[useObtainSystemToken] refusing staging mint with testing project UUID');\n lastError.current = 'Your account has no project yet. Try again in a moment.';\n return null;\n }\n try {\n const { data: createData } = await createSystemToken();\n tokenId = createData?.createSecretApiToken?.id ?? null;\n expiresAt = createData?.createSecretApiToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n const afterCreate = await refetchSystemToken().catch(() => null);\n tokenId = afterCreate?.data?.getUserSystemToken?.id ?? null;\n expiresAt = afterCreate?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n }\n } catch (createErr) {\n if (isMissingRs256KeyError(createErr)) {\n const { data: hsData } = await createSystemToken(SecretApiTokenAlgorithm.Hs256);\n tokenId = hsData?.createSecretApiToken?.id ?? null;\n expiresAt = hsData?.createSecretApiToken?.expiresAt ?? expiresAt;\n } else if (isAlreadyHasSystemTokenError(createErr)) {\n const refetchResult = await refetchSystemToken().catch(() => null);\n tokenId = refetchResult?.data?.getUserSystemToken?.id ?? null;\n expiresAt = refetchResult?.data?.getUserSystemToken?.expiresAt ?? expiresAt;\n if (!tokenId) {\n lastError.current = 'System token exists but could not be loaded.';\n return null;\n }\n } else {\n throw createErr;\n }\n }\n }\n\n if (!tokenId) {\n lastError.current = 'The server did not create a system token.';\n return null;\n }\n\n let token: string | null = null;\n try {\n const { data: revealData } = await revealTokenMutation({\n variables: { id: tokenId },\n });\n token = (revealData?.revealSecretApiToken as string) || null;\n } catch (revealErr) {\n const msg = revealErr instanceof Error ? revealErr.message : String(revealErr);\n if (!isMissingVaultSecretError(msg) || !orgName || !projectId || !tagId) {\n throw revealErr;\n }\n try {\n await revokeTokenMutation({ variables: { id: tokenId } });\n } catch {\n /* continue with recreation */\n }\n let createData;\n try {\n createData = (await createSystemToken()).data;\n } catch (retryErr) {\n if (!isMissingRs256KeyError(retryErr)) throw retryErr;\n createData = (await createSystemToken(SecretApiTokenAlgorithm.Hs256)).data;\n }\n const newTokenId = createData?.createSecretApiToken?.id ?? null;\n if (!newTokenId) {\n lastError.current = 'The server did not recreate the system token.';\n return null;\n }\n const { data: revealData } = await revealTokenMutation({ variables: { id: newTokenId } });\n token = (revealData?.revealSecretApiToken as string) || null;\n }\n\n if (token && isJwtExpired(token) && !opts.discardExistingRow) {\n return obtainSystemToken({ discardExistingRow: true });\n }\n\n if (!token) lastError.current = 'The server returned an empty system token.';\n return token;\n } catch (err) {\n console.error('[useObtainSystemToken] error:', err);\n lastError.current = `System token error: ${err instanceof Error ? err.message : String(err)}`;\n return null;\n }\n },\n [\n systemTokenData,\n createSystemToken,\n revealTokenMutation,\n revokeTokenMutation,\n refetchSystemToken,\n orgName,\n projectId,\n tagId,\n ],\n );\n\n const regenerateSystemToken = useCallback(\n () => obtainSystemToken({ discardExistingRow: true }),\n [obtainSystemToken],\n );\n\n const getLastError = useCallback(() => lastError.current, []);\n\n return { loading, obtainSystemToken, regenerateSystemToken, getLastError };\n}\n\n/**\n * Append `?token=&state=` for SurfaceLoginGate.captureLoginCallback(),\n * or replace existing token/state query params.\n */\nexport function appendSurfaceAuthParams(baseUrl: string, token: string, state = 'mobile-webview'): string {\n try {\n const url = new URL(baseUrl);\n url.searchParams.set('token', token);\n url.searchParams.set('state', state);\n return url.toString();\n } catch {\n const sep = baseUrl.includes('?') ? '&' : '?';\n return `${baseUrl}${sep}token=${encodeURIComponent(token)}&state=${encodeURIComponent(state)}`;\n }\n}\n\n/** Injected before page scripts so SurfaceLoginGate finds cdecli_token immediately. */\nexport function buildCdecliTokenInjection(token: string): string {\n const safe = JSON.stringify(token);\n return `\n(function () {\n try {\n localStorage.setItem('cdecli_token', ${safe});\n sessionStorage.setItem('cdecli_token', ${safe});\n } catch (e) {}\n true;\n})();\ntrue;\n`;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webViewRetentionPolicy.js","sources":["../../src/hooks/webViewRetentionPolicy.ts"],"sourcesContent":["/**\n * When may a WebView stay mounted?\n *\n * Every live `<WebView>` is a WKWebView with its own out-of-process WebContent\n * renderer, JS heap and layer backing store - 50-150MB each, and more for the\n * WebGL and map surfaces. React Navigation v7 keeps every visited screen\n * mounted, and nothing in this app ever unmounted one, so a user who opened Web\n * Builder, the travel map and the 3D set viewport was holding all three alive\n * for the rest of the session.\n *\n * That is what makes iOS evict the whole app seconds after it is backgrounded on\n * a 6GB device (measured 2026-09-18: survives ~1.5s backgrounded, gone by 5s,\n * and the relaunch loses the user's place). Releasing a WebView costs a reload\n * when the user comes back; being evicted costs them EVERYTHING, so releasing is\n * strictly the better trade.\n *\n * `clearCache()` is NOT a substitute: it frees the HTTP cache and leaves the\n * renderer process running.\n *\n * Kept dependency-free (no react-native import) so the policy is unit-testable\n * without the RN transform.\n */\nexport interface IWebViewRetentionInput {\n /** Is the hosting screen the one on top? */\n isFocused: boolean;\n /** Is the app itself in the foreground? */\n isAppActive: boolean;\n /**\n * Release as soon as the screen is blurred, not just when the app\n * backgrounds. Right for surfaces that rebuild cheaply from their own source\n * (a map, a 3D viewport); wrong for one the user is actively working in,\n * where a reload on every navigation would be hostile.\n */\n releaseOnBlur: boolean;\n}\n\n/**\n * Backgrounding ALWAYS releases: that is the exact moment the footprint decides\n * whether iOS evicts us, and a backgrounded WebView is showing nobody anything.\n */\nexport function shouldRenderWebView({ isFocused, isAppActive, releaseOnBlur }: IWebViewRetentionInput): boolean {\n if (!isAppActive) return false;\n if (releaseOnBlur && !isFocused) return false;\n return true;\n}\n"],"names":[],"mappings":"AAwCO,SAAS,mBAAoB,CAAA;AAAA,EAClC,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAoC,EAAA;AAClC,EAAI,IAAA,CAAC,aAAoB,OAAA,KAAA;
|
|
1
|
+
{"version":3,"file":"webViewRetentionPolicy.js","sources":["../../src/hooks/webViewRetentionPolicy.ts"],"sourcesContent":["/**\n * When may a WebView stay mounted?\n *\n * Every live `<WebView>` is a WKWebView with its own out-of-process WebContent\n * renderer, JS heap and layer backing store - 50-150MB each, and more for the\n * WebGL and map surfaces. React Navigation v7 keeps every visited screen\n * mounted, and nothing in this app ever unmounted one, so a user who opened Web\n * Builder, the travel map and the 3D set viewport was holding all three alive\n * for the rest of the session.\n *\n * That is what makes iOS evict the whole app seconds after it is backgrounded on\n * a 6GB device (measured 2026-09-18: survives ~1.5s backgrounded, gone by 5s,\n * and the relaunch loses the user's place). Releasing a WebView costs a reload\n * when the user comes back; being evicted costs them EVERYTHING, so releasing is\n * strictly the better trade.\n *\n * `clearCache()` is NOT a substitute: it frees the HTTP cache and leaves the\n * renderer process running.\n *\n * Kept dependency-free (no react-native import) so the policy is unit-testable\n * without the RN transform.\n */\nexport interface IWebViewRetentionInput {\n /** Is the hosting screen the one on top? */\n isFocused: boolean;\n /** Is the app itself in the foreground? */\n isAppActive: boolean;\n /**\n * Release as soon as the screen is blurred, not just when the app\n * backgrounds. Right for surfaces that rebuild cheaply from their own source\n * (a map, a 3D viewport); wrong for one the user is actively working in,\n * where a reload on every navigation would be hostile.\n */\n releaseOnBlur: boolean;\n}\n\n/**\n * Backgrounding ALWAYS releases: that is the exact moment the footprint decides\n * whether iOS evicts us, and a backgrounded WebView is showing nobody anything.\n */\nexport function shouldRenderWebView({ isFocused, isAppActive, releaseOnBlur }: IWebViewRetentionInput): boolean {\n if (!isAppActive) return false;\n if (releaseOnBlur && !isFocused) return false;\n return true;\n}\n"],"names":[],"mappings":"AAwCO,SAAS,mBAAoB,CAAA;AAAA,EAClC,SAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAoC,EAAA;AAClC,EAAI,IAAA,CAAC,aAAoB,OAAA,KAAA;AACzB,EAAI,IAAA,aAAA,IAAiB,CAAC,SAAA,EAAkB,OAAA,KAAA;AACxC,EAAO,OAAA,IAAA;AACT"}
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as Account}from'./screens/Account/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{ChatLiveStreamEngine}from'./contexts/ChatLiveStreamContext.js';export{MemoryPressureResponder}from'./features/memory/MemoryPressureResponder.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{AppThemeProvider,useAppTheme}from'./theme/AppThemeProvider.js';export{InviteDeepLink}from'./features/invite/InviteDeepLink.js';export{inviteTokenFromUrl,isInviteUrl}from'./features/invite/inviteLink.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{getNativeTravelExperience,preloadNativeTravelExperience,registerNativeTravelExperience,registerTravelExperiencePreload}from'./features/travel/nativeTravelRegistry.js';export{getNativeJobSearchExperience,preloadNativeJobSearchExperience,registerJobSearchExperiencePreload,registerNativeJobSearchExperience}from'./features/job-search/nativeJobSearchRegistry.js';export{getNativeResumeExperience,preloadNativeResumeExperience,registerNativeResumeExperience,registerResumeExperiencePreload}from'./features/resume/nativeResumeRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as Account}from'./screens/Account/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{ChatLiveStreamEngine}from'./contexts/ChatLiveStreamContext.js';export{MemoryPressureResponder}from'./features/memory/MemoryPressureResponder.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{AppThemeProvider,useAppTheme}from'./theme/AppThemeProvider.js';export{InviteDeepLink}from'./features/invite/InviteDeepLink.js';export{ChatInviteDeepLink}from'./features/messaging/ChatInviteDeepLink.js';export{inviteTokenFromUrl,isInviteUrl}from'./features/invite/inviteLink.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{getNativeTravelExperience,preloadNativeTravelExperience,registerNativeTravelExperience,registerTravelExperiencePreload}from'./features/travel/nativeTravelRegistry.js';export{getNativeJobSearchExperience,preloadNativeJobSearchExperience,registerJobSearchExperiencePreload,registerNativeJobSearchExperience}from'./features/job-search/nativeJobSearchRegistry.js';export{getNativeResumeExperience,preloadNativeResumeExperience,registerNativeResumeExperience,registerResumeExperiencePreload}from'./features/resume/nativeResumeRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport { ChatLiveStreamEngine } from './contexts/ChatLiveStreamContext';\nexport { MemoryPressureResponder } from './features/memory/MemoryPressureResponder';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { AppThemeProvider, useAppTheme } from './theme/AppThemeProvider';\n// Invite deep links. Mounted by the app at the root (see portable-devices/mobile\n// App.tsx) rather than routed to: the invitee has neither an org nor a session,\n// and every mobile route requires both.\nexport { InviteDeepLink } from './features/invite/InviteDeepLink';\nexport { inviteTokenFromUrl, isInviteUrl } from './features/invite/inviteLink';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport {\n registerNativeTravelExperience,\n getNativeTravelExperience,\n registerTravelExperiencePreload,\n preloadNativeTravelExperience,\n} from './features/travel/nativeTravelRegistry';\nexport type { TravelExperienceProps } from './features/travel/TravelExperience';\nexport type { TravelHostChat } from './features/travel/hostChat';\nexport {\n registerNativeJobSearchExperience,\n getNativeJobSearchExperience,\n registerJobSearchExperiencePreload,\n preloadNativeJobSearchExperience,\n} from './features/job-search/nativeJobSearchRegistry';\nexport type { JobSearchExperienceProps } from './features/job-search/JobSearchExperience';\nexport type { JobSearchHostChat } from './features/job-search/hostChat';\nexport {\n registerNativeResumeExperience,\n getNativeResumeExperience,\n registerResumeExperiencePreload,\n preloadNativeResumeExperience,\n} from './features/resume/nativeResumeRegistry';\nexport type { ResumeExperienceProps } from './features/resume/ResumeExperience';\nexport type { ResumeHostChat } from './features/resume/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport { ChatLiveStreamEngine } from './contexts/ChatLiveStreamContext';\nexport { MemoryPressureResponder } from './features/memory/MemoryPressureResponder';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { AppThemeProvider, useAppTheme } from './theme/AppThemeProvider';\n// Invite deep links. Mounted by the app at the root (see portable-devices/mobile\n// App.tsx) rather than routed to: the invitee has neither an org nor a session,\n// and every mobile route requires both.\nexport { InviteDeepLink } from './features/invite/InviteDeepLink';\nexport { ChatInviteDeepLink } from './features/messaging/ChatInviteDeepLink';\nexport { inviteTokenFromUrl, isInviteUrl } from './features/invite/inviteLink';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport {\n registerNativeTravelExperience,\n getNativeTravelExperience,\n registerTravelExperiencePreload,\n preloadNativeTravelExperience,\n} from './features/travel/nativeTravelRegistry';\nexport type { TravelExperienceProps } from './features/travel/TravelExperience';\nexport type { TravelHostChat } from './features/travel/hostChat';\nexport {\n registerNativeJobSearchExperience,\n getNativeJobSearchExperience,\n registerJobSearchExperiencePreload,\n preloadNativeJobSearchExperience,\n} from './features/job-search/nativeJobSearchRegistry';\nexport type { JobSearchExperienceProps } from './features/job-search/JobSearchExperience';\nexport type { JobSearchHostChat } from './features/job-search/hostChat';\nexport {\n registerNativeResumeExperience,\n getNativeResumeExperience,\n registerResumeExperiencePreload,\n preloadNativeResumeExperience,\n} from './features/resume/nativeResumeRegistry';\nexport type { ResumeExperienceProps } from './features/resume/ResumeExperience';\nexport type { ResumeHostChat } from './features/resume/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"i8IAEA,YAAe,IAAI,QAAQ,kBAAkB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useCallback,useEffect}from'react';import {StyleSheet,View,Text}from'react-native';import {SafeAreaView}from'react-native-safe-area-context';import {useRoute,useNavigation}from'@react-navigation/native';import {getNativeChatExperience}from'../../features/messaging/nativeChatRegistry.js';import {useChatViewer}from'../../features/messaging/useChatViewer.js';import {RegistrationScreen}from'../../features/messaging/RegistrationScreen.js';import {mobileColors}from'../../theme/mobileTokens.js';import {useAppTheme}from'../../theme/AppThemeProvider.js';function buildRegistrationTheme(isDark) {
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import React__default,{useCallback,useEffect}from'react';import {StyleSheet,View,Text}from'react-native';import {SafeAreaView}from'react-native-safe-area-context';import {useRoute,useNavigation}from'@react-navigation/native';import {getNativeChatExperience}from'../../features/messaging/nativeChatRegistry.js';import {useChatViewer}from'../../features/messaging/useChatViewer.js';import {RegistrationScreen}from'../../features/messaging/RegistrationScreen.js';import {mobileColors}from'../../theme/mobileTokens.js';import {useAppTheme}from'../../theme/AppThemeProvider.js';function buildRegistrationTheme(isDark) {
|
|
2
2
|
const c = mobileColors(isDark);
|
|
3
3
|
return {
|
|
4
4
|
colors: {
|
|
@@ -44,6 +44,12 @@ function ChatNativeScreen() {
|
|
|
44
44
|
} = useChatViewer();
|
|
45
45
|
const params = route.params;
|
|
46
46
|
const channelId = typeof (params == null ? void 0 : params.channelId) === "string" ? params.channelId : void 0;
|
|
47
|
+
const inviterId = typeof (params == null ? void 0 : params.inviterId) === "string" ? params.inviterId : void 0;
|
|
48
|
+
const inviterName = typeof (params == null ? void 0 : params.inviterName) === "string" ? params.inviterName : null;
|
|
49
|
+
const initialPeer = React__default.useMemo(() => inviterId ? {
|
|
50
|
+
userId: inviterId,
|
|
51
|
+
name: inviterName
|
|
52
|
+
} : void 0, [inviterId, inviterName]);
|
|
47
53
|
const handleRegistrationComplete = useCallback(async (phoneNumber) => {
|
|
48
54
|
try {
|
|
49
55
|
await registerForChat(phoneNumber);
|
|
@@ -85,7 +91,7 @@ function ChatNativeScreen() {
|
|
|
85
91
|
}
|
|
86
92
|
return /* @__PURE__ */ jsx(SafeAreaView, { style: [styles.fill, isDark && styles.fillDark, {
|
|
87
93
|
backgroundColor: theme.colors.background
|
|
88
|
-
}], edges: ["left", "right", "bottom"], children: /* @__PURE__ */ jsx(Chat, { viewer, sessionError: ready ? error : null, initialChannelId: channelId, onClose: () => navigation.goBack(), onInternalRouteChange: handleInternalRouteChange }) });
|
|
94
|
+
}], edges: ["left", "right", "bottom"], children: /* @__PURE__ */ jsx(Chat, { viewer, sessionError: ready ? error : null, initialChannelId: channelId, initialPeer, onClose: () => navigation.goBack(), onInternalRouteChange: handleInternalRouteChange }) });
|
|
89
95
|
}
|
|
90
96
|
const styles = StyleSheet.create({
|
|
91
97
|
fill: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/screens/ChatNative/index.tsx"],"sourcesContent":["/**\n * Native Chats screen - the host route for the federated CHAT surface.\n *\n * Same delivery contract as CanvasBoard and Characters: the App (the MF host)\n * registers the federated component and injects the seams it owns; this screen\n * only reads the registry and contributes the two things the remote cannot\n * know - who is signed in, and where navigation should go.\n *\n * Opening it triggers the runtime fetch of `chat_native/Chat` from the\n * chat-native surface; in a release build none of that code ships in the\n * binary.\n *\n * If the user is not yet registered with Yantra Chat (phone-based membership),\n * they are prompted to register before accessing the chat surface.\n */\nimport React, { useCallback, useEffect } from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { getNativeChatExperience } from '../../features/messaging/nativeChatRegistry';\nimport { useChatViewer } from '../../features/messaging/useChatViewer';\nimport { RegistrationScreen } from '../../features/messaging/RegistrationScreen';\nimport { mobileColors } from '../../theme/mobileTokens';\nimport { useAppTheme } from '../../theme/AppThemeProvider';\n\nexport interface ChatNativeRouteParams {\n /** Deep link from a push tap or an Apps tile: open straight into a thread. */\n channelId?: string;\n orgName?: string;\n}\n\nfunction buildRegistrationTheme(isDark: boolean) {\n const c = mobileColors(isDark);\n return {\n colors: {\n background: c.bg,\n card: c.surface,\n text: c.text,\n textSecondary: c.textMuted,\n placeholder: isDark ? '#64748b' : '#94a3b8',\n primary: c.primary,\n error: c.dangerText,\n border: c.border,\n },\n fonts: {\n regular: { fontFamily: 'system' },\n medium: { fontFamily: 'system', fontWeight: '500' as const },\n bold: { fontFamily: 'system', fontWeight: '700' as const },\n },\n };\n}\n\nexport default function ChatNativeScreen() {\n const route = useRoute();\n const navigation = useNavigation();\n const { isDark } = useAppTheme();\n const theme = buildRegistrationTheme(isDark);\n\n const Chat = getNativeChatExperience();\n const { viewer, error, ready, needsRegistration, registerForChat, membershipLoading } = useChatViewer();\n\n const params = route.params as ChatNativeRouteParams | undefined;\n const channelId = typeof params?.channelId === 'string' ? params.channelId : undefined;\n\n const handleRegistrationComplete = useCallback(\n async (phoneNumber: string) => {\n try {\n await registerForChat(phoneNumber);\n } catch (err) {\n console.error('[ChatNative] Yantra Chat registration failed', err);\n throw err;\n }\n },\n [registerForChat],\n );\n\n const handleInternalRouteChange = useCallback(\n (internal: 'list' | 'thread' | 'contacts' | 'register') => {\n navigation.setParams({ hideNavigationHeader: internal !== 'list' } as ChatNativeRouteParams & {\n hideNavigationHeader?: boolean;\n });\n },\n [navigation],\n );\n\n // Hide stack header on registration, thread, and contacts — each screen owns its top bar.\n useEffect(() => {\n const hide = needsRegistration || membershipLoading;\n navigation.setParams({ hideNavigationHeader: hide } as ChatNativeRouteParams & {\n hideNavigationHeader?: boolean;\n });\n }, [needsRegistration, membershipLoading, navigation]);\n\n if (!Chat) {\n // A build without the federation host (or before App registered it).\n // Say so instead of rendering a blank screen.\n return (\n <SafeAreaView style={[styles.fill, isDark && styles.fillDark]}>\n <View style={styles.center}>\n <Text style={[styles.title, isDark && styles.textLight]}>Chat unavailable</Text>\n <Text style={[styles.detail, isDark && styles.textMuted]}>\n This build does not carry the federation host runtime.\n </Text>\n </View>\n </SafeAreaView>\n );\n }\n\n // Show registration screen if user is not registered yet\n if (needsRegistration || membershipLoading) {\n if (membershipLoading && !needsRegistration) {\n return (\n <View\n style={[\n styles.fill,\n { backgroundColor: theme.colors.background, justifyContent: 'center', alignItems: 'center' },\n ]}\n >\n <Text style={{ color: theme.colors.textSecondary }}>Loading…</Text>\n </View>\n );\n }\n return (\n <View style={[styles.fill, { backgroundColor: theme.colors.background }]}>\n <RegistrationScreen\n onRegistrationComplete={handleRegistrationComplete}\n theme={theme}\n testID=\"chat-registration-screen\"\n />\n </View>\n );\n }\n\n return (\n <SafeAreaView\n style={[styles.fill, isDark && styles.fillDark, { backgroundColor: theme.colors.background }]}\n edges={['left', 'right', 'bottom']}\n >\n <Chat\n viewer={viewer}\n sessionError={ready ? error : null}\n initialChannelId={channelId}\n onClose={() => navigation.goBack()}\n onInternalRouteChange={handleInternalRouteChange}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1, backgroundColor: '#f8fafc' },\n fillDark: { backgroundColor: '#0f172a' },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },\n title: { fontSize: 17, fontWeight: '600', color: '#0f172a', marginBottom: 6 },\n detail: { fontSize: 13, color: '#64748b', textAlign: 'center' },\n textLight: { color: '#f1f5f9' },\n textMuted: { color: '#94a3b8' },\n});\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/screens/ChatNative/index.tsx"],"sourcesContent":["/**\n * Native Chats screen - the host route for the federated CHAT surface.\n *\n * Same delivery contract as CanvasBoard and Characters: the App (the MF host)\n * registers the federated component and injects the seams it owns; this screen\n * only reads the registry and contributes the two things the remote cannot\n * know - who is signed in, and where navigation should go.\n *\n * Opening it triggers the runtime fetch of `chat_native/Chat` from the\n * chat-native surface; in a release build none of that code ships in the\n * binary.\n *\n * If the user is not yet registered with Yantra Chat (phone-based membership),\n * they are prompted to register before accessing the chat surface.\n */\nimport React, { useCallback, useEffect } from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { getNativeChatExperience } from '../../features/messaging/nativeChatRegistry';\nimport { useChatViewer } from '../../features/messaging/useChatViewer';\nimport { RegistrationScreen } from '../../features/messaging/RegistrationScreen';\nimport { mobileColors } from '../../theme/mobileTokens';\nimport { useAppTheme } from '../../theme/AppThemeProvider';\n\nexport interface ChatNativeRouteParams {\n /** Deep link from a push tap or an Apps tile: open straight into a thread. */\n channelId?: string;\n /** From a chat invite link (`/chat/invite?by=&n=`): open the conversation with the inviter. */\n inviterId?: string;\n inviterName?: string;\n orgName?: string;\n}\n\n/** Only `setParams` is used; the header flag is read by the host stack, not by this screen. */\ntype ChatNativeNavigation = {\n setParams(params: Partial<ChatNativeRouteParams> & { hideNavigationHeader?: boolean }): void;\n goBack(): void;\n};\n\nfunction buildRegistrationTheme(isDark: boolean) {\n const c = mobileColors(isDark);\n return {\n colors: {\n background: c.bg,\n card: c.surface,\n text: c.text,\n textSecondary: c.textMuted,\n placeholder: isDark ? '#64748b' : '#94a3b8',\n primary: c.primary,\n error: c.dangerText,\n border: c.border,\n },\n fonts: {\n regular: { fontFamily: 'system' },\n medium: { fontFamily: 'system', fontWeight: '500' as const },\n bold: { fontFamily: 'system', fontWeight: '700' as const },\n },\n };\n}\n\nexport default function ChatNativeScreen() {\n const route = useRoute();\n const navigation = useNavigation<ChatNativeNavigation>();\n const { isDark } = useAppTheme();\n const theme = buildRegistrationTheme(isDark);\n\n const Chat = getNativeChatExperience();\n const { viewer, error, ready, needsRegistration, registerForChat, membershipLoading } = useChatViewer();\n\n const params = route.params as ChatNativeRouteParams | undefined;\n const channelId = typeof params?.channelId === 'string' ? params.channelId : undefined;\n const inviterId = typeof params?.inviterId === 'string' ? params.inviterId : undefined;\n const inviterName = typeof params?.inviterName === 'string' ? params.inviterName : null;\n const initialPeer = React.useMemo(\n () => (inviterId ? { userId: inviterId, name: inviterName } : undefined),\n [inviterId, inviterName],\n );\n\n const handleRegistrationComplete = useCallback(\n async (phoneNumber: string) => {\n try {\n await registerForChat(phoneNumber);\n } catch (err) {\n console.error('[ChatNative] Yantra Chat registration failed', err);\n throw err;\n }\n },\n [registerForChat],\n );\n\n const handleInternalRouteChange = useCallback(\n (internal: 'list' | 'thread' | 'contacts' | 'register') => {\n navigation.setParams({ hideNavigationHeader: internal !== 'list' });\n },\n [navigation],\n );\n\n // Hide stack header on registration, thread, and contacts — each screen owns its top bar.\n useEffect(() => {\n const hide = needsRegistration || membershipLoading;\n navigation.setParams({ hideNavigationHeader: hide });\n }, [needsRegistration, membershipLoading, navigation]);\n\n if (!Chat) {\n // A build without the federation host (or before App registered it).\n // Say so instead of rendering a blank screen.\n return (\n <SafeAreaView style={[styles.fill, isDark && styles.fillDark]}>\n <View style={styles.center}>\n <Text style={[styles.title, isDark && styles.textLight]}>Chat unavailable</Text>\n <Text style={[styles.detail, isDark && styles.textMuted]}>\n This build does not carry the federation host runtime.\n </Text>\n </View>\n </SafeAreaView>\n );\n }\n\n // Show registration screen if user is not registered yet\n if (needsRegistration || membershipLoading) {\n if (membershipLoading && !needsRegistration) {\n return (\n <View\n style={[\n styles.fill,\n { backgroundColor: theme.colors.background, justifyContent: 'center', alignItems: 'center' },\n ]}\n >\n <Text style={{ color: theme.colors.textSecondary }}>Loading…</Text>\n </View>\n );\n }\n return (\n <View style={[styles.fill, { backgroundColor: theme.colors.background }]}>\n <RegistrationScreen\n onRegistrationComplete={handleRegistrationComplete}\n theme={theme}\n testID=\"chat-registration-screen\"\n />\n </View>\n );\n }\n\n return (\n <SafeAreaView\n style={[styles.fill, isDark && styles.fillDark, { backgroundColor: theme.colors.background }]}\n edges={['left', 'right', 'bottom']}\n >\n <Chat\n viewer={viewer}\n sessionError={ready ? error : null}\n initialChannelId={channelId}\n initialPeer={initialPeer}\n onClose={() => navigation.goBack()}\n onInternalRouteChange={handleInternalRouteChange}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n fill: { flex: 1, backgroundColor: '#f8fafc' },\n fillDark: { backgroundColor: '#0f172a' },\n center: { flex: 1, alignItems: 'center', justifyContent: 'center', padding: 24 },\n title: { fontSize: 17, fontWeight: '600', color: '#0f172a', marginBottom: 6 },\n detail: { fontSize: 13, color: '#64748b', textAlign: 'center' },\n textLight: { color: '#f1f5f9' },\n textMuted: { color: '#94a3b8' },\n});\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import
|
|
1
|
+
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import React__default,{useRef,useState,useCallback,useEffect,useMemo}from'react';import {useWindowDimensions,InteractionManager,Keyboard,View,StyleSheet,ScrollView,Pressable,Platform}from'react-native';import {dismissKeyboard}from'../../utils/keyboardController.js';import {getDefaultLeftItems,Text,InputToolBar}from'@admin-layout/gluestack-ui-mobile';import {useSafeAreaInsets,SafeAreaView}from'react-native-safe-area-context';import {useNavigation,useRoute,useFocusEffect,CommonActions}from'@react-navigation/native';import {KeyboardAwareScreen,KeyboardComposerDock}from'../../components/KeyboardComposerDock.js';import {useKeyboardBottomOffset}from'../../hooks/useKeyboardBottomOffset.js';import {useDispatch,useSelector}from'react-redux';import {v4}from'uuid';import {usePrerequisiteIds}from'../../hooks/usePrerequisiteIds.js';import {syncMobileOrgRouteContext}from'../../utils/syncMobileOrgRouteContext.js';import {useChatMutations,usePrefetchChatHistory}from'../../hooks/useChatApi.js';import {hydrateChatHistorySnapshot,persistChatHistorySnapshot}from'../../features/chat/chatHistorySnapshot.js';import {AudioRecorderPanel}from'../../features/audio-input/AudioRecorderPanel.js';import {MicErrorBoundary}from'../../features/audio-input/MicErrorBoundary.js';import {requestMicPermission}from'../../features/audio-input/useAudioPermission.js';import {mobileTokens}from'../../theme/mobileTokens.js';import {useAppTheme}from'../../theme/AppThemeProvider.js';import {useMarketplaceTemplateGroups}from'../../hooks/useMarketplaceTemplateGroups.js';import {useImageAttachments}from'../../features/attachments/useImageAttachments.js';import {ComposerAttachmentBar}from'../../features/attachments/ComposerAttachmentBar.js';import {useComposerAttachMenu}from'../../features/attachments/ComposerAttachMenu.js';import {stashComposerAttachments}from'../../features/attachments/composerAttachmentHandoff.js';import {BuildTemplatesSection}from'./components/BuildTemplatesSection.js';import {ChooseTemplateModal}from'./components/ChooseTemplateModal.js';import {HomeSuggestions}from'./components/HomeSuggestions.js';import {WebBuilderPrewarm}from'./components/WebBuilderPrewarm.js';import {CanvasPrewarm}from'./components/CanvasPrewarm.js';import {shouldRedirectToShop}from'../../features/shopping/chat/homeShoppingIntent.js';import {openShopFromHome,shopHandoffParams}from'../../features/shopping/chat/openShopNative.js';import {resetDrawerClosed,dispatchDrawerAction,afterNativeModalClose}from'../../utils/drawerNavigation.js';var __defProp = Object.defineProperty;
|
|
2
2
|
var __defProps = Object.defineProperties;
|
|
3
3
|
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
4
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -22,7 +22,7 @@ function buildChannelTitle(mode, channelId) {
|
|
|
22
22
|
if (mode === "build") return `build-channel-${channelId}`;
|
|
23
23
|
return `chat-channel-${channelId}`;
|
|
24
24
|
}
|
|
25
|
-
const EmptyStateSection =
|
|
25
|
+
const EmptyStateSection = React__default.memo(function EmptyStateSection2({
|
|
26
26
|
isDark,
|
|
27
27
|
secondaryTextColor,
|
|
28
28
|
primaryTextColor,
|
|
@@ -209,7 +209,7 @@ function HomeScreenContent({
|
|
|
209
209
|
files: attachments
|
|
210
210
|
}));
|
|
211
211
|
}, [navigation, effectiveOrgName, routeOrgName]);
|
|
212
|
-
const handleOpenRoute =
|
|
212
|
+
const handleOpenRoute = React__default.useCallback((name) => {
|
|
213
213
|
dispatchDrawerAction(navigation, "close");
|
|
214
214
|
afterNativeModalClose(() => {
|
|
215
215
|
var _a2;
|