stream_data.js: Replace user_email with user_id in func is_user_subscribed.

This commit is contained in:
YJDave
2018-04-06 08:52:07 +05:30
committed by Tim Abbott
parent c3df378ca1
commit 386c56b466
6 changed files with 33 additions and 39 deletions

View File

@@ -26,11 +26,11 @@ var bob = {
full_name: 'Bob',
};
people.add(me);
people.add_in_realm(me);
people.initialize_current_user(me.user_id);
people.add(alice);
people.add(bob);
people.add_in_realm(alice);
people.add_in_realm(bob);
(function test_set_focused_recipient() {
@@ -65,6 +65,7 @@ people.add(bob);
assert(compose_fade.would_receive_message('me@example.com'));
assert(compose_fade.would_receive_message('alice@example.com'));
assert(!compose_fade.would_receive_message('bob@example.com'));
assert.equal(compose_fade.would_receive_message('nonrealmuser@example.com'), undefined);
var good_msg = {
type: 'stream',

View File

@@ -169,26 +169,24 @@ zrequire('marked', 'third/marked/lib/marked');
stream_data.set_subscribers(sub, [fred.user_id, george.user_id]);
stream_data.update_calculated_fields(sub);
assert(stream_data.user_is_subscribed('Rome', 'FRED@zulip.com'));
assert(stream_data.user_is_subscribed('Rome', 'fred@zulip.com'));
assert(stream_data.user_is_subscribed('Rome', 'george@zulip.com'));
assert(!stream_data.user_is_subscribed('Rome', 'not_fred@zulip.com'));
assert(stream_data.is_user_subscribed('Rome', fred.user_id));
assert(stream_data.is_user_subscribed('Rome', george.user_id));
assert(!stream_data.is_user_subscribed('Rome', not_fred.user_id));
stream_data.set_subscribers(sub, []);
var email = 'brutus@zulip.com';
var brutus = {
email: email,
email: 'brutus@zulip.com',
full_name: 'Brutus',
user_id: 104,
};
people.add(brutus);
assert(!stream_data.user_is_subscribed('Rome', email));
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
// add
var ok = stream_data.add_subscriber('Rome', brutus.user_id);
assert(ok);
assert(stream_data.user_is_subscribed('Rome', email));
assert(stream_data.is_user_subscribed('Rome', brutus.user_id));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
assert.equal(sub.subscriber_count, 1);
@@ -198,7 +196,7 @@ zrequire('marked', 'third/marked/lib/marked');
// verify that adding an already-added subscriber is a noop
stream_data.add_subscriber('Rome', brutus.user_id);
assert(stream_data.user_is_subscribed('Rome', email));
assert(stream_data.is_user_subscribed('Rome', brutus.user_id));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
assert.equal(sub.subscriber_count, 1);
@@ -206,20 +204,16 @@ zrequire('marked', 'third/marked/lib/marked');
// remove
ok = stream_data.remove_subscriber('Rome', brutus.user_id);
assert(ok);
assert(!stream_data.user_is_subscribed('Rome', email));
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
assert.equal(sub.subscriber_count, 0);
// verify that checking subscription with bad email is a noop
var bad_email = 'notbrutus@zulip.org';
global.blueslip.error = function (msg) {
assert.equal(msg, "Unknown email for get_user_id: " + bad_email);
};
// verify that checking subscription with undefined user id
global.blueslip.warn = function (msg) {
assert.equal(msg, "Bad email passed to user_is_subscribed: " + bad_email);
assert.equal(msg, "Undefined user_id passed to function is_user_subscribed");
};
assert(!stream_data.user_is_subscribed('Rome', bad_email));
assert.equal(stream_data.is_user_subscribed('Rome', undefined), undefined);
// Verify noop for bad stream when removing subscriber
var bad_stream = 'UNKNOWN';
@@ -236,7 +230,7 @@ zrequire('marked', 'third/marked/lib/marked');
// verify that removing an already-removed subscriber is a noop
ok = stream_data.remove_subscriber('Rome', brutus.user_id);
assert(!ok);
assert(!stream_data.user_is_subscribed('Rome', email));
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
assert.equal(sub.subscriber_count, 0);
@@ -247,24 +241,24 @@ zrequire('marked', 'third/marked/lib/marked');
stream_data.add_sub('Rome', sub);
stream_data.add_subscriber('Rome', brutus.user_id);
sub.subscribed = true;
assert(stream_data.user_is_subscribed('Rome', email));
assert(stream_data.is_user_subscribed('Rome', brutus.user_id));
// Verify that we noop and don't crash when unsubscribed.
sub.subscribed = false;
stream_data.update_calculated_fields(sub);
ok = stream_data.add_subscriber('Rome', brutus.user_id);
assert(ok);
assert.equal(stream_data.user_is_subscribed('Rome', email), true);
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
stream_data.remove_subscriber('Rome', brutus.user_id);
assert.equal(stream_data.user_is_subscribed('Rome', email), false);
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), false);
stream_data.add_subscriber('Rome', brutus.user_id);
assert.equal(stream_data.user_is_subscribed('Rome', email), true);
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
sub.invite_only = true;
stream_data.update_calculated_fields(sub);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), undefined);
stream_data.remove_subscriber('Rome', brutus.user_id);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), undefined);
// Verify that we don't crash and return false for a bad stream.
ok = stream_data.add_subscriber('UNKNOWN', brutus.user_id);

View File

@@ -118,8 +118,8 @@ exports.would_receive_message = function (email) {
if (focused_recipient.type === 'stream') {
var user = people.get_active_user_for_email(email);
var sub = stream_data.get_sub(focused_recipient.stream);
if (!sub) {
// If the stream isn't valid, there is no risk of a mix
if (!sub || !user) {
// If the stream or user isn't valid, there is no risk of a mix
// yet, so don't fade.
return;
}
@@ -129,7 +129,7 @@ exports.would_receive_message = function (email) {
// not subscribed.
return;
}
return stream_data.user_is_subscribed(focused_recipient.stream, email);
return stream_data.is_user_subscribed(focused_recipient.stream, user.user_id);
}
// PM, so check if the given email is in the recipients list.

View File

@@ -365,18 +365,17 @@ exports.remove_subscriber = function (stream_name, user_id) {
return true;
};
exports.user_is_subscribed = function (stream_name, user_email) {
exports.is_user_subscribed = function (stream_name, user_id) {
var sub = exports.get_sub(stream_name);
if (typeof sub === 'undefined' || !sub.can_access_subscribers) {
// If we don't know about the stream, or we ourselves cannot access subscriber list,
// so we return undefined (treated as falsy if not explicitly handled).
blueslip.warn("We got a user_is_subscribed call for a non-existent or inaccessible stream.");
blueslip.warn("We got a is_user_subscribed call for a non-existent or inaccessible stream.");
return;
}
var user_id = people.get_user_id(user_email);
if (!user_id) {
blueslip.warn("Bad email passed to user_is_subscribed: " + user_email);
return false;
if (typeof user_id === "undefined") {
blueslip.warn("Undefined user_id passed to function is_user_subscribed");
return;
}
return sub.subscribers.has(user_id);

View File

@@ -213,7 +213,7 @@ function show_subscription_settings(sub_row) {
// Case-insensitive.
var item_matches = (item.email.toLowerCase().indexOf(query) !== -1) ||
(item.full_name.toLowerCase().indexOf(query) !== -1);
var is_subscribed = stream_data.user_is_subscribed(sub.name, item.email);
var is_subscribed = stream_data.is_user_subscribed(sub.name, item.user_id);
return item_matches && !is_subscribed;
},
sorter: function (matches) {

View File

@@ -186,8 +186,8 @@ function compare_for_at_mentioning(person_a, person_b, tertiary_compare, current
// give preference to subscribed users first
if (current_stream !== undefined) {
var a_is_sub = stream_data.user_is_subscribed(current_stream, person_a.email);
var b_is_sub = stream_data.user_is_subscribed(current_stream, person_b.email);
var a_is_sub = stream_data.is_user_subscribed(current_stream, person_a.user_id);
var b_is_sub = stream_data.is_user_subscribed(current_stream, person_b.user_id);
if (a_is_sub && !b_is_sub) {
return -1;