mirror of https://github.com/zulip/zulip.git
stream_edit: Use user_ids for subscribing/unsubscribing users to a stream.
We now send user_ids to the backend API for subscribing/unsubscribing
users to a stream instead of emails.
This change is done now because we have just migrated the backend API to
support sending user_ids in 2187c84
, so it wasn't possible before.
This change is helpful because sending user_ids is more robust, as those
are an immutable reference to a user, rather than something that can
change with time.
This commit is contained in:
parent
44995e36df
commit
48ac1082c1
|
@ -1261,10 +1261,16 @@ run_test('on_events', () => {
|
||||||
name: 'test',
|
name: 'test',
|
||||||
subscribed: true,
|
subscribed: true,
|
||||||
};
|
};
|
||||||
|
const mentioned = {
|
||||||
|
full_name: 'Foo Barson',
|
||||||
|
email: 'foo@bar.com',
|
||||||
|
user_id: 34,
|
||||||
|
};
|
||||||
|
people.add_active_user(mentioned);
|
||||||
let invite_user_to_stream_called = false;
|
let invite_user_to_stream_called = false;
|
||||||
stream_edit.invite_user_to_stream = function (email, sub, success) {
|
stream_edit.invite_user_to_stream = function (user_ids, sub, success) {
|
||||||
invite_user_to_stream_called = true;
|
invite_user_to_stream_called = true;
|
||||||
assert.deepEqual(email, ['foo@bar.com']);
|
assert.deepEqual(user_ids, [mentioned.user_id]);
|
||||||
assert.equal(sub, subscription);
|
assert.equal(sub, subscription);
|
||||||
success(); // This will check success callback path.
|
success(); // This will check success callback path.
|
||||||
};
|
};
|
||||||
|
@ -1286,7 +1292,7 @@ run_test('on_events', () => {
|
||||||
$('#stream_message_recipient_stream').val('no-stream');
|
$('#stream_message_recipient_stream').val('no-stream');
|
||||||
helper.container.data = function (field) {
|
helper.container.data = function (field) {
|
||||||
assert.equal(field, 'useremail');
|
assert.equal(field, 'useremail');
|
||||||
return 'foo@bar.com';
|
return mentioned.email;
|
||||||
};
|
};
|
||||||
$("#compose-textarea").select(noop);
|
$("#compose-textarea").select(noop);
|
||||||
helper.target.prop('disabled', false);
|
helper.target.prop('disabled', false);
|
||||||
|
|
|
@ -998,7 +998,7 @@ exports.initialize = function () {
|
||||||
if (email === undefined) {
|
if (email === undefined) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const user_id = people.get_user_id(email);
|
||||||
function success() {
|
function success() {
|
||||||
const all_invites = $("#compose_invite_users");
|
const all_invites = $("#compose_invite_users");
|
||||||
invite_row.remove();
|
invite_row.remove();
|
||||||
|
@ -1031,7 +1031,7 @@ exports.initialize = function () {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
stream_edit.invite_user_to_stream([email], sub, success, xhr_failure);
|
stream_edit.invite_user_to_stream([user_id], sub, success, xhr_failure);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#compose_invite_users").on('click', '.compose_invite_close', function (event) {
|
$("#compose_invite_users").on('click', '.compose_invite_close', function (event) {
|
||||||
|
|
|
@ -176,9 +176,7 @@ function create_stream() {
|
||||||
// TODO: We can eliminate the user_ids -> principals conversion
|
// TODO: We can eliminate the user_ids -> principals conversion
|
||||||
// once we upgrade the backend to accept user_ids.
|
// once we upgrade the backend to accept user_ids.
|
||||||
const user_ids = get_principals();
|
const user_ids = get_principals();
|
||||||
const persons = user_ids.map(user_id => people.get_by_user_id(user_id)).filter(Boolean);
|
data.principals = JSON.stringify(user_ids);
|
||||||
const principals = persons.map(person => person.email);
|
|
||||||
data.principals = JSON.stringify(principals);
|
|
||||||
|
|
||||||
loading.make_indicator($('#stream_creating_indicator'), {text: i18n.t('Creating stream...')});
|
loading.make_indicator($('#stream_creating_indicator'), {text: i18n.t('Creating stream...')});
|
||||||
|
|
||||||
|
|
|
@ -129,25 +129,25 @@ exports.update_stream_description = function (sub) {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.invite_user_to_stream = function (emails, sub, success, failure) {
|
exports.invite_user_to_stream = function (user_ids, sub, success, failure) {
|
||||||
// TODO: use stream_id when backend supports it
|
// TODO: use stream_id when backend supports it
|
||||||
const stream_name = sub.name;
|
const stream_name = sub.name;
|
||||||
return channel.post({
|
return channel.post({
|
||||||
url: "/json/users/me/subscriptions",
|
url: "/json/users/me/subscriptions",
|
||||||
data: {subscriptions: JSON.stringify([{name: stream_name}]),
|
data: {subscriptions: JSON.stringify([{name: stream_name}]),
|
||||||
principals: JSON.stringify(emails)},
|
principals: JSON.stringify(user_ids)},
|
||||||
success: success,
|
success: success,
|
||||||
error: failure,
|
error: failure,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.remove_user_from_stream = function (user_email, sub, success, failure) {
|
exports.remove_user_from_stream = function (user_id, sub, success, failure) {
|
||||||
// TODO: use stream_id when backend supports it
|
// TODO: use stream_id when backend supports it
|
||||||
const stream_name = sub.name;
|
const stream_name = sub.name;
|
||||||
return channel.del({
|
return channel.del({
|
||||||
url: "/json/users/me/subscriptions",
|
url: "/json/users/me/subscriptions",
|
||||||
data: {subscriptions: JSON.stringify([stream_name]),
|
data: {subscriptions: JSON.stringify([stream_name]),
|
||||||
principals: JSON.stringify([user_email])},
|
principals: JSON.stringify([user_id])},
|
||||||
success: success,
|
success: success,
|
||||||
error: failure,
|
error: failure,
|
||||||
});
|
});
|
||||||
|
@ -559,10 +559,6 @@ exports.initialize = function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
const user_ids = user_pill.get_user_ids(exports.pill_widget);
|
const user_ids = user_pill.get_user_ids(exports.pill_widget);
|
||||||
const emails = user_ids.map(user_id => {
|
|
||||||
const person = people.get_by_user_id(user_id);
|
|
||||||
return person.email;
|
|
||||||
});
|
|
||||||
const stream_subscription_info_elem = $('.stream_subscription_info').expectOne();
|
const stream_subscription_info_elem = $('.stream_subscription_info').expectOne();
|
||||||
|
|
||||||
function invite_success(data) {
|
function invite_success(data) {
|
||||||
|
@ -586,7 +582,7 @@ exports.initialize = function () {
|
||||||
.addClass("text-error").removeClass("text-success");
|
.addClass("text-error").removeClass("text-success");
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.invite_user_to_stream(emails, sub, invite_success, invite_failure);
|
exports.invite_user_to_stream(user_ids, sub, invite_success, invite_failure);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#subscriptions_table").on("submit", ".subscriber_list_remove form", function (e) {
|
$("#subscriptions_table").on("submit", ".subscriber_list_remove form", function (e) {
|
||||||
|
@ -594,7 +590,6 @@ exports.initialize = function () {
|
||||||
|
|
||||||
const list_entry = $(e.target).closest("tr");
|
const list_entry = $(e.target).closest("tr");
|
||||||
const target_user_id = parseInt(list_entry.attr("data-subscriber-id"), 10);
|
const target_user_id = parseInt(list_entry.attr("data-subscriber-id"), 10);
|
||||||
const principal = people.get_by_user_id(target_user_id).email;
|
|
||||||
const settings_row = $(e.target).closest('.subscription_settings');
|
const settings_row = $(e.target).closest('.subscription_settings');
|
||||||
|
|
||||||
const sub = get_sub_for_target(settings_row);
|
const sub = get_sub_for_target(settings_row);
|
||||||
|
@ -622,7 +617,7 @@ exports.initialize = function () {
|
||||||
.addClass("text-error").removeClass("text-success");
|
.addClass("text-error").removeClass("text-success");
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.remove_user_from_stream(principal, sub, removal_success,
|
exports.remove_user_from_stream(target_user_id, sub, removal_success,
|
||||||
removal_failure);
|
removal_failure);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue