import { ExtendedError, Server, Socket } from "socket.io";
import { prisma } from "@repo/db";
import jwt from "jsonwebtoken";
/* if (!process.env.DISPATCH_APP_TOKEN) throw new Error("DISPATCH_APP_TOKEN is not defined"); */

export const jwtMiddleware = async (socket: Socket, next: (err?: ExtendedError) => void) => {
	try {
		const { uid } = socket.handshake.auth;
		if (!uid) return new Error("Authentication error");
		/* const token = socket.handshake.auth?.token;
		if (!token) return new Error("Authentication error");
		const decoded = jwt.verify(token, process.env.DISPATCH_APP_TOKEN!); */
		// socket.data.userId = decoded.; // User ID lokal speichern
		const user = await prisma.user.findUniqueOrThrow({
			where: { id: uid },
		});

		socket.data.user = user;

		next();
	} catch (err) {
		next(new Error("Authentication error"));
	}
};
