Change stream_data.remove_subscriber() to accept user ids.

This commit is contained in:
Steve Howell
2016-11-09 07:05:30 -08:00
committed by Tim Abbott
parent 00068f3164
commit 5e51a93688
4 changed files with 16 additions and 13 deletions

View File

@@ -639,7 +639,7 @@ run(function (override, capture, args) {
// user_ids more directly in some of subscriptions code.
override('people', 'get_person_from_user_id', function (user_id) {
assert_same(user_id, 555);
return {email: 'bob@example.com'};
return {email: 'this-is-not-really-used-in-the-test'};
});
var event = event_fixtures.subscription__add;
@@ -655,10 +655,10 @@ run(function (override, capture, args) {
assert_same(args.user_id, 555);
event = event_fixtures.subscription__peer_remove;
override('stream_data', 'remove_subscriber', capture(['sub', 'email']));
override('stream_data', 'remove_subscriber', capture(['sub', 'user_id']));
dispatch(event);
assert_same(args.sub, event.subscriptions[0]);
assert_same(args.email, 'bob@example.com');
assert_same(args.user_id, 555);
event = event_fixtures.subscription__remove;
var stream_id_looked_up;

View File

@@ -180,14 +180,18 @@ var people = global.people;
assert.equal(sub.subscriber_count, 1);
// remove
stream_data.remove_subscriber('Rome', email);
stream_data.remove_subscriber('Rome', brutus.user_id);
assert(!stream_data.user_is_subscribed('Rome', email));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
assert.equal(sub.subscriber_count, 0);
// Defensive code will give warnings, which we ignore for the
// tests, but the defensive code needs to not actually blow up.
global.blueslip.warn = function () {};
// verify that removing an already-removed subscriber is a noop
stream_data.remove_subscriber('Rome', email);
stream_data.remove_subscriber('Rome', brutus.user_id);
assert(!stream_data.user_is_subscribed('Rome', email));
sub = stream_data.get_sub('Rome');
stream_data.update_subscribers_count(sub);
@@ -203,10 +207,9 @@ var people = global.people;
// Verify that we noop and don't crash when unsubscribed.
sub.subscribed = false;
global.blueslip.warn = function () {};
stream_data.add_subscriber('Rome', brutus.user_id);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
stream_data.remove_subscriber('Rome', email);
stream_data.remove_subscriber('Rome', brutus.user_id);
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
}());

View File

@@ -143,7 +143,7 @@ function dispatch_normal_event(event) {
person = people.get_person_from_user_id(event.user_id);
email = person.email;
_.each(event.subscriptions, function (sub) {
stream_data.remove_subscriber(sub, email);
stream_data.remove_subscriber(sub, event.user_id);
$(document).trigger('peer_unsubscribe.zulip',
{stream_name: sub, user_email: email});
});

View File

@@ -32,7 +32,8 @@ exports.rename_sub = function (stream_id, new_name) {
exports.unsubscribe_myself = function (sub) {
// Remove user from subscriber's list
exports.remove_subscriber(sub.name, page_params.email);
var user_id = people.get_user_id(page_params.email);
exports.remove_subscriber(sub.name, user_id);
sub.subscribed = false;
};
@@ -166,15 +167,14 @@ exports.add_subscriber = function (stream_name, user_id) {
sub.subscribers.set(user_id, true);
};
exports.remove_subscriber = function (stream_name, user_email) {
exports.remove_subscriber = function (stream_name, user_id) {
var sub = exports.get_sub(stream_name);
if (typeof sub === 'undefined') {
blueslip.warn("We got a remove_subscriber call for a non-existent stream " + stream_name);
return;
}
var user_id = people.get_user_id(user_email);
if (!user_id) {
blueslip.error("We tried to remove invalid subscriber: " + user_email);
if (!sub.subscribers.has(user_id)) {
blueslip.warn("We tried to remove invalid subscriber: " + user_id);
return;
}