mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 21:43:21 +00:00
stream_data: Modify remove_subscriber to use stream id.
This commit changes stream_data.remove_subscriber to use stream id instead of stream name. We are using stream ids so that we can avoid bugs related to live update after stream rename.
This commit is contained in:
@@ -243,7 +243,7 @@ run_test('subscribers', () => {
|
|||||||
assert.equal(sub.subscriber_count, 1);
|
assert.equal(sub.subscriber_count, 1);
|
||||||
|
|
||||||
// remove
|
// remove
|
||||||
ok = stream_data.remove_subscriber('Rome', brutus.user_id);
|
ok = stream_data.remove_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert(ok);
|
assert(ok);
|
||||||
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
|
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
|
||||||
sub = stream_data.get_sub('Rome');
|
sub = stream_data.get_sub('Rome');
|
||||||
@@ -256,14 +256,14 @@ run_test('subscribers', () => {
|
|||||||
assert.equal(stream_data.is_user_subscribed('Rome', undefined), undefined);
|
assert.equal(stream_data.is_user_subscribed('Rome', undefined), undefined);
|
||||||
|
|
||||||
// Verify noop for bad stream when removing subscriber
|
// Verify noop for bad stream when removing subscriber
|
||||||
const bad_stream = 'UNKNOWN';
|
const bad_stream_id = 999999;
|
||||||
blueslip.expect('warn', 'We got a remove_subscriber call for a non-existent stream ' + bad_stream);
|
blueslip.expect('warn', 'We got a remove_subscriber call for a non-existent stream ' + bad_stream_id);
|
||||||
ok = stream_data.remove_subscriber(bad_stream, brutus.user_id);
|
ok = stream_data.remove_subscriber(bad_stream_id, brutus.user_id);
|
||||||
assert(!ok);
|
assert(!ok);
|
||||||
|
|
||||||
// verify that removing an already-removed subscriber is a noop
|
// verify that removing an already-removed subscriber is a noop
|
||||||
blueslip.expect('warn', 'We tried to remove invalid subscriber: 104');
|
blueslip.expect('warn', 'We tried to remove invalid subscriber: 104');
|
||||||
ok = stream_data.remove_subscriber('Rome', brutus.user_id);
|
ok = stream_data.remove_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert(!ok);
|
assert(!ok);
|
||||||
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
|
assert(!stream_data.is_user_subscribed('Rome', brutus.user_id));
|
||||||
sub = stream_data.get_sub('Rome');
|
sub = stream_data.get_sub('Rome');
|
||||||
@@ -284,7 +284,7 @@ run_test('subscribers', () => {
|
|||||||
ok = stream_data.add_subscriber(sub.stream_id, brutus.user_id);
|
ok = stream_data.add_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert(ok);
|
assert(ok);
|
||||||
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
|
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
|
||||||
stream_data.remove_subscriber('Rome', brutus.user_id);
|
stream_data.remove_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), false);
|
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), false);
|
||||||
stream_data.add_subscriber(sub.stream_id, brutus.user_id);
|
stream_data.add_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
|
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), true);
|
||||||
@@ -295,7 +295,7 @@ run_test('subscribers', () => {
|
|||||||
sub.invite_only = true;
|
sub.invite_only = true;
|
||||||
stream_data.update_calculated_fields(sub);
|
stream_data.update_calculated_fields(sub);
|
||||||
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), undefined);
|
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), undefined);
|
||||||
stream_data.remove_subscriber('Rome', brutus.user_id);
|
stream_data.remove_subscriber(sub.stream_id, brutus.user_id);
|
||||||
assert.equal(stream_data.is_user_subscribed('Rome', brutus.user_id), 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.
|
// Verify that we don't crash and return false for a bad stream.
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!stream_data.remove_subscriber(sub.name, user_id)) {
|
if (!stream_data.remove_subscriber(sub.stream_id, user_id)) {
|
||||||
blueslip.warn('Cannot process peer_remove event.');
|
blueslip.warn('Cannot process peer_remove event.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ exports.is_subscriber_subset = function (sub1, sub2) {
|
|||||||
exports.unsubscribe_myself = function (sub) {
|
exports.unsubscribe_myself = function (sub) {
|
||||||
// Remove user from subscriber's list
|
// Remove user from subscriber's list
|
||||||
const user_id = people.my_current_user_id();
|
const user_id = people.my_current_user_id();
|
||||||
exports.remove_subscriber(sub.name, user_id);
|
exports.remove_subscriber(sub.stream_id, user_id);
|
||||||
sub.subscribed = false;
|
sub.subscribed = false;
|
||||||
sub.newly_subscribed = false;
|
sub.newly_subscribed = false;
|
||||||
stream_info.set_false(sub.name, sub);
|
stream_info.set_false(sub.name, sub);
|
||||||
@@ -644,10 +644,10 @@ exports.add_subscriber = function (stream_id, user_id) {
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.remove_subscriber = function (stream_name, user_id) {
|
exports.remove_subscriber = function (stream_id, user_id) {
|
||||||
const sub = exports.get_sub(stream_name);
|
const sub = exports.get_sub_by_id(stream_id);
|
||||||
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_id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!sub.subscribers.has(user_id)) {
|
if (!sub.subscribers.has(user_id)) {
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ exports.remove_deactivated_user_from_all_streams = function (user_id) {
|
|||||||
|
|
||||||
for (const sub of all_subs) {
|
for (const sub of all_subs) {
|
||||||
if (stream_data.is_user_subscribed(sub.name, user_id)) {
|
if (stream_data.is_user_subscribed(sub.name, user_id)) {
|
||||||
stream_data.remove_subscriber(sub.name, user_id);
|
stream_data.remove_subscriber(sub.stream_id, user_id);
|
||||||
subs.rerender_subscriptions_settings(sub);
|
subs.rerender_subscriptions_settings(sub);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user