import { useState } from 'react'; import { View, Text, ScrollView, TextInput, TouchableOpacity, ActivityIndicator, Alert } from 'react-native'; import { useLocalSearchParams, router } from 'expo-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { api } from '../../../services/api'; export default function TicketDetailScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const [reply, setReply] = useState(''); const qc = useQueryClient(); const { data, isLoading } = useQuery({ queryKey: ['ticket', id], queryFn: () => api.get(`/api/v1/tickets/${id}`).then(r => r.data), }); const addReply = useMutation({ mutationFn: () => api.post(`/api/v1/tickets/${id}/messages`, { message: reply }), onSuccess: () => { setReply(''); qc.invalidateQueries({ queryKey: ['ticket', id] }); }, onError: () => Alert.alert('Error', 'Could not send reply.'), }); if (isLoading) return ; return ( router.back()} className="mr-3"> {data?.subject} {data?.status} · {data?.priority} {(data?.messages ?? []).map((m: any) => ( {m.message} {m.senderName} ))} reply.trim() && addReply.mutate()} disabled={addReply.isPending} > {addReply.isPending ? : Send} ); }