mirror of
https://codeberg.org/emersion/gamja.git
synced 2024-11-24 00:08:01 -05:00
commands: use Map instead of object
This commit is contained in:
parent
9c2beac7dd
commit
db0a69dcfd
2 changed files with 79 additions and 41 deletions
116
commands.js
116
commands.js
|
@ -53,6 +53,7 @@ function markServerBufferUnread(app) {
|
|||
}
|
||||
|
||||
const join = {
|
||||
name: "join",
|
||||
usage: "<name> [password]",
|
||||
description: "Join a channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -69,6 +70,7 @@ const join = {
|
|||
};
|
||||
|
||||
const kick = {
|
||||
name: "kick",
|
||||
usage: "<nick> [comment]",
|
||||
description: "Remove a user from the channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -83,6 +85,7 @@ const kick = {
|
|||
};
|
||||
|
||||
const ban = {
|
||||
name: "ban",
|
||||
usage: "[nick]",
|
||||
description: "Ban a user from the channel, or display the current ban list",
|
||||
execute: (app, args) => {
|
||||
|
@ -111,8 +114,9 @@ function givemode(app, args, mode) {
|
|||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
"away": {
|
||||
const commands = [
|
||||
{
|
||||
name: "away",
|
||||
usage: "[message]",
|
||||
description: "Set away message",
|
||||
execute: (app, args) => {
|
||||
|
@ -123,8 +127,9 @@ export default {
|
|||
getActiveClient(app).send({command: "AWAY", params});
|
||||
},
|
||||
},
|
||||
"ban": ban,
|
||||
"buffer": {
|
||||
ban,
|
||||
{
|
||||
name: "buffer",
|
||||
usage: "<name>",
|
||||
description: "Switch to a buffer",
|
||||
execute: (app, args) => {
|
||||
|
@ -138,7 +143,8 @@ export default {
|
|||
throw new Error("Unknown buffer");
|
||||
},
|
||||
},
|
||||
"close": {
|
||||
{
|
||||
name: "close",
|
||||
description: "Close the current buffer",
|
||||
execute: (app, args) => {
|
||||
let activeBuffer = app.state.buffers.get(app.state.activeBuffer);
|
||||
|
@ -148,29 +154,34 @@ export default {
|
|||
app.close(activeBuffer.id);
|
||||
},
|
||||
},
|
||||
"deop": {
|
||||
{
|
||||
name: "deop",
|
||||
usage: "<nick>",
|
||||
description: "Remove operator status for a user on this channel",
|
||||
execute: (app, args) => givemode(app, args, "-o"),
|
||||
},
|
||||
"devoice": {
|
||||
{
|
||||
name: "devoice",
|
||||
usage: "<nick>",
|
||||
description: "Remove voiced status for a user on this channel",
|
||||
execute: (app, args) => givemode(app, args, "-v"),
|
||||
},
|
||||
"disconnect": {
|
||||
{
|
||||
name: "disconnect",
|
||||
description: "Disconnect from the server",
|
||||
execute: (app, args) => {
|
||||
app.disconnect();
|
||||
},
|
||||
},
|
||||
"help": {
|
||||
{
|
||||
name: "help",
|
||||
description: "Show help menu",
|
||||
execute: (app, args) => {
|
||||
app.openHelp();
|
||||
},
|
||||
},
|
||||
"invite": {
|
||||
{
|
||||
name: "invite",
|
||||
usage: "<nick>",
|
||||
description: "Invite a user to the channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -184,10 +195,11 @@ export default {
|
|||
]});
|
||||
},
|
||||
},
|
||||
"j": join,
|
||||
"join": join,
|
||||
"kick": kick,
|
||||
"kickban": {
|
||||
{ ...join, name: "j" },
|
||||
join,
|
||||
kick,
|
||||
{
|
||||
name: "kickban",
|
||||
usage: "<target>",
|
||||
description: "Ban a user and removes them from the channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -195,7 +207,8 @@ export default {
|
|||
ban.execute(app, args);
|
||||
},
|
||||
},
|
||||
"lusers": {
|
||||
{
|
||||
name: "lusers",
|
||||
usage: "[<mask> [<target>]]",
|
||||
description: "Request user statistics about the network",
|
||||
execute: (app, args) => {
|
||||
|
@ -203,7 +216,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"me": {
|
||||
{
|
||||
name: "me",
|
||||
usage: "<action>",
|
||||
description: "Send an action message to the current buffer",
|
||||
execute: (app, args) => {
|
||||
|
@ -213,7 +227,8 @@ export default {
|
|||
app.privmsg(target, text);
|
||||
},
|
||||
},
|
||||
"mode": {
|
||||
{
|
||||
name: "mode",
|
||||
usage: "[target] [modes] [mode args...]",
|
||||
description: "Query or change a channel or user mode",
|
||||
execute: (app, args) => {
|
||||
|
@ -225,7 +240,8 @@ export default {
|
|||
getActiveClient(app).send({ command: "MODE", params: args });
|
||||
},
|
||||
},
|
||||
"motd": {
|
||||
{
|
||||
name: "motd",
|
||||
usage: "[server]",
|
||||
description: "Get the Message Of The Day",
|
||||
execute: (app, args) => {
|
||||
|
@ -233,7 +249,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"msg": {
|
||||
{
|
||||
name: "msg",
|
||||
usage: "<target> <message>",
|
||||
description: "Send a message to a nickname or a channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -242,7 +259,8 @@ export default {
|
|||
getActiveClient(app).send({ command: "PRIVMSG", params: [target, text] });
|
||||
},
|
||||
},
|
||||
"nick": {
|
||||
{
|
||||
name: "nick",
|
||||
usage: "<nick>",
|
||||
description: "Change current nickname",
|
||||
execute: (app, args) => {
|
||||
|
@ -250,7 +268,8 @@ export default {
|
|||
getActiveClient(app).send({ command: "NICK", params: [newNick] });
|
||||
},
|
||||
},
|
||||
"notice": {
|
||||
{
|
||||
name: "notice",
|
||||
usage: "<target> <message>",
|
||||
description: "Send a notice to a nickname or a channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -259,12 +278,14 @@ export default {
|
|||
getActiveClient(app).send({ command: "NOTICE", params: [target, text] });
|
||||
},
|
||||
},
|
||||
"op": {
|
||||
{
|
||||
name: "op",
|
||||
usage: "<nick>",
|
||||
description: "Give a user operator status on this channel",
|
||||
execute: (app, args) => givemode(app, args, "+o"),
|
||||
},
|
||||
"part": {
|
||||
{
|
||||
name: "part",
|
||||
usage: "[reason]",
|
||||
description: "Leave a channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -277,7 +298,8 @@ export default {
|
|||
getActiveClient(app).send({ command: "PART", params });
|
||||
},
|
||||
},
|
||||
"query": {
|
||||
{
|
||||
name: "query",
|
||||
usage: "<nick> [message]",
|
||||
description: "Open a buffer to send messages to a nickname",
|
||||
execute: (app, args) => {
|
||||
|
@ -293,7 +315,8 @@ export default {
|
|||
}
|
||||
},
|
||||
},
|
||||
"quiet": {
|
||||
{
|
||||
name: "quiet",
|
||||
usage: "[nick]",
|
||||
description: "Quiet a user in the channel, or display the current quiet list",
|
||||
execute: (app, args) => {
|
||||
|
@ -307,13 +330,15 @@ export default {
|
|||
}
|
||||
},
|
||||
},
|
||||
"quit": {
|
||||
{
|
||||
name: "quit",
|
||||
description: "Quit",
|
||||
execute: (app, args) => {
|
||||
app.close({ name: SERVER_BUFFER });
|
||||
},
|
||||
},
|
||||
"quote": {
|
||||
{
|
||||
name: "quote",
|
||||
usage: "<command>",
|
||||
description: "Send a raw IRC command to the server",
|
||||
execute: (app, args) => {
|
||||
|
@ -326,13 +351,15 @@ export default {
|
|||
getActiveClient(app).send(msg);
|
||||
},
|
||||
},
|
||||
"reconnect": {
|
||||
{
|
||||
name: "reconnect",
|
||||
description: "Reconnect to the server",
|
||||
execute: (app, args) => {
|
||||
app.reconnect();
|
||||
},
|
||||
},
|
||||
"setname": {
|
||||
{
|
||||
name: "setname",
|
||||
usage: "<realname>",
|
||||
description: "Change current realname",
|
||||
execute: (app, args) => {
|
||||
|
@ -345,7 +372,8 @@ export default {
|
|||
// TODO: save to local storage
|
||||
},
|
||||
},
|
||||
"stats": {
|
||||
{
|
||||
name: "stats",
|
||||
usage: "<query> [server]",
|
||||
description: "Request server statistics",
|
||||
execute: (app, args) => {
|
||||
|
@ -361,7 +389,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"topic": {
|
||||
{
|
||||
name: "topic",
|
||||
usage: "<topic>",
|
||||
description: "Change the topic of the current channel",
|
||||
execute: (app, args) => {
|
||||
|
@ -373,26 +402,30 @@ export default {
|
|||
getActiveClient(app).send({ command: "TOPIC", params });
|
||||
},
|
||||
},
|
||||
"unban": {
|
||||
{
|
||||
name: "unban",
|
||||
usage: "<nick>",
|
||||
description: "Remove a user from the ban list",
|
||||
execute: (app, args) => {
|
||||
return setUserHostMode(app, args, "-b");
|
||||
},
|
||||
},
|
||||
"unquiet": {
|
||||
{
|
||||
name: "unquiet",
|
||||
usage: "<nick>",
|
||||
description: "Remove a user from the quiet list",
|
||||
execute: (app, args) => {
|
||||
return setUserHostMode(app, args, "-q");
|
||||
},
|
||||
},
|
||||
"voice": {
|
||||
{
|
||||
name: "voice",
|
||||
usage: "<nick>",
|
||||
description: "Give a user voiced status on this channel",
|
||||
execute: (app, args) => givemode(app, args, "+v"),
|
||||
},
|
||||
"who": {
|
||||
{
|
||||
name: "who",
|
||||
usage: "<mask>",
|
||||
description: "Retrieve a list of users",
|
||||
execute: (app, args) => {
|
||||
|
@ -400,7 +433,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"whois": {
|
||||
{
|
||||
name: "whois",
|
||||
usage: "<nick>",
|
||||
description: "Retrieve information about a user",
|
||||
execute: (app, args) => {
|
||||
|
@ -412,7 +446,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"whowas": {
|
||||
{
|
||||
name: "whowas",
|
||||
usage: "<nick> [count]",
|
||||
description: "Retrieve information about an offline user",
|
||||
execute: (app, args) => {
|
||||
|
@ -423,7 +458,8 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
"list": {
|
||||
{
|
||||
name: "list",
|
||||
usage: "[filter]",
|
||||
description: "Retrieve a list of channels from a network",
|
||||
execute: (app, args) => {
|
||||
|
@ -431,4 +467,6 @@ export default {
|
|||
markServerBufferUnread(app);
|
||||
},
|
||||
},
|
||||
};
|
||||
];
|
||||
|
||||
export default new Map(commands.map((cmd) => [cmd.name, cmd]));
|
||||
|
|
|
@ -1583,7 +1583,7 @@ export default class App extends Component {
|
|||
let name = parts[0].toLowerCase().slice(1);
|
||||
let args = parts.slice(1);
|
||||
|
||||
let cmd = commands[name];
|
||||
let cmd = commands.get(name);
|
||||
if (!cmd) {
|
||||
this.showError(`Unknown command "${name}" (run "/help" to get a command list)`);
|
||||
return;
|
||||
|
@ -1715,7 +1715,7 @@ export default class App extends Component {
|
|||
}
|
||||
|
||||
if (prefix.startsWith("/")) {
|
||||
let repl = fromList(Object.keys(commands), prefix.slice(1));
|
||||
let repl = fromList([...commands.keys()], prefix.slice(1));
|
||||
return repl.map((cmd) => "/" + cmd);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue