From 95e821727b7629d92532887c5ff8204230ecdb2c Mon Sep 17 00:00:00 2001 From: Izan Gil <66965250+SrIzan10@users.noreply.github.com> Date: Sun, 16 Mar 2025 16:24:33 +0100 Subject: [PATCH] fix: viewers stuff --- .gitignore | 2 +- dev/docker-compose.yml | 1 + .../api/stream/chat/[username]/route.ts | 34 +++++++++---------- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index dd4c9a5..69d2c64 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ yarn-error.log* # local env files .env*.local -.env +.env* # vercel .vercel diff --git a/dev/docker-compose.yml b/dev/docker-compose.yml index dc311b8..6905307 100644 --- a/dev/docker-compose.yml +++ b/dev/docker-compose.yml @@ -1,6 +1,7 @@ services: psql: image: postgres + user: 1000:1000 environment: POSTGRES_USER: postgres # my condolences diff --git a/src/app/(protected)/api/stream/chat/[username]/route.ts b/src/app/(protected)/api/stream/chat/[username]/route.ts index 0a3c6c0..7deaf46 100644 --- a/src/app/(protected)/api/stream/chat/[username]/route.ts +++ b/src/app/(protected)/api/stream/chat/[username]/route.ts @@ -25,6 +25,17 @@ export async function SOCKET( const username = url.pathname.split('/').at(-1); client.targetUsername = username!; + await prisma.streamInfo.update({ + where: { + username, + }, + data: { + viewers: { + increment: 1, + }, + }, + }); + client.on('message', (message) => { const msg = message.toString(); server.clients.forEach((c) => { @@ -56,36 +67,25 @@ export async function SOCKET( }); }); - await prisma.streamInfo.update({ - where: { - username, - }, - data: { - viewers: { - increment: 1, - }, - }, - }); - client.on('close', async () => { console.log('client disconnected'); - const { viewers } = (await prisma.streamInfo.findUnique({ + const streamInfo = await prisma.streamInfo.findUnique({ where: { username, }, select: { viewers: true, }, - }))!; + }); + + if (!streamInfo) return; + await prisma.streamInfo.update({ where: { username, }, data: { - viewers: { - decrement: viewers > 0 ? 1 : 0, - set: viewers === 0 ? 0 : undefined, - }, + viewers: streamInfo.viewers === 0 ? { set: 0 } : { decrement: 1 }, }, }); });