no more duplicate messages join
This commit is contained in:
@@ -68,13 +68,14 @@
|
|||||||
#### chat :
|
#### chat :
|
||||||
|
|
||||||
- [/] create public room
|
- [/] create public room
|
||||||
- [ ] create private room
|
- [/] create private room
|
||||||
- [/] create direct room
|
- [/] create direct room
|
||||||
- [/] chat in room
|
- [/] chat in room
|
||||||
- [/] join public rooms
|
- [/] join public rooms
|
||||||
- [ ] join private rooms
|
- [/] join private rooms only by invitation
|
||||||
- [/] join direct rooms
|
- [/] join direct rooms
|
||||||
- [/] see all joignable rooms
|
- [/] see all joignable rooms
|
||||||
|
- [/] cannot see private rooms
|
||||||
- [/] see all my rooms
|
- [/] see all my rooms
|
||||||
- [/] leave room
|
- [/] leave room
|
||||||
- [/] leave direct impossible
|
- [/] leave direct impossible
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ export class ChatController {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
let fields = ["name", "type", "users", "messages"];
|
let fields = ["name", "type", "users", "messages", "owner"];
|
||||||
const room_db = await this.chatService.getRoomByName(room.name, fields);
|
const room_db = await this.chatService.getRoomByName(room.name, fields);
|
||||||
if (room_db.type === 'direct')
|
if (room_db.type === 'direct')
|
||||||
{
|
{
|
||||||
@@ -138,7 +138,7 @@ export class ChatController {
|
|||||||
console.log("throw error: your have already joined this room");
|
console.log("throw error: your have already joined this room");
|
||||||
throw new HttpException(`your have already joined this room`, HttpStatus.CONFLICT);
|
throw new HttpException(`your have already joined this room`, HttpStatus.CONFLICT);
|
||||||
}
|
}
|
||||||
room = await this.chatService.addUserToRoom(req.user.username, room_db);
|
room = await this.chatService.addUserToRoom(req.user.username, room.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
|
let socket: socketDto = this.chatGateway.sockets.get(req.user.username);
|
||||||
@@ -172,8 +172,9 @@ export class ChatController {
|
|||||||
console.log("- in inviteUser controller");
|
console.log("- in inviteUser controller");
|
||||||
|
|
||||||
let current_room_name = await this.chatService.getCurrentRoomName(req.user.username);
|
let current_room_name = await this.chatService.getCurrentRoomName(req.user.username);
|
||||||
const room_db = await this.chatService.getRoomByName(current_room_name);
|
let room = await this.chatService.addUserToRoom(username, current_room_name);
|
||||||
let room = await this.chatService.addUserToRoom(username, room_db);
|
let message = `${username} joined the room`;
|
||||||
|
await this.chatService.addMessageToRoom(current_room_name, "SERVER", message);
|
||||||
|
|
||||||
res.status(HttpStatus.OK).json({ room: room });
|
res.status(HttpStatus.OK).json({ room: room });
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ implements OnGatewayConnection, OnGatewayDisconnect
|
|||||||
console.log('- in joinRoom gateway');
|
console.log('- in joinRoom gateway');
|
||||||
|
|
||||||
await this.chatService.socketJoinRoom(socket, room_name)
|
await this.chatService.socketJoinRoom(socket, room_name)
|
||||||
let message = `${socket.username} joined the room`;
|
|
||||||
await this.chatService.addMessageToRoom(room_name, "SERVER", message);
|
|
||||||
|
|
||||||
console.log('- out joinRoom gateway');
|
console.log('- out joinRoom gateway');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,6 +106,11 @@ export class ChatService {
|
|||||||
{
|
{
|
||||||
console.log("-- in getAllOtherRoomsAndUsers service");
|
console.log("-- in getAllOtherRoomsAndUsers service");
|
||||||
|
|
||||||
|
const temp = await this.chatroomRepository
|
||||||
|
.createQueryBuilder('chatroom')
|
||||||
|
.getMany();
|
||||||
|
console.log("all rooms:", temp);
|
||||||
|
|
||||||
const all_rooms = await this.getAllNotMyRooms(username);
|
const all_rooms = await this.getAllNotMyRooms(username);
|
||||||
const all_users = await this.getAllUsersNotMyRooms(username);
|
const all_users = await this.getAllUsersNotMyRooms(username);
|
||||||
|
|
||||||
@@ -121,7 +126,7 @@ export class ChatService {
|
|||||||
type: "user",
|
type: "user",
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
let rooms = row_rooms.concat(users);
|
let rooms: roomDto[] = row_rooms.concat(users);
|
||||||
console.log("--- rooms:", rooms);
|
console.log("--- rooms:", rooms);
|
||||||
|
|
||||||
console.log("-- in getAllOtherRoomsAndUsers service");
|
console.log("-- in getAllOtherRoomsAndUsers service");
|
||||||
@@ -235,13 +240,14 @@ export class ChatService {
|
|||||||
console.log("-- out addUserToNewRoom service");
|
console.log("-- out addUserToNewRoom service");
|
||||||
}
|
}
|
||||||
|
|
||||||
async addUserToRoom(username: string, room: roomDto): Promise<roomDto>
|
async addUserToRoom(username: string, room_name: string): Promise<roomDto>
|
||||||
{
|
{
|
||||||
console.log("-- in addUserToRoom service");
|
console.log("-- in addUserToRoom service");
|
||||||
|
|
||||||
|
const room = await this.getRoomByName(room_name);
|
||||||
|
|
||||||
// update room with new user
|
// update room with new user
|
||||||
room.users.push(username);
|
room.users.push(username);
|
||||||
room.messages.push({ name: "SERVER", message: `${username} joined the room`});
|
|
||||||
await this.chatroomRepository.save(room);
|
await this.chatroomRepository.save(room);
|
||||||
|
|
||||||
console.log("-- out addUserToRoom service");
|
console.log("-- out addUserToRoom service");
|
||||||
@@ -253,7 +259,7 @@ export class ChatService {
|
|||||||
console.log("-- in addMessageToRoom service");
|
console.log("-- in addMessageToRoom service");
|
||||||
|
|
||||||
const my_room = await this.getRoomByName(room_name);
|
const my_room = await this.getRoomByName(room_name);
|
||||||
let chat_message = {
|
let chat_message: messagesDto = {
|
||||||
name: username,
|
name: username,
|
||||||
message: message,
|
message: message,
|
||||||
};
|
};
|
||||||
@@ -390,6 +396,7 @@ export class ChatService {
|
|||||||
socket.room = room_name;
|
socket.room = room_name;
|
||||||
let message = `${socket.username} joined the room`;
|
let message = `${socket.username} joined the room`;
|
||||||
await socket.to(socket.room).emit('message', "SERVER", message);
|
await socket.to(socket.room).emit('message', "SERVER", message);
|
||||||
|
await this.addMessageToRoom(room_name, "SERVER", message);
|
||||||
|
|
||||||
console.log('- out socketJoinRoom service');
|
console.log('- out socketJoinRoom service');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
import { IsBoolean, IsEmpty, IsInt, IsIn, IsNotEmpty, IsNumber, IsArray, IsString, IsInstance, IsOptional, IsEnum } from "class-validator";
|
import { IsBoolean, IsEmpty, IsInt, IsIn, IsNotEmpty, IsNumber, IsArray, IsString, IsInstance, ValidateNested, IsObject, IsOptional, IsEnum } from "class-validator";
|
||||||
import { messagesDto } from 'src/chat/dto/messages.dto';
|
import { messagesDto } from 'src/chat/dto/messages.dto';
|
||||||
|
|
||||||
export class roomDto
|
export class roomDto
|
||||||
{
|
{
|
||||||
|
@IsNumber()
|
||||||
|
@IsOptional()
|
||||||
|
id?: number;
|
||||||
|
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
name: string;
|
name: string;
|
||||||
@@ -26,7 +30,9 @@ export class roomDto
|
|||||||
users?: string[]; // usernames
|
users?: string[]; // usernames
|
||||||
|
|
||||||
@IsArray()
|
@IsArray()
|
||||||
@IsInstance(messagesDto, { each: true })
|
//@IsInstance(messagesDto, { each: true })
|
||||||
|
//@IsObject({ each: true })
|
||||||
|
@ValidateNested({ each: true })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
messages?: messagesDto[];
|
messages?: messagesDto[];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user