import { SERVER_BUFFER, BufferType } from "./state.js"; function getActiveClient(app) { var buf = app.state.buffers.get(app.state.activeBuffer); if (!buf) { return null; } return app.clients.get(buf.network); } export default { "buffer": (app, args) => { var name = args[0]; for (var buf of app.state.buffers.values()) { if (buf.name === name) { app.switchBuffer(buf); return; } } throw new Error("Unknown buffer"); }, "close": (app, args) => { var activeBuffer = app.state.buffers.get(app.state.activeBuffer); if (!activeBuffer || activeBuffer.type == BufferType.SERVER) { throw new Error("Not in a user or channel buffer"); } app.close(activeBuffer.id); }, "disconnect": (app, args) => { app.disconnect(); }, "join": (app, args) => { var channel = args[0]; if (!channel) { throw new Error("Missing channel name"); } getActiveClient(app).send({ command: "JOIN", params: [channel] }); }, "me": (app, args) => { var action = args.join(" "); var activeBuffer = app.state.buffers.get(app.state.activeBuffer); if (!activeBuffer) { throw new Error("Not in a buffer"); } var text = `\x01ACTION ${action}\x01`; app.privmsg(activeBuffer.name, text); }, "msg": (app, args) => { var target = args[0]; var text = args.slice(1).join(" "); getActiveClient(app).send({ command: "PRIVMSG", params: [target, text] }); }, "nick": (app, args) => { var newNick = args[0]; getActiveClient(app).send({ command: "NICK", params: [newNick] }); }, "notice": (app, args) => { var target = args[0]; var text = args.slice(1).join(" "); getActiveClient(app).send({ command: "NOTICE", params: [target, text] }); }, "part": (app, args) => { var reason = args.join(" "); var activeBuffer = app.state.buffers.get(app.state.activeBuffer); if (!activeBuffer || !app.isChannel(activeBuffer.name)) { throw new Error("Not in a channel"); } var params = [activeBuffer.name]; if (reason) { params.push(reason); } getActiveClient(app).send({ command: "PART", params }); }, "query": (app, args) => { var nick = args[0]; if (!nick) { throw new Error("Missing nickname"); } app.open(nick); }, "quit": (app, args) => { if (window.localStorage) { localStorage.removeItem("autoconnect"); } app.close({ name: SERVER_BUFFER }); }, "reconnect": (app, args) => { app.reconnect(); }, "topic": (app, args) => { var activeBuffer = app.state.buffers.get(app.state.activeBuffer); if (!activeBuffer || !app.isChannel(activeBuffer.name)) { throw new Error("Not in a channel"); } var params = [activeBuffer.name]; if (args.length > 0) { params.push(args.join(" ")); } getActiveClient(app).send({ command: "TOPIC", params }); }, };