Improve click handling on users and inline channels

This commit is contained in:
Pavel Djundik 2016-05-30 22:38:53 +03:00
parent 37f9fe4ea7
commit da9b0636fb
2 changed files with 41 additions and 27 deletions

View file

@ -206,16 +206,18 @@ $(function() {
})
);
renderChannel(data.chan);
var chan = sidebar.find(".chan")
// Queries do not automatically focus, unless the user did a whois
if (data.chan.type === "query" && !data.shouldOpen) {
return;
}
sidebar.find(".chan")
.sort(function(a, b) {
return $(a).data("id") - $(b).data("id");
})
.last();
if (!whois) {
chan = chan.filter(":not(.query)");
}
whois = false;
chan.click();
.last()
.click();
});
function buildChatMessage(data) {
@ -630,21 +632,46 @@ $(function() {
});
});
chat.on("click", ".inline-channel", function() {
var chan = $(".network")
.find(".chan.active")
function findCurrentNetworkChan(name) {
name = name.toLowerCase();
return $(".network .chan.active")
.parent(".network")
.find(".chan[data-title='" + $(this).data("chan") + "']");
if (chan.size() === 1) {
.find(".chan")
.filter(function() {
return $(this).data("title").toLowerCase() === name;
})
.first();
}
chat.on("click", ".inline-channel", function() {
var name = $(this).data("chan");
var chan = findCurrentNetworkChan(name);
if (chan.length) {
chan.click();
} else {
socket.emit("input", {
target: chat.data("id"),
text: "/join " + $(this).data("chan")
text: "/join " + name
});
}
});
chat.on("click", ".user", function() {
var name = $(this).data("name");
var chan = findCurrentNetworkChan(name);
if (chan.length) {
chan.click();
}
socket.emit("input", {
target: chat.data("id"),
text: "/whois " + name
});
});
chat.on("click", ".chat", function() {
setTimeout(function() {
var text = "";
@ -786,20 +813,6 @@ $(function() {
});
});
var whois = false;
chat.on("click", ".user", function() {
var user = $(this).text().trim().replace(/[+%@~&]/, "");
if (user.indexOf("#") !== -1) {
return;
}
whois = true;
var text = "/whois " + user;
socket.emit("input", {
target: chat.data("id"),
text: text
});
});
chat.on("msg", ".messages", function(e, target, msg) {
if (msg.self) {
return;

View file

@ -12,6 +12,7 @@ module.exports = function(irc, network) {
});
network.channels.push(chan);
client.emit("join", {
shouldOpen: true,
network: network.id,
chan: chan
});