Advertisement
misaalanshori

js frontend

Feb 8th, 2025
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { useEffect, useState } from "react";
  2. import { Container, Typography, List, ListItem, Paper } from "@mui/material";
  3. import MainLayout from '@/Layouts/MainLayout';
  4.  
  5. export default function DocumentExtract({document}) {
  6.     const [messages, setMessages] = useState([]);
  7.  
  8.     useEffect(() => {
  9.         const eventSource = new EventSource(route('extraction.extract', {document: document.id}));
  10.  
  11.         eventSource.onmessage = (event) => {
  12.             const newMessage = JSON.parse(event.data);
  13.             setMessages((prev) => [...prev, newMessage]);
  14.             console.log(newMessage);
  15.         };
  16.  
  17.         eventSource.onerror = (error) => {
  18.             console.error("SSE Error:", error);
  19.             eventSource.close();
  20.         };
  21.  
  22.         return () => {
  23.             eventSource.close();
  24.         };
  25.     }, []);
  26.  
  27.     return (
  28.         <MainLayout>
  29.             <Container maxWidth="sm" sx={{ mt: 4 }}>
  30.                 <Paper elevation={3} sx={{ p: 3, textAlign: "center" }}>
  31.                     <Typography variant="h5" gutterBottom>
  32.                         Live Server Updates
  33.                     </Typography>
  34.                     <List>
  35.                         {messages.map((msg, index) => (
  36.                             <ListItem key={index}>{msg.counter} {msg.time} {msg.document.file_name}</ListItem>
  37.                         ))}
  38.                     </List>
  39.                 </Paper>
  40.             </Container>
  41.         </MainLayout>
  42.     );
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement