diff --git a/client/views/actions/whois.tpl b/client/views/actions/whois.tpl
index c19d4a6b..8f54dec9 100644
--- a/client/views/actions/whois.tpl
+++ b/client/views/actions/whois.tpl
@@ -1,4 +1,8 @@
-
{{> ../user_name nick=whois.nick}}
+
+ {{> ../user_name nick=whois.nick}}
+ {{#if whois.whowas}} is offline, last information:{{/if}}
+
+
{{#if whois.account}}
- Logged in as:
diff --git a/src/plugins/irc-events/whois.js b/src/plugins/irc-events/whois.js
index ef6128be..54d6f954 100644
--- a/src/plugins/irc-events/whois.js
+++ b/src/plugins/irc-events/whois.js
@@ -5,23 +5,37 @@ const Msg = require("../../models/msg");
module.exports = function(irc, network) {
const client = this;
- irc.on("whois", function(data) {
+
+ irc.on("whois", handleWhois);
+
+ irc.on("whowas", (data) => {
+ data.whowas = true;
+
+ handleWhois(data);
+ });
+
+ function handleWhois(data) {
let chan = network.getChannel(data.nick);
if (typeof chan === "undefined") {
- chan = client.createChannel({
- type: Chan.Type.QUERY,
- name: data.nick,
- });
+ // Do not create new windows for errors as they may contain illegal characters
+ if (data.error) {
+ chan = network.channels[0];
+ } else {
+ chan = client.createChannel({
+ type: Chan.Type.QUERY,
+ name: data.nick,
+ });
- client.emit("join", {
- shouldOpen: true,
- network: network.uuid,
- chan: chan.getFilteredClone(true),
- index: network.addChannel(chan),
- });
- chan.loadMessages(client, network);
- client.save();
+ client.emit("join", {
+ shouldOpen: true,
+ network: network.uuid,
+ chan: chan.getFilteredClone(true),
+ index: network.addChannel(chan),
+ });
+ chan.loadMessages(client, network);
+ client.save();
+ }
}
let msg;
@@ -43,5 +57,5 @@ module.exports = function(irc, network) {
}
chan.pushMessage(client, msg);
- });
+ }
};