compose: Change needs_subscribe_warning to use user_id.

This commit changes the needs_subscribe_warning function to
use user_id instead of emails.

This change is done because user_ids are immutable and using
user_ids is the correct way to uniquely identify a user.

We already know that user_ids being passed in this function are
active user_ids, since they come from typeaheads.
So, we only need to call 'people.get_by_user_id', to get the user
object from user_id and do not need to check the active status of
user, which was done previously using 'get_active_user_for_email'.
This commit is contained in:
sahil839 2020-06-05 19:51:22 +05:30 committed by Tim Abbott
parent f0a19ed8e6
commit 25aed90da1
2 changed files with 9 additions and 12 deletions

View File

@ -1065,7 +1065,7 @@ run_test('trigger_submit_compose_form', () => {
});
run_test('needs_subscribe_warning', () => {
people.get_active_user_for_email = function () {
people.get_by_user_id = function () {
return;
};
@ -1082,17 +1082,15 @@ run_test('needs_subscribe_warning', () => {
stream_data.add_sub(sub);
assert.equal(compose.needs_subscribe_warning(), false);
people.get_active_user_for_email = function () {
people.get_by_user_id = function () {
return {
user_id: 99,
is_bot: true,
};
};
assert.equal(compose.needs_subscribe_warning(), false);
people.get_active_user_for_email = function () {
people.get_by_user_id = function () {
return {
user_id: 99,
is_bot: false,
};
};
@ -1136,9 +1134,9 @@ run_test('warn_if_mentioning_unsubscribed_user', () => {
const checks = [
(function () {
let called;
compose.needs_subscribe_warning = function (email) {
compose.needs_subscribe_warning = function (user_id) {
called = true;
assert.equal(email, 'foo@bar.com');
assert.equal(user_id, 34);
return true;
};
return function () { assert(called); };

View File

@ -740,7 +740,7 @@ exports.handle_keyup = function (event, textarea) {
rtl.set_rtl_class_for_textarea(textarea);
};
exports.needs_subscribe_warning = function (email) {
exports.needs_subscribe_warning = function (user_id) {
// This returns true if all of these conditions are met:
// * the user is valid
// * the stream in the compose box is valid
@ -755,7 +755,7 @@ exports.needs_subscribe_warning = function (email) {
// We expect the caller to already have verified that we're
// sending to a stream and trying to mention the user.
const user = people.get_active_user_for_email(email);
const user = people.get_by_user_id(user_id);
const stream_name = compose_state.stream_name();
if (!stream_name) {
@ -774,7 +774,7 @@ exports.needs_subscribe_warning = function (email) {
return false;
}
if (stream_data.is_user_subscribed(stream_name, user.user_id)) {
if (stream_data.is_user_subscribed(stream_name, user_id)) {
// If our user is already subscribed
return false;
}
@ -905,14 +905,13 @@ exports.warn_if_mentioning_unsubscribed_user = function (mentioned) {
return;
}
const email = mentioned.email;
const user_id = mentioned.user_id;
if (mentioned.is_broadcast) {
return; // don't check if @all/@everyone/@stream
}
if (exports.needs_subscribe_warning(email)) {
if (exports.needs_subscribe_warning(user_id)) {
const error_area = $("#compose_invite_users");
const existing_invites_area = $('#compose_invite_users .compose_invite_user');