From d46bb8468b4446e320bd84bb32daa063e350723a Mon Sep 17 00:00:00 2001 From: lior <diler.lior@gmail.com> Date: Sat, 30 Jul 2022 08:34:08 +0200 Subject: [PATCH] untested restructuration pattern for getallmembers --- src/commandExecutor.js | 10 ++++--- src/commandHelper.js | 38 +++++++++++++++++++------- src/dataTranslator.js | 60 +++--------------------------------------- 3 files changed, 37 insertions(+), 71 deletions(-) diff --git a/src/commandExecutor.js b/src/commandExecutor.js index 28d42db..211ef43 100644 --- a/src/commandExecutor.js +++ b/src/commandExecutor.js @@ -7,8 +7,9 @@ const commandHelper = require("./commandHelper"); * @description Executes commands interpreted from dataTranslator. * */ -async function getAllMembersButton(targetGroup, userMediaID) +export async function getAllMembers(targetGroupID, userDatabase) { + const targetGroup = await databaseManager.findGroupByGroupID(targetGroupID) let outputMessage = ""; outputMessage = "There are currently " + targetGroup.users.length + " users that joined the group " + targetGroup.groupName + ". Those users are: "; const groupUsers = targetGroup.users; @@ -31,16 +32,17 @@ async function getAllMembersButton(targetGroup, userMediaID) outputMessage += "\n\nDisconnected members:"; outputMessage += disconnectedUsers; } + return outputMessage; } -async function verifyGetAllMembers(command, userMediaID, targetGroup) +export async function verifyAndExecuteGetAllMembers(data, userMediaID) { - //targetGroup is defined if from button, it isn't otherwhise const userDatabase = await databaseManager.findUserByMediaID(userMediaID); const groups = await databaseManager.findGroupsByUserID(userMediaID); const templateOptions = commandHelper.getGroupIDsWithCondition(userDatabase.connectedGroups, groups, true); - return await commandHelper.executeCommandOnGroup(serverData.text,getAllMembersButton(), + + return await commandHelper.executeCommandOnGroup(data.text,getAllMembers, { "type":"talkToGroup", "command":"AL", diff --git a/src/commandHelper.js b/src/commandHelper.js index 30a28be..1c238db 100644 --- a/src/commandHelper.js +++ b/src/commandHelper.js @@ -98,21 +98,39 @@ function getGroupIDsButtonTemplateFormat(groups) */ async function executeCommandOnGroup(command, action, buttonTemplate, data, userMediaID) { - const words = command.split(" "); + let words = command.split(" "); + words.shift(); + let changedData = data; + + //this should be passed as parameter const userGroups = await databaseManager.findGroupsByUserID(userMediaID); - if(userGroups.length === 1) - changedData = action(userGroups[0]); - else if(words.length > 1) { - const targetGroup = userGroups.find(group => group.groupName === words[1]) - if(targetGroup !== undefined) + if(userGroups.length === 0) + changedData.text = "You are not connected to any groups. Please connect to a group first.;" + else if(userGroups.length === 1) + changedData = action(userGroups[0]._id); + + if(words.length === 0) + changedData.buttonTemplate = buttonTemplate; + + let targetGroup = undefined + + for(let i = 0; i < userGroups.length; ++i) + { + const groupNameArray = userGroups[i].groupName.split(""); + if(groupNameArray.every(name => words.includes(name))) { - changedData = action(targetGroup, userMediaID); - }else changedData.buttonTemplate = buttonTemplate; + targetGroup = userGroups[i]; + break; + } } - else { - changedData.buttonTemplate = buttonTemplate; + if(targetGroup !== undefined) + { + changedData = action(targetGroup, userMediaID); } + else + changedData.buttonTemplate = buttonTemplate; + return changedData; } diff --git a/src/dataTranslator.js b/src/dataTranslator.js index 5a1a905..e584823 100755 --- a/src/dataTranslator.js +++ b/src/dataTranslator.js @@ -6,7 +6,7 @@ const mqt = require('./rabbitMQ/send.js') const databaseManager = require('./mongoose.js'); const commandHelper = require('./commandHelper'); - +const commandExecutor = require('./commandExecutor') /** * * Interprets the serverData JSON. Based on the state of the sender of the message and the command used, apply states to the user and prepare an answer. @@ -85,39 +85,7 @@ async function sendMessage(serverData, isUser) } else if(userText.includes("getallmembers")) { - const templateOptions = commandHelper.getGroupIDsWithCondition(userDatabase.connectedGroups, groups, true); - - data = await commandHelper.executeCommandOnGroup(serverData.text,async function(targetGroup) - { - data.text = "There are currently " + targetGroup.users.length + " users that joined the group " + targetGroup.groupName + ". Those users are: "; - const groupUsers = targetGroup.users; - let connectedUsers = ""; - let disconnectedUsers = ""; - for(let i = 0; i < groupUsers.length; ++i) - { - if(groupUsers[i].connected) - { - connectedUsers += "\n- " + groupUsers[i].nickname; - continue; - } - disconnectedUsers += "\n- " + groupUsers[i].nickname; - } - - data.text += "\n\nConnected members:"; - data.text += connectedUsers; - if(disconnectedUsers !== "") - { - data.text += "\n\nDisconnected members:"; - data.text += disconnectedUsers; - } - - return data; - }, - { - "type":"talkToGroup", - "command":"AL", - "options":templateOptions - }, data, userMediaID) + data = await commandExecutor.verifyAndExecuteGetAllMembers(data, data.connectors.id); } else if(userText === "getconnectedgroups") { @@ -409,29 +377,7 @@ async function handleButtonDatabase(serverData) } else if(serverData.buttonID.includes("AL_")) { - const targetGroup = await databaseManager.findGroupByGroupID(buttonValue); - - data.text = "There are currently " + targetGroup.users.length + " users that joined the group " + targetGroup.groupName + ". Those users are: "; - const groupUsers = targetGroup.users; - let connectedUsers = ""; - let disconnectedUsers = ""; - for(let i = 0; i < groupUsers.length; ++i) - { - if(groupUsers[i].connected) - { - connectedUsers += "\n- " + groupUsers[i].nickname; - continue; - } - disconnectedUsers += "\n- " + groupUsers[i].nickname; - } - - data.text += "\n\nConnected members:" - data.text += connectedUsers; - if(disconnectedUsers !== "") - { - data.text += "\n\nDisconnected members:"; - data.text += disconnectedUsers; - } + data = await commandExecutor.getAllMembers(buttonValue); } else if(serverData.buttonID.includes("QT_")) { -- GitLab