Move clientCommands to client

This approach automatically imports the command names.
This commit is contained in:
JeDaYoshi 2021-07-04 02:15:33 +00:00
parent 521426bb05
commit bbda392c3d
No known key found for this signature in database
GPG Key ID: 8060B288C274219D
4 changed files with 20 additions and 35 deletions

View File

@ -6,6 +6,7 @@ import Mousetrap from "mousetrap";
import {Textcomplete, Textarea} from "textcomplete";
import fuzzy from "fuzzy";
import commands from "./commands/index";
import emojiMap from "./helpers/simplemap.json";
import store from "./store";
@ -311,8 +312,19 @@ function completeNicks(word, isFuzzy) {
return users.filter((w) => !w.toLowerCase().indexOf(word));
}
function getCommands() {
const clientCommands = Object.keys(commands).map((cmd) => `/${cmd}`);
const cmds = [...new Set(Array.from(constants.commands).concat(clientCommands))];
if (!store.state.settings.searchEnabled) {
cmds.pop("/search");
}
return cmds.sort();
}
function completeCommands(word) {
const words = constants.commands.slice();
const words = getCommands().slice();
return fuzzyGrep(word, words);
}

View File

@ -1,5 +1,3 @@
const clientSideCommands = ["/collapse", "/expand"];
const passThroughCommands = [
"/as",
"/bs",
@ -43,19 +41,12 @@ const userInputs = [
const pluginCommands = new Map();
const getCommands = (client) => {
const commands = Array.from(userInputs.keys())
const getCommands = () =>
Array.from(userInputs.keys())
.concat(Array.from(pluginCommands.keys()))
.map((command) => `/${command}`)
.concat(clientSideCommands)
.concat(passThroughCommands);
if (client.messageProvider !== undefined) {
commands.push("/search");
}
return commands.sort();
};
.concat(passThroughCommands)
.sort();
const addPluginCommand = (packageInfo, command, func) => {
func.packageInfo = packageInfo;

View File

@ -692,7 +692,7 @@ function initializeClient(socket, client, token, lastMessage, openChannel) {
),
token: tokenToSend,
});
socket.emit("commands", inputs.getCommands(client));
socket.emit("commands", inputs.getCommands());
};
if (Helper.config.public) {

View File

@ -4,34 +4,16 @@ const expect = require("chai").expect;
const inputs = require("../../../src/plugins/inputs");
describe("inputs", function () {
const client = {
messageProvider: undefined,
};
const clientWithProvider = {
...client,
messageProvider: true,
};
describe(".getCommands", function () {
it("should return a non-empty array", function () {
expect(inputs.getCommands(client)).to.be.an("array").that.is.not.empty;
expect(inputs.getCommands()).to.be.an("array").that.is.not.empty;
});
it("should only return strings with no whitespaces and starting with /", function () {
inputs.getCommands(client).forEach((command) => {
inputs.getCommands().forEach((command) => {
expect(command).to.be.a("string").that.does.not.match(/\s/);
expect(command[0]).to.equal("/");
});
});
it("should not include /search without a message provider", function () {
expect(inputs.getCommands(client)).to.be.an("array").that.does.not.contains("/search");
});
it("should include /search with a message provider", function () {
expect(inputs.getCommands(clientWithProvider))
.to.be.an("array")
.that.contains("/search");
});
});
});