import { useEffect, useState } from "react";
import { useFanfare } from "@waitify-io/fanfare-sdk-react";
import type { QueueParticipation } from "@waitify-io/fanfare-sdk-core";
function QueueDashboard() {
const fanfare = useFanfare();
const [activeQueues, setActiveQueues] = useState<Record<string, QueueParticipation>>({});
useEffect(() => {
// Get initial state
setActiveQueues(fanfare.queues.getActiveQueues());
// Subscribe to updates
const unsubscribes = [
fanfare.on("queue:entered", () => {
setActiveQueues(fanfare.queues.getActiveQueues());
}),
fanfare.on("queue:left", () => {
setActiveQueues(fanfare.queues.getActiveQueues());
}),
fanfare.on("queue:position-changed", () => {
setActiveQueues(fanfare.queues.getActiveQueues());
}),
fanfare.on("queue:admitted", () => {
setActiveQueues(fanfare.queues.getActiveQueues());
}),
];
return () => {
unsubscribes.forEach((unsub) => unsub());
};
}, [fanfare]);
return (
<div>
<h2>Your Active Queues</h2>
{Object.entries(activeQueues).map(([queueId, participation]) => (
<div key={queueId}>
<p>Queue: {queueId}</p>
<p>Status: {participation.status}</p>
<p>Position: {participation.position}</p>
</div>
))}
</div>
);
}