mirror of
https://github.com/zulip/zulip.git
synced 2025-11-08 16:01:58 +00:00
Change stream_data.remove_subscriber() to accept user ids.
This commit is contained in:
@@ -639,7 +639,7 @@ run(function (override, capture, args) {
|
|||||||
// user_ids more directly in some of subscriptions code.
|
// user_ids more directly in some of subscriptions code.
|
||||||
override('people', 'get_person_from_user_id', function (user_id) {
|
override('people', 'get_person_from_user_id', function (user_id) {
|
||||||
assert_same(user_id, 555);
|
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;
|
var event = event_fixtures.subscription__add;
|
||||||
@@ -655,10 +655,10 @@ run(function (override, capture, args) {
|
|||||||
assert_same(args.user_id, 555);
|
assert_same(args.user_id, 555);
|
||||||
|
|
||||||
event = event_fixtures.subscription__peer_remove;
|
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);
|
dispatch(event);
|
||||||
assert_same(args.sub, event.subscriptions[0]);
|
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;
|
event = event_fixtures.subscription__remove;
|
||||||
var stream_id_looked_up;
|
var stream_id_looked_up;
|
||||||
|
|||||||
@@ -180,14 +180,18 @@ var people = global.people;
|
|||||||
assert.equal(sub.subscriber_count, 1);
|
assert.equal(sub.subscriber_count, 1);
|
||||||
|
|
||||||
// remove
|
// remove
|
||||||
stream_data.remove_subscriber('Rome', email);
|
stream_data.remove_subscriber('Rome', brutus.user_id);
|
||||||
assert(!stream_data.user_is_subscribed('Rome', email));
|
assert(!stream_data.user_is_subscribed('Rome', email));
|
||||||
sub = stream_data.get_sub('Rome');
|
sub = stream_data.get_sub('Rome');
|
||||||
stream_data.update_subscribers_count(sub);
|
stream_data.update_subscribers_count(sub);
|
||||||
assert.equal(sub.subscriber_count, 0);
|
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
|
// 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));
|
assert(!stream_data.user_is_subscribed('Rome', email));
|
||||||
sub = stream_data.get_sub('Rome');
|
sub = stream_data.get_sub('Rome');
|
||||||
stream_data.update_subscribers_count(sub);
|
stream_data.update_subscribers_count(sub);
|
||||||
@@ -203,10 +207,9 @@ var people = global.people;
|
|||||||
|
|
||||||
// Verify that we noop and don't crash when unsubscribed.
|
// Verify that we noop and don't crash when unsubscribed.
|
||||||
sub.subscribed = false;
|
sub.subscribed = false;
|
||||||
global.blueslip.warn = function () {};
|
|
||||||
stream_data.add_subscriber('Rome', brutus.user_id);
|
stream_data.add_subscriber('Rome', brutus.user_id);
|
||||||
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
|
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);
|
assert.equal(stream_data.user_is_subscribed('Rome', email), undefined);
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ function dispatch_normal_event(event) {
|
|||||||
person = people.get_person_from_user_id(event.user_id);
|
person = people.get_person_from_user_id(event.user_id);
|
||||||
email = person.email;
|
email = person.email;
|
||||||
_.each(event.subscriptions, function (sub) {
|
_.each(event.subscriptions, function (sub) {
|
||||||
stream_data.remove_subscriber(sub, email);
|
stream_data.remove_subscriber(sub, event.user_id);
|
||||||
$(document).trigger('peer_unsubscribe.zulip',
|
$(document).trigger('peer_unsubscribe.zulip',
|
||||||
{stream_name: sub, user_email: email});
|
{stream_name: sub, user_email: email});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -32,7 +32,8 @@ exports.rename_sub = function (stream_id, new_name) {
|
|||||||
|
|
||||||
exports.unsubscribe_myself = function (sub) {
|
exports.unsubscribe_myself = function (sub) {
|
||||||
// Remove user from subscriber's list
|
// 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;
|
sub.subscribed = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -166,15 +167,14 @@ exports.add_subscriber = function (stream_name, user_id) {
|
|||||||
sub.subscribers.set(user_id, true);
|
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);
|
var sub = exports.get_sub(stream_name);
|
||||||
if (typeof sub === 'undefined') {
|
if (typeof sub === 'undefined') {
|
||||||
blueslip.warn("We got a remove_subscriber call for a non-existent stream " + stream_name);
|
blueslip.warn("We got a remove_subscriber call for a non-existent stream " + stream_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var user_id = people.get_user_id(user_email);
|
if (!sub.subscribers.has(user_id)) {
|
||||||
if (!user_id) {
|
blueslip.warn("We tried to remove invalid subscriber: " + user_id);
|
||||||
blueslip.error("We tried to remove invalid subscriber: " + user_email);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user