- 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.
35 lines
863 B
TypeScript
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;
|
|
|