import { createRef } from 'react'; import { NavigationContainerRef, CommonActions } from '@react-navigation/native'; // Shared ref — attach to export const navigationRef = createRef>(); // Queued leadId when app launches from a killed state (navigator not ready yet) let pendingLeadId: string | null = null; // Navigate to LeadDetails. If navigator isn't ready yet, queue it for onReady. export function navigateToLeadDetails(leadId: string): void { if (!navigationRef.current?.isReady()) { pendingLeadId = leadId; return; } navigationRef.current.dispatch( CommonActions.navigate({ name: 'DrawerStack', params: { screen: 'home', params: { screen: 'leads', params: { // Seed the LeadsStack with leadsList first so the back button // is always present when arriving from a notification. initial: false, screen: 'leadDetails', params: { lead: { id: leadId } }, }, }, }, }), ); } // Call from NavigationContainer's onReady — executes any queued navigation export function flushPendingNavigation(): void { if (pendingLeadId) { navigateToLeadDetails(pendingLeadId); pendingLeadId = null; } }