added p2pinvite event and added group update

This commit is contained in:
Suman991 2026-04-16 18:58:48 +05:30
parent bc7b4cd272
commit b885159784
4 changed files with 27 additions and 7 deletions

View File

@ -158,6 +158,8 @@ export class ChatGateway
//verify memebership, store chat and return event's data
const data = await this.chatService.handleRoomMessage(body, sender);
if(!data) return;
// send everone in the room(including the sender)
this.server.to(body.roomId).emit('roomMessage', data);
}
@ -169,6 +171,6 @@ export class ChatGateway
@ConnectedSocket() client: Socket,
) {
return this.chatService.handleStartP2P(body.targetUserId, client);
return this.chatService.handleStartP2P(body.targetUserId, client, this.server);
}
}

View File

@ -2,7 +2,7 @@ import { ConversationsService } from './../conversations/conversations.service';
import { MessagesService } from './../messages/messages.service';
import { Injectable } from '@nestjs/common';
import { RoomMessageDto } from './dto/room-message.dto';
import { Socket } from 'socket.io';
import { Socket, Server } from 'socket.io';
import { ConversationType } from 'src/conversations/schemas/conversation.schema';
@Injectable()
@ -38,7 +38,7 @@ export class ChatService {
}
}
async handleStartP2P(targetUserId: string, client: Socket) {
async handleStartP2P(targetUserId: string, client: Socket, server:Server) {
const senderId = client.data.user.id;
if (senderId === targetUserId) {
@ -67,8 +67,19 @@ export class ChatService {
message: `P2P room ready`,
});
// find target user's socket and notify him/her
const targetSockets=await server.in('/chat').fetchSockets();
const targetSocket=targetSockets.find(s=>s.data.user?.id===targetUserId)
if(targetSocket){
targetSocket.join(roomId);
targetSocket.emit("p2pInvite",{
roomId,
fromUserId:senderId,
message: 'You have been added to a P2P conversation',
})
}
return { roomId };
}
}

View File

@ -2,16 +2,19 @@ import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/commo
import { ConversationsService } from './conversations.service';
import { CreateConversationDto } from './dto/create-conversation.dto';
import { UpdateConversationDto } from './dto/update-conversation.dto';
import { ApiOperation } from '@nestjs/swagger';
@Controller('conversations')
export class ConversationsController {
constructor(private readonly conversationsService: ConversationsService) {}
@ApiOperation({ summary: 'Create a conversation'})
@Post()
async create(@Body() createConversationDto: CreateConversationDto) {
return await this.conversationsService.create(createConversationDto);
}
@ApiOperation({ summary: 'Get all conversations' })
@Get()
async findAll() {
return await this.conversationsService.findAll();
@ -24,7 +27,7 @@ export class ConversationsController {
@Patch(':id')
update(@Param('id') id: string, @Body() updateConversationDto: UpdateConversationDto) {
return this.conversationsService.update(+id, updateConversationDto);
return this.conversationsService.update(id, updateConversationDto);
}
@Delete(':id')

View File

@ -31,8 +31,12 @@ export class ConversationsService {
// return `This action returns a #${id} conversation`;
// }
update(id: number, updateConversationDto: UpdateConversationDto) {
return `This action updates a #${id} conversation`;
async update(id: string, updateConversationDto: UpdateConversationDto) {
await this.conversationModel.findByIdAndUpdate(
{_id:id},
updateConversationDto,
{new:true}
)
}
remove(id: number) {