From 77e5f429c5f7a7b2ddeb8d370620de1595cb3c58 Mon Sep 17 00:00:00 2001 From: roflmaoqwerty <36663568+roflmaoqwerty@users.noreply.github.com> Date: Wed, 22 Jan 2020 21:32:47 +1100 Subject: [PATCH] Created and implemented status search flag for search command --- backend/src/plugins/Utility.ts | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/backend/src/plugins/Utility.ts b/backend/src/plugins/Utility.ts index b215b48f..e998d756 100644 --- a/backend/src/plugins/Utility.ts +++ b/backend/src/plugins/Utility.ts @@ -120,6 +120,7 @@ type MemberSearchParams = { sort?: string; "case-sensitive"?: boolean; regex?: boolean; + "status-search"?: boolean; }; class SearchError extends Error {} @@ -381,14 +382,24 @@ export class UtilityPlugin extends ZeppelinPlugin { throw new SearchError("Unsafe/too complex regex (star depth is limited to 1)"); } - matchingMembers = matchingMembers.filter(member => { - if (member.nick && member.nick.match(queryRegex)) return true; + if (args["status-search"]) { + matchingMembers = matchingMembers.filter(member => { + if (member.game) { + if (member.game.name && member.game.name.match(queryRegex)) return true; + if (member.game.state && member.game.state.match(queryRegex)) return true; + } + return false; + }); + } else { + matchingMembers = matchingMembers.filter(member => { + if (member.nick && member.nick.match(queryRegex)) return true; - const fullUsername = `${member.user.username}#${member.user.discriminator}`; - if (fullUsername.match(queryRegex)) return true; + const fullUsername = `${member.user.username}#${member.user.discriminator}`; + if (fullUsername.match(queryRegex)) return true; - return false; - }); + return false; + }); + } } const [, sortDir, sortBy] = args.sort ? args.sort.match(/^(-?)(.*)$/) : [null, "ASC", "name"]; @@ -469,6 +480,11 @@ export class UtilityPlugin extends ZeppelinPlugin { shortcut: "re", isSwitch: true, }, + { + name: "status-search", + shortcut: "ss", + isSwitch: true, + }, ], extra: { info: { @@ -500,6 +516,7 @@ export class UtilityPlugin extends ZeppelinPlugin { export?: boolean; ids?: boolean; regex?: boolean; + "status-search"?: boolean; }, ) { const formatSearchResultList = (members: Member[]): string => {