mirror of https://github.com/zulip/zulip.git
Add and use util.is_current_user helper function.
Previously, we were checking if a particular user was the current user in dozens of places in the codebase, and correct case-insensitive checks were not used consistently, leading to bugs like #502.
This commit is contained in:
parent
0bf2d171ae
commit
b25562ca1d
|
@ -1,3 +1,7 @@
|
||||||
|
add_dependencies({
|
||||||
|
util: 'js/util.js'
|
||||||
|
});
|
||||||
|
|
||||||
set_global('page_params', {
|
set_global('page_params', {
|
||||||
alert_words: ['alertone', 'alerttwo', 'alertthree', 'al*rt.*s', '.+'],
|
alert_words: ['alertone', 'alerttwo', 'alertthree', 'al*rt.*s', '.+'],
|
||||||
email: 'tester@zulip.com'
|
email: 'tester@zulip.com'
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
add_dependencies({
|
||||||
|
util: 'js/util.js'
|
||||||
|
});
|
||||||
|
|
||||||
var _ = global._;
|
var _ = global._;
|
||||||
|
|
||||||
set_global('$', function (f) {
|
set_global('$', function (f) {
|
||||||
|
|
|
@ -5,7 +5,8 @@ add_dependencies({
|
||||||
var people = require("js/people.js");
|
var people = require("js/people.js");
|
||||||
|
|
||||||
set_global('page_params', {
|
set_global('page_params', {
|
||||||
people_list: []
|
people_list: [],
|
||||||
|
email: 'hamlet@example.com'
|
||||||
});
|
});
|
||||||
set_global('activity', {
|
set_global('activity', {
|
||||||
set_user_statuses: function () {}
|
set_user_statuses: function () {}
|
||||||
|
|
|
@ -371,7 +371,7 @@ function focus_ping() {
|
||||||
|
|
||||||
// Ping returns the active peer list
|
// Ping returns the active peer list
|
||||||
_.each(data.presences, function (presence, this_email) {
|
_.each(data.presences, function (presence, this_email) {
|
||||||
if (page_params.email !== this_email) {
|
if (!util.is_current_user(this_email)) {
|
||||||
exports.presence_info[this_email] = status_from_timestamp(data.server_timestamp, presence);
|
exports.presence_info[this_email] = status_from_timestamp(data.server_timestamp, presence);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -413,7 +413,7 @@ exports.set_user_statuses = function (users, server_time) {
|
||||||
var updated_users = {};
|
var updated_users = {};
|
||||||
var status;
|
var status;
|
||||||
_.each(users, function (presence, email) {
|
_.each(users, function (presence, email) {
|
||||||
if (email === page_params.email) {
|
if (util.is_current_user(email)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
status = status_from_timestamp(server_time, presence);
|
status = status_from_timestamp(server_time, presence);
|
||||||
|
|
|
@ -42,7 +42,7 @@ exports.process_message = function (message) {
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.notifies = function (message) {
|
exports.notifies = function (message) {
|
||||||
return ((message.sender_email !== page_params.email) && message.alerted);
|
return !util.is_current_user(message.sender_email) && message.alerted;
|
||||||
};
|
};
|
||||||
|
|
||||||
return exports;
|
return exports;
|
||||||
|
|
|
@ -13,7 +13,7 @@ var bot_data = (function () {
|
||||||
var set_can_admin = function bot_data__set_can_admin(bot) {
|
var set_can_admin = function bot_data__set_can_admin(bot) {
|
||||||
if (page_params.is_admin) {
|
if (page_params.is_admin) {
|
||||||
bot.can_admin = true;
|
bot.can_admin = true;
|
||||||
} else if (page_params.email === bot.owner) {
|
} else if (bot.owner !== undefined && util.is_current_user(bot.owner)) {
|
||||||
bot.can_admin = true;
|
bot.can_admin = true;
|
||||||
} else {
|
} else {
|
||||||
bot.can_admin = false;
|
bot.can_admin = false;
|
||||||
|
|
|
@ -103,7 +103,7 @@ exports.would_receive_message = function (email) {
|
||||||
// helpful if we want to emphasize the '.unfaded' class later (applied
|
// helpful if we want to emphasize the '.unfaded' class later (applied
|
||||||
// to users who will definitely receive the message).
|
// to users who will definitely receive the message).
|
||||||
|
|
||||||
if (email.toLowerCase() === page_params.email.toLowerCase()) {
|
if (util.is_current_user(email)) {
|
||||||
// We never want to fade you yourself, so pretend it's true even if
|
// We never want to fade you yourself, so pretend it's true even if
|
||||||
// it's not.
|
// it's not.
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -332,7 +332,7 @@ MessageListView.prototype = {
|
||||||
if (row.hasClass('mention')) {
|
if (row.hasClass('mention')) {
|
||||||
row.find('.user-mention').each(function () {
|
row.find('.user-mention').each(function () {
|
||||||
var email = $(this).attr('data-user-email');
|
var email = $(this).attr('data-user-email');
|
||||||
if (email === '*' || email === page_params.email) {
|
if (email === '*' || util.is_current_user(email)) {
|
||||||
$(this).addClass('user-mention-me');
|
$(this).addClass('user-mention-me');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -558,8 +558,7 @@ MessageListView.prototype = {
|
||||||
var row_id = rows.id(elem);
|
var row_id = rows.id(elem);
|
||||||
// check for `row_id` NaN in case we're looking at a date row or bookend row
|
// check for `row_id` NaN in case we're looking at a date row or bookend row
|
||||||
if (row_id > -1 &&
|
if (row_id > -1 &&
|
||||||
this.get_message(row_id).sender_email === page_params.email)
|
util.is_current_user(this.get_message(row_id).sender_email)) {
|
||||||
{
|
|
||||||
distance_to_last_message_sent_by_me += elem.height();
|
distance_to_last_message_sent_by_me += elem.height();
|
||||||
id_of_last_message_sent_by_us = rows.id(elem);
|
id_of_last_message_sent_by_us = rows.id(elem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ exports.get_private_message_recipient = function (message, attr, fallback_attr)
|
||||||
var recipient, i;
|
var recipient, i;
|
||||||
var other_recipients = _.filter(message.display_recipient,
|
var other_recipients = _.filter(message.display_recipient,
|
||||||
function (element) {
|
function (element) {
|
||||||
return element.email !== page_params.email;
|
return !util.is_current_user(element.email);
|
||||||
});
|
});
|
||||||
if (other_recipients.length === 0) {
|
if (other_recipients.length === 0) {
|
||||||
// private message with oneself
|
// private message with oneself
|
||||||
|
@ -131,7 +131,7 @@ function add_message_metadata(message) {
|
||||||
|
|
||||||
var involved_people;
|
var involved_people;
|
||||||
|
|
||||||
message.sent_by_me = (message.sender_email === page_params.email);
|
message.sent_by_me = util.is_current_user(message.sender_email);
|
||||||
|
|
||||||
message.flags = message.flags || [];
|
message.flags = message.flags || [];
|
||||||
message.historical = (message.flags !== undefined &&
|
message.historical = (message.flags !== undefined &&
|
||||||
|
|
|
@ -488,7 +488,7 @@ function get_message_header(message) {
|
||||||
if (message.display_recipient.length > 2) {
|
if (message.display_recipient.length > 2) {
|
||||||
return "group PM with " + message.display_reply_to;
|
return "group PM with " + message.display_reply_to;
|
||||||
}
|
}
|
||||||
if (message.reply_to === page_params.email) {
|
if (util.is_current_user(message.reply_to)) {
|
||||||
return "PM with yourself";
|
return "PM with yourself";
|
||||||
}
|
}
|
||||||
return "PM with " + message.display_reply_to;
|
return "PM with " + message.display_reply_to;
|
||||||
|
@ -496,7 +496,7 @@ function get_message_header(message) {
|
||||||
|
|
||||||
exports.possibly_notify_new_messages_outside_viewport = function (messages) {
|
exports.possibly_notify_new_messages_outside_viewport = function (messages) {
|
||||||
_.each(messages, function (message) {
|
_.each(messages, function (message) {
|
||||||
if (message.sender_email !== page_params.email) {
|
if (!util.is_current_user(message.sender_email)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// queue up offscreen because of narrowed, or (secondarily) offscreen
|
// queue up offscreen because of narrowed, or (secondarily) offscreen
|
||||||
|
@ -533,7 +533,7 @@ exports.possibly_notify_new_messages_outside_viewport = function (messages) {
|
||||||
// the current_msg_list (!can_apply_locally; a.k.a. "a search").
|
// the current_msg_list (!can_apply_locally; a.k.a. "a search").
|
||||||
exports.notify_messages_outside_current_search = function (messages) {
|
exports.notify_messages_outside_current_search = function (messages) {
|
||||||
_.each(messages, function (message) {
|
_.each(messages, function (message) {
|
||||||
if (message.sender_email !== page_params.email) {
|
if (!util.is_current_user(message.sender_email)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
exports.notify_above_composebox("Sent! Your recent message is outside the current search.",
|
exports.notify_above_composebox("Sent! Your recent message is outside the current search.",
|
||||||
|
|
|
@ -44,7 +44,7 @@ function people_cmp(person1, person2) {
|
||||||
exports.get_rest_of_realm = function get_rest_of_realm() {
|
exports.get_rest_of_realm = function get_rest_of_realm() {
|
||||||
var people_minus_you = [];
|
var people_minus_you = [];
|
||||||
realm_people_dict.each(function (person) {
|
realm_people_dict.each(function (person) {
|
||||||
if (person.email !== page_params.email) {
|
if (!util.is_current_user(person.email)) {
|
||||||
people_minus_you.push({"email": person.email,
|
people_minus_you.push({"email": person.email,
|
||||||
"full_name": person.full_name});
|
"full_name": person.full_name});
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ exports.update = function update(person) {
|
||||||
|
|
||||||
person_obj.full_name = person.full_name;
|
person_obj.full_name = person.full_name;
|
||||||
|
|
||||||
if (person.email === page_params.email) {
|
if (util.is_current_user(person.email)) {
|
||||||
page_params.fullname = person.full_name;
|
page_params.fullname = person.full_name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ exports.update = function update(person) {
|
||||||
if (_.has(person, 'is_admin')) {
|
if (_.has(person, 'is_admin')) {
|
||||||
person_obj.is_admin = person.is_admin;
|
person_obj.is_admin = person.is_admin;
|
||||||
|
|
||||||
if (person.email === page_params.email) {
|
if (util.is_current_user(person.email)) {
|
||||||
page_params.is_admin = person.is_admin;
|
page_params.is_admin = person.is_admin;
|
||||||
admin.show_or_hide_menu_item();
|
admin.show_or_hide_menu_item();
|
||||||
}
|
}
|
||||||
|
|
|
@ -887,7 +887,7 @@ $(function () {
|
||||||
if (data.subscribed.hasOwnProperty(principal)) {
|
if (data.subscribed.hasOwnProperty(principal)) {
|
||||||
error_elem.addClass("hide");
|
error_elem.addClass("hide");
|
||||||
warning_elem.addClass("hide");
|
warning_elem.addClass("hide");
|
||||||
if (principal === page_params.email) {
|
if (util.is_current_user(principal)) {
|
||||||
// mark_subscribed adds the user to the member list
|
// mark_subscribed adds the user to the member list
|
||||||
exports.mark_subscribed(stream);
|
exports.mark_subscribed(stream);
|
||||||
} else {
|
} else {
|
||||||
|
@ -925,7 +925,7 @@ $(function () {
|
||||||
// Remove the user from the subscriber list.
|
// Remove the user from the subscriber list.
|
||||||
list_entry.remove();
|
list_entry.remove();
|
||||||
|
|
||||||
if (principal === page_params.email) {
|
if (util.is_current_user(principal)) {
|
||||||
// If you're unsubscribing yourself, mark whole
|
// If you're unsubscribing yourself, mark whole
|
||||||
// stream entry as you being unsubscribed.
|
// stream entry as you being unsubscribed.
|
||||||
exports.mark_unsubscribed(stream_name);
|
exports.mark_unsubscribed(stream_name);
|
||||||
|
|
|
@ -61,6 +61,10 @@ exports.same_stream_and_subject = function util_same_stream_and_subject(a, b) {
|
||||||
(a.subject.toLowerCase() === b.subject.toLowerCase()));
|
(a.subject.toLowerCase() === b.subject.toLowerCase()));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.is_current_user = function (email) {
|
||||||
|
return email.toLowerCase() === page_params.email.toLowerCase();
|
||||||
|
};
|
||||||
|
|
||||||
exports.same_major_recipient = function (a, b) {
|
exports.same_major_recipient = function (a, b) {
|
||||||
// Same behavior as same_recipient, except that it returns true for messages
|
// Same behavior as same_recipient, except that it returns true for messages
|
||||||
// on different topics but the same stream.
|
// on different topics but the same stream.
|
||||||
|
|
Loading…
Reference in New Issue