mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
buddy list: Use user_ids in DOM list elements.
This commit is contained in:
@@ -52,6 +52,8 @@ global.people.add(mark);
|
|||||||
global.people.add(norbert);
|
global.people.add(norbert);
|
||||||
|
|
||||||
|
|
||||||
|
var people = global.people;
|
||||||
|
|
||||||
var activity = require('js/activity.js');
|
var activity = require('js/activity.js');
|
||||||
|
|
||||||
activity.update_huddles = function () {};
|
activity.update_huddles = function () {};
|
||||||
@@ -75,10 +77,10 @@ activity.update_huddles = function () {};
|
|||||||
|
|
||||||
(function test_process_loaded_messages() {
|
(function test_process_loaded_messages() {
|
||||||
|
|
||||||
var huddle1 = 'bar@zulip.com,foo@zulip.com';
|
var huddle1 = 'jill@zulip.com,norbert@zulip.com';
|
||||||
var timestamp1 = 1382479029; // older
|
var timestamp1 = 1382479029; // older
|
||||||
|
|
||||||
var huddle2 = 'alice@zulip.com,bob@zulip.com';
|
var huddle2 = 'alice@zulip.com,fred@zulip.com';
|
||||||
var timestamp2 = 1382479033; // newer
|
var timestamp2 = 1382479033; // newer
|
||||||
|
|
||||||
var old_timestamp = 1382479000;
|
var old_timestamp = 1382479000;
|
||||||
@@ -110,44 +112,56 @@ activity.update_huddles = function () {};
|
|||||||
|
|
||||||
activity.process_loaded_messages(messages);
|
activity.process_loaded_messages(messages);
|
||||||
|
|
||||||
assert.deepEqual(activity.get_huddles(), [huddle2, huddle1]);
|
var user_ids_string1 = people.emails_strings_to_user_ids_string(huddle1);
|
||||||
|
var user_ids_string2 = people.emails_strings_to_user_ids_string(huddle2);
|
||||||
|
assert.deepEqual(activity.get_huddles(), [user_ids_string2, user_ids_string1]);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
(function test_full_huddle_name() {
|
(function test_full_huddle_name() {
|
||||||
|
function full_name(emails_string) {
|
||||||
|
var user_ids_string = people.emails_strings_to_user_ids_string(emails_string);
|
||||||
|
return activity.full_huddle_name(user_ids_string);
|
||||||
|
}
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.full_huddle_name('alice@zulip.com,jill@zulip.com'),
|
full_name('alice@zulip.com,jill@zulip.com'),
|
||||||
'Alice Smith, Jill Hill'
|
'Alice Smith, Jill Hill'
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.full_huddle_name('alice@zulip.com,fred@zulip.com,jill@zulip.com'),
|
full_name('alice@zulip.com,fred@zulip.com,jill@zulip.com'),
|
||||||
'Alice Smith, Fred Flintstone, Jill Hill'
|
'Alice Smith, Fred Flintstone, Jill Hill'
|
||||||
);
|
);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
(function test_short_huddle_name() {
|
(function test_short_huddle_name() {
|
||||||
|
function short_name(emails_string) {
|
||||||
|
var user_ids_string = people.emails_strings_to_user_ids_string(emails_string);
|
||||||
|
return activity.short_huddle_name(user_ids_string);
|
||||||
|
}
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.short_huddle_name('alice@zulip.com'),
|
short_name('alice@zulip.com'),
|
||||||
'Alice Smith'
|
'Alice Smith'
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.short_huddle_name('alice@zulip.com,jill@zulip.com'),
|
short_name('alice@zulip.com,jill@zulip.com'),
|
||||||
'Alice Smith, Jill Hill'
|
'Alice Smith, Jill Hill'
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.short_huddle_name('alice@zulip.com,fred@zulip.com,jill@zulip.com'),
|
short_name('alice@zulip.com,fred@zulip.com,jill@zulip.com'),
|
||||||
'Alice Smith, Fred Flintstone, Jill Hill'
|
'Alice Smith, Fred Flintstone, Jill Hill'
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.short_huddle_name('alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com'),
|
short_name('alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com'),
|
||||||
'Alice Smith, Fred Flintstone, Jill Hill, + 1 other'
|
'Alice Smith, Fred Flintstone, Jill Hill, + 1 other'
|
||||||
);
|
);
|
||||||
|
|
||||||
assert.equal(
|
assert.equal(
|
||||||
activity.short_huddle_name('alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com,norbert@zulip.com'),
|
short_name('alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com,norbert@zulip.com'),
|
||||||
'Alice Smith, Fred Flintstone, Jill Hill, + 2 others'
|
'Alice Smith, Fred Flintstone, Jill Hill, + 2 others'
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -155,6 +169,7 @@ activity.update_huddles = function () {};
|
|||||||
|
|
||||||
(function test_huddle_fraction_present() {
|
(function test_huddle_fraction_present() {
|
||||||
var huddle = 'alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com';
|
var huddle = 'alice@zulip.com,fred@zulip.com,jill@zulip.com,mark@zulip.com';
|
||||||
|
huddle = people.emails_strings_to_user_ids_string(huddle);
|
||||||
|
|
||||||
var presence_list = {};
|
var presence_list = {};
|
||||||
presence_list[alice.user_id] = {status: 'active'};
|
presence_list[alice.user_id] = {status: 'active'};
|
||||||
|
|||||||
@@ -84,31 +84,31 @@ activity.presence_info[norbert.user_id] = {status: activity.ACTIVE};
|
|||||||
var users = activity.update_users();
|
var users = activity.update_users();
|
||||||
assert.deepEqual(users, [
|
assert.deepEqual(users, [
|
||||||
{ name: 'Fred Flintstone',
|
{ name: 'Fred Flintstone',
|
||||||
email: 'fred@zulip.com',
|
user_id: fred.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'active',
|
type: 'active',
|
||||||
type_desc: 'is active',
|
type_desc: 'is active',
|
||||||
mobile: undefined },
|
mobile: undefined },
|
||||||
{ name: 'Jill Hill',
|
{ name: 'Jill Hill',
|
||||||
email: 'jill@zulip.com',
|
user_id: jill.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'active',
|
type: 'active',
|
||||||
type_desc: 'is active',
|
type_desc: 'is active',
|
||||||
mobile: undefined },
|
mobile: undefined },
|
||||||
{ name: 'Norbert Oswald',
|
{ name: 'Norbert Oswald',
|
||||||
email: 'norbert@zulip.com',
|
user_id: norbert.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'active',
|
type: 'active',
|
||||||
type_desc: 'is active',
|
type_desc: 'is active',
|
||||||
mobile: undefined },
|
mobile: undefined },
|
||||||
{ name: 'Alice Smith',
|
{ name: 'Alice Smith',
|
||||||
email: 'alice@zulip.com',
|
user_id: alice.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'idle',
|
type: 'idle',
|
||||||
type_desc: 'is not active',
|
type_desc: 'is not active',
|
||||||
mobile: undefined },
|
mobile: undefined },
|
||||||
{ name: 'Marky Mark',
|
{ name: 'Marky Mark',
|
||||||
email: 'mark@zulip.com',
|
user_id: mark.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'idle',
|
type: 'idle',
|
||||||
type_desc: 'is not active',
|
type_desc: 'is not active',
|
||||||
@@ -126,7 +126,7 @@ activity.presence_info[norbert.user_id] = {status: activity.ACTIVE};
|
|||||||
users = activity.update_users(users);
|
users = activity.update_users(users);
|
||||||
assert.deepEqual(users, [
|
assert.deepEqual(users, [
|
||||||
{ name: 'Alice Smith',
|
{ name: 'Alice Smith',
|
||||||
email: 'alice@zulip.com',
|
user_id: alice.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'active',
|
type: 'active',
|
||||||
type_desc: 'is active',
|
type_desc: 'is active',
|
||||||
@@ -143,7 +143,7 @@ activity.presence_info[norbert.user_id] = {status: activity.ACTIVE};
|
|||||||
users = activity.update_users(users);
|
users = activity.update_users(users);
|
||||||
assert.deepEqual(users, [
|
assert.deepEqual(users, [
|
||||||
{ name: 'Marky Mark',
|
{ name: 'Marky Mark',
|
||||||
email: 'mark@zulip.com',
|
user_id: mark.user_id,
|
||||||
num_unread: 0,
|
num_unread: 0,
|
||||||
type: 'active',
|
type: 'active',
|
||||||
type_desc: 'is active',
|
type_desc: 'is active',
|
||||||
|
|||||||
@@ -73,16 +73,16 @@ function update_count_in_dom(count_span, value_span, count) {
|
|||||||
value_span.text(count);
|
value_span.text(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_filter_li(name) {
|
function get_filter_li(user_ids_string) {
|
||||||
if (name.indexOf(",") < 0) {
|
if (name.indexOf(",") < 0) {
|
||||||
return $("li.user_sidebar_entry[data-email='" + name + "']");
|
return $("li.user_sidebar_entry[data-user-id='" + user_ids_string + "']");
|
||||||
} else {
|
} else {
|
||||||
return $("li.group-pms-sidebar-entry[data-emails='" + name + "']");
|
return $("li.group-pms-sidebar-entry[data-user-ids='" + user_ids_string + "']");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_count(name, count) {
|
function set_count(user_ids_string, count) {
|
||||||
var count_span = get_filter_li(name).find('.count');
|
var count_span = get_filter_li(user_ids_string).find('.count');
|
||||||
var value_span = count_span.find('.value');
|
var value_span = count_span.find('.value');
|
||||||
update_count_in_dom(count_span, value_span, count);
|
update_count_in_dom(count_span, value_span, count);
|
||||||
}
|
}
|
||||||
@@ -93,8 +93,7 @@ exports.update_dom_with_unread_counts = function (counts) {
|
|||||||
|
|
||||||
counts.pm_count.each(function (count, user_ids_string) {
|
counts.pm_count.each(function (count, user_ids_string) {
|
||||||
// TODO: just use user_ids_string in our markup
|
// TODO: just use user_ids_string in our markup
|
||||||
var emails_string = people.user_ids_string_to_emails_string(user_ids_string);
|
set_count(user_ids_string, count);
|
||||||
set_count(emails_string, count);
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -104,10 +103,17 @@ exports.process_loaded_messages = function (messages) {
|
|||||||
_.each(messages, function (message) {
|
_.each(messages, function (message) {
|
||||||
if (message.type === 'private') {
|
if (message.type === 'private') {
|
||||||
if (message.reply_to.indexOf(',') > 0) {
|
if (message.reply_to.indexOf(',') > 0) {
|
||||||
var old_timestamp = huddle_timestamps.get(message.reply_to);
|
var user_ids_string = people.emails_strings_to_user_ids_string(
|
||||||
|
message.reply_to);
|
||||||
|
|
||||||
|
if (!user_ids_string) {
|
||||||
|
blueslip.warn('Bad reply_to for huddle: ' + message.reply_to);
|
||||||
|
}
|
||||||
|
|
||||||
|
var old_timestamp = huddle_timestamps.get(user_ids_string);
|
||||||
|
|
||||||
if (!old_timestamp || (old_timestamp < message.timestamp)) {
|
if (!old_timestamp || (old_timestamp < message.timestamp)) {
|
||||||
huddle_timestamps.set(message.reply_to, message.timestamp);
|
huddle_timestamps.set(user_ids_string, message.timestamp);
|
||||||
need_resize = true;
|
need_resize = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,25 +136,25 @@ exports.get_huddles = function () {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.full_huddle_name = function (huddle) {
|
exports.full_huddle_name = function (huddle) {
|
||||||
var emails = huddle.split(',');
|
var user_ids = huddle.split(',');
|
||||||
|
|
||||||
var names = _.map(emails, function (email) {
|
var names = _.map(user_ids, function (user_id) {
|
||||||
var person = people.get_by_email(email);
|
var person = people.get_person_from_user_id(user_id);
|
||||||
return person ? person.full_name : email;
|
return person.full_name;
|
||||||
});
|
});
|
||||||
|
|
||||||
return names.join(', ');
|
return names.join(', ');
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.short_huddle_name = function (huddle) {
|
exports.short_huddle_name = function (huddle) {
|
||||||
var emails = huddle.split(',');
|
var user_ids = huddle.split(',');
|
||||||
|
|
||||||
var num_to_show = 3;
|
var num_to_show = 3;
|
||||||
var names = _.map(emails.slice(0, num_to_show), function (email) {
|
var names = _.map(user_ids.slice(0, num_to_show), function (user_id) {
|
||||||
var person = people.get_by_email(email);
|
var person = people.get_person_from_user_id(user_id);
|
||||||
return person ? person.full_name : email;
|
return person.full_name;
|
||||||
});
|
});
|
||||||
var others = emails.length - num_to_show;
|
var others = user_ids.length - num_to_show;
|
||||||
|
|
||||||
if (others === 1) {
|
if (others === 1) {
|
||||||
names.push("+ 1 other");
|
names.push("+ 1 other");
|
||||||
@@ -160,11 +166,10 @@ exports.short_huddle_name = function (huddle) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
exports.huddle_fraction_present = function (huddle, presence_info) {
|
exports.huddle_fraction_present = function (huddle, presence_info) {
|
||||||
var emails = huddle.split(',');
|
var user_ids = huddle.split(',');
|
||||||
|
|
||||||
var num_present = 0;
|
var num_present = 0;
|
||||||
_.each(emails, function (email) {
|
_.each(user_ids, function (user_id) {
|
||||||
var user_id = people.get_user_id(email);
|
|
||||||
if (presence_info[user_id]) {
|
if (presence_info[user_id]) {
|
||||||
var status = presence_info[user_id].status;
|
var status = presence_info[user_id].status;
|
||||||
if (status && (status !== 'offline')) {
|
if (status && (status !== 'offline')) {
|
||||||
@@ -173,7 +178,7 @@ exports.huddle_fraction_present = function (huddle, presence_info) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var ratio = num_present / emails.length;
|
var ratio = num_present / user_ids.length;
|
||||||
|
|
||||||
return ratio.toFixed(2);
|
return ratio.toFixed(2);
|
||||||
};
|
};
|
||||||
@@ -289,7 +294,7 @@ exports.update_users = function (user_list) {
|
|||||||
var email = person.email;
|
var email = person.email;
|
||||||
return {
|
return {
|
||||||
name: person.full_name,
|
name: person.full_name,
|
||||||
email: email,
|
user_id: user_id,
|
||||||
num_unread: get_num_unread(email),
|
num_unread: get_num_unread(email),
|
||||||
type: presence,
|
type: presence,
|
||||||
type_desc: presence_descriptions[presence],
|
type_desc: presence_descriptions[presence],
|
||||||
@@ -300,9 +305,9 @@ exports.update_users = function (user_list) {
|
|||||||
var user_info = _.map(users, info_for);
|
var user_info = _.map(users, info_for);
|
||||||
if (user_list !== undefined) {
|
if (user_list !== undefined) {
|
||||||
// Render right panel partially
|
// Render right panel partially
|
||||||
$.each(user_info, function (index, user) {
|
_.each(user_info, function (user, index) {
|
||||||
var user_index = all_users.indexOf(user.email);
|
var user_index = all_users.indexOf(user.user_id);
|
||||||
$('#user_presences').find('[data-email="' + user.email + '"]').remove();
|
$('#user_presences').find('[data-user-id="' + user.user_id + '"]').remove();
|
||||||
$('#user_presences li').eq(user_index).before(templates.render('user_presence_row', user));
|
$('#user_presences li').eq(user_index).before(templates.render('user_presence_row', user));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -345,7 +350,7 @@ exports.update_huddles = function () {
|
|||||||
|
|
||||||
var group_pms = _.map(huddles, function (huddle) {
|
var group_pms = _.map(huddles, function (huddle) {
|
||||||
return {
|
return {
|
||||||
emails: huddle,
|
user_ids_string: huddle,
|
||||||
name: exports.full_huddle_name(huddle),
|
name: exports.full_huddle_name(huddle),
|
||||||
fraction_present: exports.huddle_fraction_present(huddle, exports.presence_info),
|
fraction_present: exports.huddle_fraction_present(huddle, exports.presence_info),
|
||||||
short_name: exports.short_huddle_name(huddle)
|
short_name: exports.short_huddle_name(huddle)
|
||||||
@@ -355,9 +360,10 @@ exports.update_huddles = function () {
|
|||||||
var html = templates.render('group_pms', {group_pms: group_pms});
|
var html = templates.render('group_pms', {group_pms: group_pms});
|
||||||
$('#group-pms').expectOne().html(html);
|
$('#group-pms').expectOne().html(html);
|
||||||
|
|
||||||
_.each(huddles, function (huddle) {
|
_.each(huddles, function (user_ids_string) {
|
||||||
var count = unread.num_unread_for_person(huddle);
|
var emails_string = people.user_ids_string_to_emails_string(user_ids_string);
|
||||||
set_count(huddle, count);
|
var count = unread.num_unread_for_person(emails_string);
|
||||||
|
set_count(user_ids_string, count);
|
||||||
});
|
});
|
||||||
|
|
||||||
show_huddles();
|
show_huddles();
|
||||||
@@ -520,11 +526,12 @@ function maybe_select_person (e) {
|
|||||||
// Prevent a newline from being entered into the soon-to-be-opened composebox
|
// Prevent a newline from being entered into the soon-to-be-opened composebox
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
var topPerson = $('#user_presences li.user_sidebar_entry').first().data('email');
|
var topPerson = $('#user_presences li.user_sidebar_entry').first().attr('data-user-id');
|
||||||
if (topPerson !== undefined) {
|
if (topPerson !== undefined) {
|
||||||
// undefined if there are no results
|
// undefined if there are no results
|
||||||
|
var email = people.get_person_from_user_id(topPerson).email;
|
||||||
compose.start('private',
|
compose.start('private',
|
||||||
{trigger: 'sidebar enter key', "private_message_recipient": topPerson});
|
{trigger: 'sidebar enter key', "private_message_recipient": email});
|
||||||
}
|
}
|
||||||
// Clear the user filter
|
// Clear the user filter
|
||||||
exports.escape_search();
|
exports.escape_search();
|
||||||
|
|||||||
@@ -185,7 +185,9 @@ $(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#user_presences').expectOne().on('click', '.selectable_sidebar_block', function (e) {
|
$('#user_presences').expectOne().on('click', '.selectable_sidebar_block', function (e) {
|
||||||
var email = $(e.target).parents('li').data('email');
|
var user_id = $(e.target).parents('li').attr('data-user-id');
|
||||||
|
var email = people.get_person_from_user_id(user_id).email;
|
||||||
|
|
||||||
narrow.by('pm-with', email, {select_first_unread: true, trigger: 'sidebar'});
|
narrow.by('pm-with', email, {select_first_unread: true, trigger: 'sidebar'});
|
||||||
// The preventDefault is necessary so that clicking the
|
// The preventDefault is necessary so that clicking the
|
||||||
// link doesn't jump us to the top of the page.
|
// link doesn't jump us to the top of the page.
|
||||||
@@ -203,7 +205,8 @@ $(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$('#group-pms').expectOne().on('click', '.selectable_sidebar_block', function (e) {
|
$('#group-pms').expectOne().on('click', '.selectable_sidebar_block', function (e) {
|
||||||
var emails = $(e.target).parents('li').data('emails');
|
var user_ids_string = $(e.target).parents('li').attr('data-user-ids');
|
||||||
|
var emails = people.user_ids_string_to_emails_string(user_ids_string);
|
||||||
narrow.by('pm-with', emails, {select_first_unread: true, trigger: 'sidebar'});
|
narrow.by('pm-with', emails, {select_first_unread: true, trigger: 'sidebar'});
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|||||||
@@ -130,7 +130,9 @@ function _fade_users() {
|
|||||||
}
|
}
|
||||||
_.forEach($('.user_sidebar_entry'), function (elt) {
|
_.forEach($('.user_sidebar_entry'), function (elt) {
|
||||||
elt = $(elt);
|
elt = $(elt);
|
||||||
var would_receive = exports.would_receive_message(elt.attr('data-email'));
|
var user_id = elt.attr('data-user-id');
|
||||||
|
var email = people.get_person_from_user_id(user_id).email;
|
||||||
|
var would_receive = exports.would_receive_message(email);
|
||||||
if (would_receive === true) {
|
if (would_receive === true) {
|
||||||
elt.addClass('unfaded').removeClass('faded');
|
elt.addClass('unfaded').removeClass('faded');
|
||||||
} else if (would_receive === false) {
|
} else if (would_receive === false) {
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ exports.show_pm_list_sidebar = function () {
|
|||||||
|
|
||||||
var current_stream_sidebar_elem;
|
var current_stream_sidebar_elem;
|
||||||
var current_topic_sidebar_elem;
|
var current_topic_sidebar_elem;
|
||||||
var current_user_sidebar_email;
|
var current_user_sidebar_user_id;
|
||||||
var current_user_sidebar_popover;
|
var current_user_sidebar_popover;
|
||||||
|
|
||||||
|
|
||||||
@@ -253,7 +253,7 @@ exports.hide_user_sidebar_popover = function () {
|
|||||||
// and inject it here before calling destroy.
|
// and inject it here before calling destroy.
|
||||||
$('#user_presences').data("popover", current_user_sidebar_popover);
|
$('#user_presences').data("popover", current_user_sidebar_popover);
|
||||||
$('#user_presences').popover("destroy");
|
$('#user_presences').popover("destroy");
|
||||||
current_user_sidebar_email = undefined;
|
current_user_sidebar_user_id = undefined;
|
||||||
current_user_sidebar_popover = undefined;
|
current_user_sidebar_popover = undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -397,11 +397,10 @@ exports.register_click_handlers = function () {
|
|||||||
// use email of currently selected user, rather than some elem comparison,
|
// use email of currently selected user, rather than some elem comparison,
|
||||||
// as the presence list may be redrawn with new elements.
|
// as the presence list may be redrawn with new elements.
|
||||||
var target = $(this).closest('li');
|
var target = $(this).closest('li');
|
||||||
var email = target.find('a').attr('data-email');
|
var user_id = target.find('a').attr('data-user-id');
|
||||||
var name = target.find('a').attr('data-name');
|
var name = target.find('a').attr('data-name');
|
||||||
var user_id = people.get_user_id(email);
|
|
||||||
|
|
||||||
if (current_user_sidebar_email === email) {
|
if (current_user_sidebar_user_id === user_id) {
|
||||||
// If the popover is already shown, clicking again should toggle it.
|
// If the popover is already shown, clicking again should toggle it.
|
||||||
popovers.hide_all();
|
popovers.hide_all();
|
||||||
return;
|
return;
|
||||||
@@ -421,7 +420,7 @@ exports.register_click_handlers = function () {
|
|||||||
fixed: true
|
fixed: true
|
||||||
});
|
});
|
||||||
target.popover("show");
|
target.popover("show");
|
||||||
current_user_sidebar_email = email;
|
current_user_sidebar_user_id = user_id;
|
||||||
current_user_sidebar_popover = target.data('popover');
|
current_user_sidebar_popover = target.data('popover');
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{{! User Presence rows }}
|
{{! User Presence rows }}
|
||||||
{{#each group_pms}}
|
{{#each group_pms}}
|
||||||
<li data-emails="{{emails}}" class="group-pms-sidebar-entry narrow-filter">
|
<li data-user-ids="{{user_ids_string}}" class="group-pms-sidebar-entry narrow-filter">
|
||||||
<span class="selectable_sidebar_block">
|
<span class="selectable_sidebar_block">
|
||||||
<span class="group-pm-status-indicator" style="background:rgba(68,194,29,{{fraction_present}});"></span>
|
<span class="group-pm-status-indicator" style="background:rgba(68,194,29,{{fraction_present}});"></span>
|
||||||
<a href="#" data-name="{{name}}" title="{{name}}" class="group-pm-link">{{short_name}}</a>
|
<a href="#" data-name="{{name}}" title="{{name}}" class="group-pm-link">{{short_name}}</a>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<li data-email="{{email}}" class="user_sidebar_entry {{#if num_unread}}user-with-count {{/if}}narrow-filter user_{{type}}">
|
<li data-user-id="{{user_id}}" class="user_sidebar_entry {{#if num_unread}}user-with-count {{/if}}narrow-filter user_{{type}}">
|
||||||
<span class="selectable_sidebar_block{{#if mobile}}{{/if}}">
|
<span class="selectable_sidebar_block{{#if mobile}}{{/if}}">
|
||||||
<span class="user-status-indicator"></span>
|
<span class="user-status-indicator"></span>
|
||||||
<span class="user-device-indicator">{{#if mobile}}{{/if}}</span>
|
<span class="user-device-indicator">{{#if mobile}}{{/if}}</span>
|
||||||
<a href="#" data-email="{{email}}" data-name="{{name}}" title="{{name}} {{type_desc}}"
|
<a href="#" data-user-id="{{user_id}}" data-name="{{name}}" title="{{name}} {{type_desc}}"
|
||||||
class="{{#if my_fullname}} my_fullname{{/if}}">{{name}}</a>
|
class="{{#if my_fullname}} my_fullname{{/if}}">{{name}}</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="count"><span class="value">{{#if num_unread}}{{num_unread}}{{/if}}</span></span>
|
<span class="count"><span class="value">{{#if num_unread}}{{num_unread}}{{/if}}</span></span>
|
||||||
|
|||||||
Reference in New Issue
Block a user