mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +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.
 | 
			
		||||
    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;
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 | 
			
		||||
}());
 | 
			
		||||
 
 | 
			
		||||
@@ -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});
 | 
			
		||||
            });
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user