@@ -7,6 +7,7 @@ import * as Service from './chats.service';
77import * as Middlewares from '@/middlewares' ;
88import { Request , Response , Router } from 'express' ;
99import logger from '@/lib/logger' ;
10+ import io from '@/lib/io' ;
1011
1112export const chatsRouter = Router ( ) ;
1213
@@ -31,7 +32,7 @@ chatsRouter.get('/', Middlewares.authValidator, async (req, res) => {
3132 const chats = await Service . getUserChats ( userId , filters ) ;
3233 res . json ( chats ) . on ( 'finish' , ( ) => {
3334 const rooms = Service . getOtherChatsMemberIds ( userId , chats ) ;
34- Utils . emitToRoomsIfAny ( { rooms, event : 'chats:received' , volatile : true } ) ;
35+ if ( rooms . length ) io . to ( rooms ) . emit ( 'chats:received' ) ;
3536 } ) ;
3637} ) ;
3738
@@ -40,7 +41,7 @@ chatsRouter.get('/members/:profileId', Middlewares.authValidator, async (req, re
4041 const chats = await Service . getUserChatsByMember ( userId , req . params . profileId ) ;
4142 res . json ( chats ) . on ( 'finish' , ( ) => {
4243 const rooms = Service . getOtherChatsMemberIds ( userId , chats ) ;
43- Utils . emitToRoomsIfAny ( { rooms, event : 'chats:received' , volatile : true } ) ;
44+ if ( rooms . length ) io . to ( rooms ) . emit ( 'chats:received' ) ;
4445 } ) ;
4546} ) ;
4647
@@ -50,7 +51,9 @@ chatsRouter.get('/:id', Middlewares.authValidator, async (req, res) => {
5051 const chat = await Service . getUserChatById ( userId , chatId ) ;
5152 res . json ( chat ) . on ( 'finish' , ( ) => {
5253 Service . getOtherChatMemberIds ( userId , chatId )
53- . then ( ( rooms ) => Utils . emitToRoomsIfAny ( { rooms, event : 'chats:received' , volatile : true } ) )
54+ . then ( ( rooms ) => {
55+ if ( rooms . length ) io . to ( rooms ) . emit ( 'chats:received' ) ;
56+ } )
5457 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:received"' , error ) ) ;
5558 } ) ;
5659} ) ;
@@ -62,7 +65,9 @@ chatsRouter.get('/:id/messages', Middlewares.authValidator, async (req, res) =>
6265 const messages = await Service . getUserChatMessages ( userId , chatId , filters ) ;
6366 res . json ( messages ) . on ( 'finish' , ( ) => {
6467 Service . getOtherChatMemberIds ( userId , chatId )
65- . then ( ( rooms ) => Utils . emitToRoomsIfAny ( { rooms, event : 'chats:received' , volatile : true } ) )
68+ . then ( ( rooms ) => {
69+ if ( rooms . length ) io . to ( rooms ) . emit ( 'chats:received' ) ;
70+ } )
6671 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:received"' , error ) ) ;
6772 } ) ;
6873} ) ;
@@ -73,7 +78,9 @@ chatsRouter.get('/:id/messages/:msgId', Middlewares.authValidator, async (req, r
7378 const msg = await Service . getUserChatMessageById ( userId , chatId , req . params . msgId ) ;
7479 res . json ( msg ) . on ( 'finish' , ( ) => {
7580 Service . getOtherChatMemberIds ( userId , chatId )
76- . then ( ( rooms ) => Utils . emitToRoomsIfAny ( { rooms, event : 'chats:received' , volatile : true } ) )
81+ . then ( ( rooms ) => {
82+ if ( rooms . length ) io . to ( rooms ) . emit ( 'chats:received' ) ;
83+ } )
7784 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:received"' , error ) ) ;
7885 } ) ;
7986} ) ;
@@ -94,9 +101,12 @@ chatsRouter.post(
94101 . json ( createdChat )
95102 . on ( 'finish' , ( ) => {
96103 Service . getOtherChatMemberIds ( user . id , createdChat . id )
97- . then ( ( rooms ) =>
98- Utils . emitToRoomsIfAny ( { rooms, event : 'chats:updated' , volatile : true } ) ,
99- )
104+ . then ( ( rooms ) => {
105+ if ( rooms . length ) {
106+ io . to ( rooms ) . emit ( 'chats:updated' ) ;
107+ io . to ( rooms ) . emit ( 'chat:created' , createdChat . id ) ;
108+ }
109+ } )
100110 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:updated"' , error ) ) ;
101111 } ) ;
102112 } ,
@@ -107,7 +117,13 @@ chatsRouter.patch('/:id/seen', Middlewares.authValidator, async (req, res) => {
107117 const userId = Utils . getCurrentUserIdFromReq ( req ) ! ;
108118 res . json ( await Service . updateProfileChatLastSeenDate ( userId , chatId ) ) . on ( 'finish' , ( ) => {
109119 Service . getOtherChatMemberIds ( userId , chatId )
110- . then ( ( rooms ) => Utils . emitToRoomsIfAny ( { rooms, event : 'chats:updated' , volatile : true } ) )
120+ . then ( ( rooms ) => {
121+ if ( rooms . length ) {
122+ io . to ( rooms ) . emit ( 'chat:updated' , chatId ) ;
123+ io . to ( rooms ) . emit ( `chat:updated:${ chatId } ` ) ;
124+ io . to ( rooms ) . emit ( 'chats:updated' ) ;
125+ }
126+ } )
111127 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:updated"' , error ) ) ;
112128 } ) ;
113129} ) ;
@@ -130,9 +146,13 @@ chatsRouter.post(
130146 . json ( createdMessage )
131147 . on ( 'finish' , ( ) => {
132148 Service . getOtherChatMemberIds ( user . id , chatId )
133- . then ( ( rooms ) =>
134- Utils . emitToRoomsIfAny ( { rooms, event : 'chats:updated' , volatile : true } ) ,
135- )
149+ . then ( ( rooms ) => {
150+ if ( rooms . length ) {
151+ io . to ( rooms ) . emit ( 'chat:updated' , chatId ) ;
152+ io . to ( rooms ) . emit ( `chat:updated:${ chatId } ` ) ;
153+ io . to ( rooms ) . emit ( 'chats:updated' ) ;
154+ }
155+ } )
136156 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:updated"' , error ) ) ;
137157 } ) ;
138158 } ,
@@ -147,7 +167,13 @@ chatsRouter.delete('/:id', Middlewares.authValidator, async (req, res) => {
147167 . send ( )
148168 . on ( 'finish' , ( ) => {
149169 Service . getOtherChatMemberIds ( userId , chatId )
150- . then ( ( rooms ) => Utils . emitToRoomsIfAny ( { rooms, event : 'chats:updated' , volatile : true } ) )
170+ . then ( ( rooms ) => {
171+ if ( rooms . length ) {
172+ io . to ( rooms ) . emit ( 'chat:deleted' , chatId ) ;
173+ io . to ( rooms ) . emit ( `chat:deleted:${ chatId } ` ) ;
174+ io . to ( rooms ) . emit ( 'chats:updated' ) ;
175+ }
176+ } )
151177 . catch ( ( error : unknown ) => logger . error ( 'Failed to broadcast "chats:updated"' , error ) ) ;
152178 } ) ;
153179} ) ;
0 commit comments