File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -104,4 +104,28 @@ export class GroupChatGateway
104104 // broadcast to everyone in the room (including sender)
105105 this . server . to ( `ws:${ data . workspaceId } ` ) . emit ( "group-chat:message" , saved ) ;
106106 }
107+
108+ /** Client deletes their own message */
109+ @SubscribeMessage ( "group-chat:delete" )
110+ async handleDelete (
111+ @MessageBody ( )
112+ data : {
113+ workspaceId : string ;
114+ messageId : string ;
115+ memberId : string ;
116+ } ,
117+ @ConnectedSocket ( ) client : Socket ,
118+ ) {
119+ if ( ! data ?. workspaceId || ! data ?. messageId || ! data ?. memberId ) return ;
120+
121+ const deleted = await this . chatService . deleteMessage (
122+ data . messageId ,
123+ data . memberId ,
124+ ) ;
125+ if ( ! deleted ) return ; // not found or not owner
126+
127+ this . server
128+ . to ( `ws:${ data . workspaceId } ` )
129+ . emit ( "group-chat:deleted" , { messageId : data . messageId } ) ;
130+ }
107131}
Original file line number Diff line number Diff line change @@ -26,4 +26,13 @@ export class GroupChatService {
2626 } ) {
2727 return this . prisma . groupChatMessage . create ( { data } ) ;
2828 }
29+
30+ async deleteMessage ( messageId : string , memberId : string ) {
31+ const msg = await this . prisma . groupChatMessage . findUnique ( {
32+ where : { id : messageId } ,
33+ } ) ;
34+ if ( ! msg || msg . memberId !== memberId ) return null ;
35+ await this . prisma . groupChatMessage . delete ( { where : { id : messageId } } ) ;
36+ return msg ;
37+ }
2938}
You can’t perform that action at this time.
0 commit comments