diff --git a/components/app.js b/components/app.js index c16df41..463ca58 100644 --- a/components/app.js +++ b/components/app.js @@ -914,7 +914,7 @@ export default class App extends Component { this.switchToChannel = target; client.send({ command: "JOIN", params: [target] }); } else { - client.send({ command: "WHO", params: [target] }); + client.who(target); this.createBuffer(netID, target); this.switchBuffer({ network: netID, name: target }); } diff --git a/lib/client.js b/lib/client.js index 6695a33..3be4d26 100644 --- a/lib/client.js +++ b/lib/client.js @@ -293,6 +293,25 @@ export default class Client extends EventTarget { } } + who(mask) { + var msg = { command: "WHO", params: [mask] }; + var l = []; + return this.roundtrip(msg, (event) => { + var msg = event.detail.message; + switch (msg.command) { + case irc.RPL_WHOREPLY: + // TODO: match with mask + l.push(msg); + break; + case irc.RPL_ENDOFWHO: + if (msg.params[1] === mask) { + return l; + } + break; + } + }); + } + whois(target) { var targetCM = this.cm(target); var msg = { command: "WHOIS", params: [target] };