import React, { useEffect } from 'react'; import { View, Text, ScrollView, TouchableOpacity } from 'react-native'; import Icon from 'react-native-vector-icons/Ionicons'; import { RouteProp, useRoute, useNavigation } from '@react-navigation/native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { useTheme } from '@theme'; import { useAppDispatch, useAppSelector, RootState } from '@store'; import { getLeadDetails } from './thunk'; import { getStyles } from './leadDetails.styles'; import { LeadsStackParamList } from '../../navigation/leadsStack'; import { Loader, LeadDetailHeader, ActionCard } from '@components'; import { handleEmailPress, handlePhonePress, handleWebsitePress, formatDate, route as routes } from '@utils'; type LeadDetailsRouteProp = RouteProp; type LeadDetailsNavigationProp = NativeStackNavigationProp; export const LeadDetailsScreen = () => { const route = useRoute(); const navigation = useNavigation(); const dispatch = useAppDispatch(); const { theme: colors } = useTheme(); const styles = getStyles(colors); const leadId = route.params?.lead?.id; const { item: lead, loading, error } = useAppSelector((state: RootState) => state.leadDetails); const user_data = useAppSelector((state: RootState) => state.auth.user_data); useEffect(() => { if (leadId && user_data?.staffid) { dispatch(getLeadDetails({ leadId, staffid: user_data.staffid })); } }, [dispatch, leadId, user_data]); if (loading) return ; if (error) { return ( {error} ); } if (!lead) { return ( No lead data available ); } const addressString = [lead.address, lead.city, lead.state, lead.country] .filter(Boolean) .join(', '); return ( handleEmailPress(lead.email)} onPhonePress={() => handlePhonePress(lead.phonenumber)} /> Lead Value {lead.lead_value ? `$${lead.lead_value}` : 'N/A'} Source {lead.source_name || lead.source || 'Direct'} Created {formatDate(lead.dateadded) || 'N/A'} Lead Information {lead.email ? ( <> handleEmailPress(lead.email)} activeOpacity={0.7}> Email {lead.email} ) : null} {lead.phonenumber ? ( <> handlePhonePress(lead.phonenumber)} activeOpacity={0.7}> Phone {lead.phonenumber} ) : null} {lead.website ? ( <> handleWebsitePress(lead.website)} activeOpacity={0.7}> Website {lead.website} ) : null} {addressString ? ( <> Address {addressString} ) : null} {lead.assigned ? ( Assigned Staff {lead.assigned} ) : null} Activity & Management navigation.navigate(routes.leadProposals, { leadId: lead.id })} onViewAllPress={() => navigation.navigate(routes.leadProposals, { leadId: lead.id })} /> navigation.navigate(routes.leadTasks, { leadId: lead.id })} onViewAllPress={() => navigation.navigate(routes.leadTasks, { leadId: lead.id })} /> navigation.navigate(routes.leadNotes, { leadId: lead.id })} onViewAllPress={() => navigation.navigate(routes.leadNotes, { leadId: lead.id })} /> ); };