15 };
16
17 const fetchMessages = async () => {
18 try {
19 const response = await fetch('/api/chat/messages');
20 if (response.ok) {
21 const messagesData = await response.json();
23 }
24 } catch (error) {
25 console.error('Error fetching messages:', error);
26 } finally {
27 setLoading(false);
30
31 useEffect(() => {
32 fetchMessages();
33 // Poll for new messages every 3 seconds
34 const interval = setInterval(fetchMessages, 3000);
35 return () => clearInterval(interval);
36 }, []);
60 };
61
62 const response = await fetch('/api/chat/messages', {
63 method: 'POST',
64 headers: {
37 const interval = setInterval(async () => {
38 try {
39 const response = await fetch('/api/chat/messages');
40 const result = await response.json();
41 if (result.success && result.data.length > localMessages.length) {
43 }
44 } catch (error) {
45 console.error('Failed to fetch messages:', error);
46 }
47 }, 3000);
85 };
86
87 const response = await fetch('/api/chat/messages', {
88 method: 'POST',
89 headers: {
27
28 try {
29 const response = await fetch('/api/jobs', {
30 method: 'POST',
31 headers: {
62 setIsSubmitting(true);
63 try {
64 const response = await fetch('/api/jobs', {
65 method: 'POST',
66 headers: {
9 const [showForm, setShowForm] = useState(false);
10
11 const fetchJobs = async () => {
12 try {
13 const response = await fetch('/api/jobs');
14 if (response.ok) {
15 const jobsData = await response.json();
17 }
18 } catch (error) {
19 console.error('Error fetching jobs:', error);
20 } finally {
21 setLoading(false);
24
25 useEffect(() => {
26 fetchJobs();
27 }, []);
28
31 } catch (error) {
32 console.error("Get conversations error:", error);
33 return c.json<ApiResponse>({ success: false, error: "Failed to fetch conversations" });
34 }
35});
50 } catch (error) {
51 console.error("Get messages error:", error);
52 return c.json<ApiResponse>({ success: false, error: "Failed to fetch messages" });
53 }
54});
41 } catch (error) {
42 console.error("Get users error:", error);
43 return c.json<ApiResponse>({ success: false, error: "Failed to fetch users" });
44 }
45});
58 } catch (error) {
59 console.error("Get user error:", error);
60 return c.json<ApiResponse>({ success: false, error: "Failed to fetch user" });
61 }
62});
28
29 try {
30 const response = await fetch(`/api/jobs/${jobId}`, {
31 method: 'DELETE',
32 });
25 setLoading(false);
26 } else {
27 // Fallback: fetch data if not injected
28 fetchInitialData();
29 }
30 }, []);
31
32 const fetchInitialData = async () => {
33 try {
34 const [jobsRes, messagesRes] = await Promise.all([
35 fetch('/api/jobs'),
36 fetch('/api/chat/messages')
37 ]);
38
43 if (messagesData.success) setMessages(messagesData.data);
44 } catch (error) {
45 console.error('Failed to fetch initial data:', error);
46 } finally {
47 setLoading(false);
11 return c.json(messages);
12 } catch (error) {
13 console.error("Error fetching messages:", error);
14 return c.json({ error: "Failed to fetch messages" }, 500);
15 }
16});