diff --git a/core/server/src/config/socket.io/handlers/make-private-admin-handler.ts b/core/server/src/config/socket.io/handlers/make-private-admin-handler.ts index ba071c71..dc4e86ac 100644 --- a/core/server/src/config/socket.io/handlers/make-private-admin-handler.ts +++ b/core/server/src/config/socket.io/handlers/make-private-admin-handler.ts @@ -15,44 +15,48 @@ export default function makePrivateAdminHandler({ initialAdminNsp: InitialAdminNsp; }) { return function privateAdminHandler({ io }: { io: Server }) { - const online_users = {}; - - const admin_nsp = initialAdminNsp({ io }); - - admin_nsp.on(SocketEvents.CONNECT, (socket) => { - socket.on(ClientEvents.ONLINE, async ({ user_id }: IUserPayload) => { - const user_ids = Array.from(new Set(Object.values(online_users))); - if (!user_ids.includes(user_id)) { - await adminDb.update({ - _id: user_id, - is_online: true, - }); - } - - online_users[socket.id] = user_id; - admin_nsp.emit(ServerEvents.ONLINE, { user_id }); - }); + try { + const online_users = {}; + + const admin_nsp = initialAdminNsp({ io }); + + admin_nsp.on(SocketEvents.CONNECT, (socket) => { + socket.on(ClientEvents.ONLINE, async ({ user_id }: IUserPayload) => { + const user_ids = Array.from(new Set(Object.values(online_users))); + if (!user_ids.includes(user_id)) { + await adminDb.update({ + _id: user_id, + is_online: true, + }); + } + + online_users[socket.id] = user_id; + admin_nsp.emit(ServerEvents.ONLINE, { user_id }); + }); - socket.on(SocketEvents.DISCONNECT, async () => { - const user_id = online_users[socket.id]; + socket.on(SocketEvents.DISCONNECT, async () => { + const user_id = online_users[socket.id]; - delete online_users[socket.id]; + delete online_users[socket.id]; - const user_ids = Array.from(new Set(Object.values(online_users))); + const user_ids = Array.from(new Set(Object.values(online_users))); - const is_user_still_online = user_ids.includes(user_id); - if (is_user_still_online) { - return; - } + const is_user_still_online = user_ids.includes(user_id); + if (is_user_still_online) { + return; + } - admin_nsp.emit(ServerEvents.OFFLINE, { user_id }); + admin_nsp.emit(ServerEvents.OFFLINE, { user_id }); - await adminDb.update({ - _id: user_id, - last_online_at: new Date(), - is_online: false, + await adminDb.update({ + _id: user_id, + last_online_at: new Date(), + is_online: false, + }); }); }); - }); + } catch (error) { + console.error(error); + } }; } diff --git a/core/server/src/config/socket.io/handlers/make-private-client-handler.ts b/core/server/src/config/socket.io/handlers/make-private-client-handler.ts index 28e001c3..8beaf265 100644 --- a/core/server/src/config/socket.io/handlers/make-private-client-handler.ts +++ b/core/server/src/config/socket.io/handlers/make-private-client-handler.ts @@ -18,45 +18,49 @@ export default function makePrivateClientHandler({ initialAdminNsp: InitialAdminNsp; }) { return function privateClientHandler({ io }: { io: Server }) { - const online_users = {}; + try { + const online_users = {}; - const client_nsp = initialClientNsp({ io }); - const admin_nsp = initialAdminNsp({ io }); + const client_nsp = initialClientNsp({ io }); + const admin_nsp = initialAdminNsp({ io }); - client_nsp.on(SocketEvents.CONNECT, (socket) => { - socket.on(ClientEvents.ONLINE, async ({ user_id }: IUserPayload) => { - const user_ids = Array.from(new Set(Object.values(online_users))); - if (!user_ids.includes(user_id)) { - await userDb.update({ - _id: user_id, - is_online: true, - }); - } + client_nsp.on(SocketEvents.CONNECT, (socket) => { + socket.on(ClientEvents.ONLINE, async ({ user_id }: IUserPayload) => { + const user_ids = Array.from(new Set(Object.values(online_users))); + if (!user_ids.includes(user_id)) { + await userDb.update({ + _id: user_id, + is_online: true, + }); + } - online_users[socket.id] = user_id; - admin_nsp.emit(ServerEvents.ONLINE, { user_id }); - }); + online_users[socket.id] = user_id; + admin_nsp.emit(ServerEvents.ONLINE, { user_id }); + }); - socket.on(SocketEvents.DISCONNECT, async () => { - const user_id = online_users[socket.id]; + socket.on(SocketEvents.DISCONNECT, async () => { + const user_id = online_users[socket.id]; - delete online_users[socket.id]; + delete online_users[socket.id]; - const user_ids = Array.from(new Set(Object.values(online_users))); + const user_ids = Array.from(new Set(Object.values(online_users))); - const is_user_still_online = user_ids.includes(user_id); - if (is_user_still_online) { - return; - } + const is_user_still_online = user_ids.includes(user_id); + if (is_user_still_online) { + return; + } - admin_nsp.emit(ServerEvents.OFFLINE, { user_id }); + admin_nsp.emit(ServerEvents.OFFLINE, { user_id }); - await userDb.update({ - _id: user_id, - last_online_at: new Date(), - is_online: false, + await userDb.update({ + _id: user_id, + last_online_at: new Date(), + is_online: false, + }); }); }); - }); + } catch (error) { + console.error(error); + } }; }