several bug fixes, and websockets!

This commit is contained in:
Zoe
2023-01-09 19:32:24 -06:00
parent a3f9a0c35d
commit 1cb01289bc
15 changed files with 557 additions and 82 deletions

View File

@@ -2,8 +2,10 @@ import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) return {
message: 'You must be logged in to view a channel.'
if (!event.context.user.authenticated) {
return {
message: 'You must be logged in to view a channel.'
}
}
if (!event.context.params.id) {
@@ -19,6 +21,7 @@ export default defineEventHandler(async (event) => {
},
include: {
messages: true,
dmParticipants: true
}
})
@@ -45,7 +48,7 @@ export default defineEventHandler(async (event) => {
if (!userInServer) {
event.node.res.statusCode = 401;
return {
message: `You mus be in the server to access a channel in that server`
message: `You must be in the server to access a channel in that server`
}
}
}

View File

@@ -53,7 +53,7 @@ export default defineEventHandler(async (event) => {
const server = await prisma.channel.create({
data: {
name: `${user.username}-${partner.username}`,
name: `${user.id}-${partner.id}`,
dmParticipants: { connect: [{ id: event.context.user.id }, { id: partner.id }] },
DM: true
},

View File

@@ -1,6 +1,10 @@
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
declare global {
var io: Server | undefined
}
export default defineEventHandler(async (event) => {
if (!event.context.user.authenticated) {
event.node.res.statusCode = 401;
@@ -27,8 +31,6 @@ export default defineEventHandler(async (event) => {
}
})
console.log(channel)
if (!channel.DM) {
const server = await prisma.server.findFirst({
where: {
@@ -78,9 +80,14 @@ export default defineEventHandler(async (event) => {
id: channelId
}
}
},
include: {
creator: true
}
})
global.io.emit(`message-${channel.id}`, { message });
return {
message
}

View File

@@ -2,7 +2,7 @@ import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
export default defineEventHandler(async (event) => {
if (event.context.user === undefined || event.context.user.id === undefined) {
if (!event.context.user.authenticated) {
// event.node.res.statusCode = 401;
return {
message: "Unauthenticated"
@@ -12,6 +12,9 @@ export default defineEventHandler(async (event) => {
const user = await prisma.user.findFirst({
where: {
id: event.context.user.id
},
include: {
channels: true
}
})

View File

@@ -0,0 +1,14 @@
// server/middleware/socket.ts
import { Server } from 'socket.io'
declare global {
var io: Server | undefined
}
export default defineEventHandler(({ node }) => {
if (!global.io) {
global.io = new Server(node.res.socket?.server);
global.io.on('connection', (socket) => { })
}
})