sipher/src/lib/sockets/events/dm-join.ts
Nixyan df41cf4657 Update dependencies, add OLM support, and improve authentication flow
- Updated various dependencies in package.json and bun.lock for better compatibility and features.
- Added OLM (Object Location Management) support by including necessary files and updating authentication logic.
- Enhanced the authentication flow with better error handling and user feedback.
- Introduced new database schema for OLM accounts and updated related API components.
- Improved socket connection management and user interface elements for a smoother user experience.
2025-12-19 12:18:46 -03:00

35 lines
863 B
TypeScript

import type { Socket, Server as SocketIOServer } from "socket.io";
import { getDmRoomId } from "./dm";
interface JoinDmData {
withUser: string; // The other user's ID
}
const dmJoinEvent: SiPher.EventsType = {
name: "dm:join",
description: "Join a DM room with another user",
category: "user",
type: "connection",
handler: (socket: Socket, _io: SocketIOServer, data: JoinDmData) => {
const user = (socket as any).user;
if (!user?.id) {
socket.emit("error", { message: "Not authenticated" });
return;
}
const { withUser } = data;
if (!withUser) {
socket.emit("error", { message: "Missing 'withUser'" });
return;
}
const roomId = getDmRoomId(user.id, withUser);
socket.join(roomId);
socket.emit("dm:joined", { roomId, withUser });
console.log(`[DM] ${user.id} joined room ${roomId}`);
},
};
export default dmJoinEvent;