thelounge/client/js/commands/join.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2019-11-16 18:24:03 +01:00
import socket from "../socket";
import {store} from "../store";
2019-11-16 18:24:03 +01:00
import {switchToChannel} from "../router";
2019-11-03 12:23:03 +01:00
function input(args: string[]) {
if (args.length > 0) {
2019-10-04 18:56:18 +02:00
let channels = args[0];
2019-10-04 18:56:18 +02:00
if (channels.length > 0) {
const chanTypes = store.state.activeChannel?.network.serverOptions.CHANTYPES;
2019-10-04 18:56:18 +02:00
const channelList = args[0].split(",");
if (chanTypes && chanTypes.length > 0) {
for (let c = 0; c < channelList.length; c++) {
if (!chanTypes.includes(channelList[c][0])) {
channelList[c] = chanTypes[0] + channelList[c];
}
}
}
channels = channelList.join(",");
2019-11-03 12:23:03 +01:00
const chan = store.getters.findChannelOnCurrentNetwork(channels);
if (chan) {
2019-11-11 20:18:55 +01:00
switchToChannel(chan);
2019-10-04 18:56:18 +02:00
} else {
if (store.state.activeChannel) {
socket.emit("input", {
text: `/join ${channels} ${args.length > 1 ? args[1] : ""}`,
target: store.state.activeChannel.channel.id,
});
}
2019-10-04 18:56:18 +02:00
return true;
}
}
} else if (store.state.activeChannel?.channel.type === "channel") {
// If `/join` command is used without any arguments, re-join current channel
socket.emit("input", {
target: store.state.activeChannel.channel.id,
text: `/join ${store.state.activeChannel.channel.name}`,
});
return true;
}
2019-11-16 18:24:03 +01:00
}
export default {input};