'use client'; import { fetcher } from '@/app/api/tools'; import useSWR from 'swr'; import Link from 'next/link'; import { useEffect, useRef, useState } from 'react'; type Order = { id: number; created_on: string; updated_on: string; waiter: number; waiter_name: string; data: [{ item: string; additional_info: string; finished: boolean }]; status: number; status_name: string; }; export default function Home() { const audioRef = useRef({} as HTMLAudioElement); const [playedIDs, setPlayedIDs] = useState([]); const { data, mutate, error, isLoading } = useSWR(`/api/orders`, fetcher, { refreshInterval: 1000, }); const play = () => { if (audioRef.current) { audioRef.current.play(); } else { // Throw error } }; useEffect(() => { if (!data) return; const justPlayed = (data as Order[]) .filter( (o) => new Date(o.updated_on).getTime() - new Date(o.created_on).getTime() < 10000 && o.status == 1 ) .map((o) => o.id) .filter((id) => !playedIDs.includes(id)); if (justPlayed.length > 0) { play(); setPlayedIDs(playedIDs.concat(justPlayed)); } }, [data]); const update_finished = (o: number, i: number, v: boolean) => { let d = data; d[o].data[i].finished = v; console.log(v); fetch(`/api/orders?id=${d[o].id}`, { method: 'PUT', body: JSON.stringify(d[o]), headers: { 'Content-Type': 'application/json', }, }).then(() => mutate(d)); }; const update_status = (o: number, v: number) => { let d = data; d[o].status = v; console.log(v); fetch(`/api/orders?id=${d[o].id}`, { method: 'PUT', body: JSON.stringify(d[o]), headers: { 'Content-Type': 'application/json', }, }).then(() => mutate(d)); }; if (error) return
Błąd przy ładowaniu danych
; if (isLoading) return
Ładowanie
; return ( <>

Zamówienia:

); }