fix: live update request status

This commit is contained in:
2026-04-22 13:53:37 -04:00
parent de275976ed
commit f0b3338f08
3 changed files with 24 additions and 5 deletions
+12 -5
View File
@@ -79,11 +79,13 @@ router.post(
cost += (seasons.length - 1) * (settings?.tvPerSeasonCost || 250);
const dbBalance = user.totalEarned - user.totalSpent;
if (dbBalance < cost)
return res.status(400).json({
error: "Insufficient balance",
required: cost,
current: dbBalance,
});
return res
.status(400)
.json({
error: "Insufficient balance",
required: cost,
current: dbBalance,
});
const overseerRequest = await overseerClient.post("/request", {
mediaType,
mediaId,
@@ -162,6 +164,11 @@ router.post(
reason: `Refunded: ${request.title}`,
});
}
io.to(`user:${request.userId}`).emit("request_updated", {
id: request.id,
status: updatedRequest.status,
title: request.title,
});
res.json({ success: true, request: updatedRequest });
}),
);
@@ -6,11 +6,13 @@ import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
import { Input } from "@/components/ui/input";
import { userApi } from "@/lib/api";
import { useSocket } from "@/lib/socket";
export function RequestHistory() {
const [requests, setRequests] = useState<any[]>([]);
const [status, setStatus] = useState("");
const [query, setQuery] = useState("");
const socket = useSocket();
const load = async () => {
const res = await userApi.getRequests(1, 50, status || undefined);
@@ -20,6 +22,14 @@ export function RequestHistory() {
useEffect(() => {
load();
}, [status]);
useEffect(() => {
if (!socket) return;
const refresh = () => load();
socket.on("request_updated", refresh);
return () => {
socket.off("request_updated", refresh);
};
}, [socket, status]);
const filtered = requests.filter(
(r) =>
+2
View File
@@ -51,10 +51,12 @@ export default function DashboardPage() {
socket.on("credits_earned", refresh);
socket.on("bonus_received", refresh);
socket.on("credits_spent", refresh);
socket.on("request_updated", refresh);
return () => {
socket.off("credits_earned", refresh);
socket.off("bonus_received", refresh);
socket.off("credits_spent", refresh);
socket.off("request_updated", refresh);
};
}, [socket]);