diff --git a/packages/server/src/events/index.js b/packages/server/src/events/index.js new file mode 100644 index 00000000..54865467 --- /dev/null +++ b/packages/server/src/events/index.js @@ -0,0 +1,7 @@ +import user_connected from "./user_connected" +import user_disconnected from "./user_disconnected" + +export default { + "user.connected": user_connected, + "user.disconnected": user_disconnected, +} \ No newline at end of file diff --git a/packages/server/src/events/user_connected.js b/packages/server/src/events/user_connected.js new file mode 100644 index 00000000..771f7a2e --- /dev/null +++ b/packages/server/src/events/user_connected.js @@ -0,0 +1,19 @@ +import { UserFollow } from "../models" + +export default async (user_id) => { + // get followers of the user + const followers = await UserFollow.find({ + to: user_id, + }) + + // send event to ws clients (if are connected) + followers.forEach((follow) => { + const connectedClient = global.wsInterface.clients.find((client) => { + return client.user_id === follow.user_id + }) + + if (connectedClient) { + connectedClient.socket.emit("friend.connected", user_id) + } + }) +} \ No newline at end of file diff --git a/packages/server/src/events/user_disconnected.js b/packages/server/src/events/user_disconnected.js new file mode 100644 index 00000000..aca0d317 --- /dev/null +++ b/packages/server/src/events/user_disconnected.js @@ -0,0 +1,19 @@ +import { UserFollow } from "../models" + +export default async (user_id) => { + // get followers of the user + const followers = await UserFollow.find({ + to: user_id, + }) + + // send event to ws clients (if are connected) + followers.forEach((follow) => { + const connectedClient = global.wsInterface.clients.find((client) => { + return client.user_id === follow.user_id + }) + + if (connectedClient) { + connectedClient.socket.emit("friend.disconnected", user_id) + } + }) +} \ No newline at end of file