From d6ef60a3d898238265f247d23951d78cf0365585 Mon Sep 17 00:00:00 2001 From: PizZaKatZe Date: Sun, 12 Dec 2021 02:17:39 +0100 Subject: [PATCH] Send request to group members only --- back/src/Model/Group.ts | 10 ++++++++++ back/src/Services/SocketManager.ts | 21 +++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/back/src/Model/Group.ts b/back/src/Model/Group.ts index 931ddda5..570eaedf 100644 --- a/back/src/Model/Group.ts +++ b/back/src/Model/Group.ts @@ -106,6 +106,16 @@ export class Group implements Movable { return this.users.size <= 1; } + includes(user: User): boolean { + let found = false; + this.users.forEach((currentUser: User) => { + if (currentUser.name === user.name) { + found = true; + } + }); + return found; + } + join(user: User): void { // Broadcast on the right event this.connectCallback(user, this); diff --git a/back/src/Services/SocketManager.ts b/back/src/Services/SocketManager.ts index 069e298b..cc950163 100644 --- a/back/src/Services/SocketManager.ts +++ b/back/src/Services/SocketManager.ts @@ -836,13 +836,22 @@ export class SocketManager { } handleFollowMeRequestMessage(room: GameRoom, user: User, requestMessage: FollowMeRequestMessage) { - console.log("Handling follow me request message"); - console.log(user.name); + // Find group including the requesting user + let foundGroups = room.getGroups().filter((grp) => grp.includes(user)); + if (!foundGroups[0]) { + return; + } + let group = foundGroups[0]; + + // Send invitations to other group members requestMessage.setPlayername(user.name); - room.getUsers().forEach((recipient) => { - const clientMessage = new ServerToClientMessage(); - clientMessage.setFollowmerequestmessage(requestMessage); - recipient.socket.write(clientMessage); + const clientMessage = new ServerToClientMessage(); + clientMessage.setFollowmerequestmessage(requestMessage); + group.getUsers().forEach((currentUser: User) => { + if (user.name !== currentUser.name) { + console.log("Inviting " + currentUser.name + " to follow " + user.name); + currentUser.socket.write(clientMessage); + } }); } }