fix loads of errors, make messages have the actual username added to
them aswell xd
This commit is contained in:
parent
bf679f9ee0
commit
424fe4cf42
6 changed files with 157 additions and 76 deletions
|
|
@ -2,18 +2,11 @@ import { json } from '@sveltejs/kit';
|
|||
import type { RequestHandler } from './$types';
|
||||
import { db } from '$lib/server/db';
|
||||
import * as table from '$lib/server/db/schema';
|
||||
import { DirectMessageID, GroupID, ServerID } from '$lib';
|
||||
import { DirectMessageID, GroupID, ServerID, type Message, type ReturnMessage } from '$lib';
|
||||
import { eq, or } from 'drizzle-orm';
|
||||
import { _sendToSubscribers } from '../../../../updates/+server';
|
||||
import { and } from 'drizzle-orm';
|
||||
|
||||
interface Message {
|
||||
id: string;
|
||||
authorId: string;
|
||||
content: string;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export async function _findDm(member_one: string, member_two: string) {
|
||||
return await db
|
||||
.select()
|
||||
|
|
@ -72,14 +65,14 @@ export const GET: RequestHandler = async ({ params, locals }) => {
|
|||
const g = (await db.select().from(table.group).where(eq(table.group.id, grp_srv_dm)))[0];
|
||||
if (!g) return new Response('Group not found.', { status: 404 });
|
||||
|
||||
messages = g.messages ?? [];
|
||||
messages = g.messages as Message[];
|
||||
} else if (ServerID.is(grp_srv_dm)) {
|
||||
type = 'server';
|
||||
if (!channelId) return new Response('Missing channel ID.', { status: 400 });
|
||||
const c = (await db.select().from(table.channel).where(eq(table.channel.id, channelId)))[0];
|
||||
if (!c) return new Response('Channel not found.', { status: 404 });
|
||||
|
||||
messages = c.messages;
|
||||
messages = c.messages as Message[];
|
||||
} else if (DirectMessageID.is(grp_srv_dm)) {
|
||||
type = 'dms';
|
||||
const dm = (
|
||||
|
|
@ -88,13 +81,32 @@ export const GET: RequestHandler = async ({ params, locals }) => {
|
|||
|
||||
if (!dm) return new Response('DM not found.', { status: 404 });
|
||||
|
||||
messages = dm.messages;
|
||||
messages = dm.messages as Message[];
|
||||
}
|
||||
|
||||
const messages_resolved_users: ReturnMessage[] = (
|
||||
await Promise.all(
|
||||
messages.map(async (z) => {
|
||||
const author = await db.select().from(table.user).where(eq(table.user.id, z.authorId));
|
||||
|
||||
if (!author[0]) {
|
||||
return;
|
||||
}
|
||||
|
||||
return {
|
||||
...z,
|
||||
author: {
|
||||
id: author[0].id,
|
||||
name: author[0].username
|
||||
}
|
||||
};
|
||||
})
|
||||
)
|
||||
).filter(Boolean) as ReturnMessage[];
|
||||
return json({
|
||||
type,
|
||||
id: grp_srv_dm,
|
||||
messages
|
||||
messages: messages_resolved_users
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -103,7 +115,7 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
|
|||
return new Response('Unauthorized', { status: 401 });
|
||||
}
|
||||
|
||||
let { grp_srv_dm, channelId } = params;
|
||||
const { grp_srv_dm, channelId } = params;
|
||||
if (!grp_srv_dm) return new Response('Missing Group/Server/DM id.', { status: 400 });
|
||||
const data = await request.json();
|
||||
const { content } = data;
|
||||
|
|
@ -113,7 +125,7 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
|
|||
let messages: Message[] = [];
|
||||
let type = '';
|
||||
|
||||
const message = {
|
||||
const message: Message = {
|
||||
id: crypto.randomUUID(),
|
||||
authorId: locals.user.id,
|
||||
content,
|
||||
|
|
@ -124,7 +136,7 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
|
|||
type = 'group';
|
||||
const g = (await db.select().from(table.group).where(eq(table.group.id, grp_srv_dm)))[0];
|
||||
if (!g) return new Response('Group not found.', { status: 404 });
|
||||
messages = g.messages ?? [];
|
||||
messages = (g.messages as Message[]) ?? [];
|
||||
|
||||
messages.push(message);
|
||||
|
||||
|
|
@ -134,7 +146,7 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
|
|||
if (!channelId) return new Response('Missing channel ID.', { status: 400 });
|
||||
const c = (await db.select().from(table.channel).where(eq(table.channel.id, channelId)))[0];
|
||||
if (!c) return new Response('Channel not found.', { status: 404 });
|
||||
messages = c.messages ?? [];
|
||||
messages = (c.messages as Message[]) ?? [];
|
||||
|
||||
messages.push(message);
|
||||
|
||||
|
|
@ -147,17 +159,37 @@ export const POST: RequestHandler = async ({ params, request, locals }) => {
|
|||
|
||||
if (!dm) return new Response('DM not found.', { status: 404 });
|
||||
|
||||
messages = dm.messages ?? [];
|
||||
messages = (dm.messages as Message[]) ?? [];
|
||||
|
||||
messages.push(message);
|
||||
|
||||
await db.update(table.directMessage).set({ messages }).where(eq(table.directMessage.id, dm.id));
|
||||
|
||||
_sendToSubscribers(dm.id, { type: 'message', id: dm.id, message });
|
||||
_sendToSubscribers(dm.id, {
|
||||
type: 'message',
|
||||
id: dm.id,
|
||||
message: {
|
||||
...message,
|
||||
author: {
|
||||
id: locals.user.id,
|
||||
name: locals.user.username
|
||||
}
|
||||
}
|
||||
});
|
||||
return json({ type, id: dm.id, messages });
|
||||
}
|
||||
|
||||
_sendToSubscribers(grp_srv_dm, { type: 'message', id: grp_srv_dm, message });
|
||||
_sendToSubscribers(grp_srv_dm, {
|
||||
type: 'message',
|
||||
id: grp_srv_dm,
|
||||
message: {
|
||||
...message,
|
||||
author: {
|
||||
id: locals.user.id,
|
||||
name: locals.user.username
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return json({ type, id: grp_srv_dm, messages });
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue