chamesu
Version:
This package contains all packages of the chat application.
48 lines (40 loc) • 1.61 kB
text/typescript
/*
* Copyright (c) 2022.
* Author Peter Placzek (tada5hi)
* For the full copyright and license information,
* view the LICENSE file that was distributed with this source code.
*/
import {SocketInterface,} from "../../../modules/socket";
import {useChatRoom} from "./room";
import {AppContext} from "../../index";
import {createChatSocketEventHandler} from "./event";
import {createChatRoomSocketEventHandler} from "./event/room";
import createAuthMiddleware from "../../auth/socket/middleware";
import {getRepository} from "typeorm";
import {ChatRoom} from "@chamesu/common/domains/chat/room";
import {ChatMember} from "@chamesu/common/domains/chat/member";
export default function createSocketChatApp(ctx: AppContext) {
const room = useChatRoom(
ctx,
async function (roomId: string){
return await getRepository(ChatRoom).findOne(roomId);
},
async function (roomId: string, userId: number){
return await getRepository(ChatMember).findOne({room_id: roomId, user_id: userId});
}
);
room.checkIntegrity().then(r => r);
room.ctx.socketNamespace.use(createAuthMiddleware());
room.ctx.socketNamespace
.on('connection', (socket: SocketInterface) => {
socket.chatRooms = [];
socket.on('login', (options: any) => {
console.log(options);
});
socket.on('logout', (options: any) => {
console.log(options);
});
createChatSocketEventHandler(socket);
createChatRoomSocketEventHandler(socket);
});
}