mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
user_groups: Handle add/remove members events.
This fixes the real-time sync for the user groups membership data structure to work like these work in the rest of Zulip; now, edits made in one browser are immediately and correctly reflected in other browsers.
This commit is contained in:
@@ -508,19 +508,6 @@ set_global('people', {
|
||||
assert.equal(opts.data.delete, '[4]');
|
||||
|
||||
(function test_post_success() {
|
||||
var user_group_remove_called = false;
|
||||
var user_group_add_called = false;
|
||||
user_groups.remove = function (data) {
|
||||
assert.equal(data.name, 'Mobile');
|
||||
assert.equal(data.id, 1);
|
||||
user_group_remove_called = true;
|
||||
};
|
||||
user_groups.add = function (data) {
|
||||
assert.equal(data.name, 'Mobile');
|
||||
assert.equal(data.id, 1);
|
||||
assert.deepEqual(data.members, [2, 31]);
|
||||
user_group_add_called = true;
|
||||
};
|
||||
fake_this.text(i18n.t('fake-text'));
|
||||
fake_this.delay = function (time) {
|
||||
assert.equal(time, 200);
|
||||
@@ -535,8 +522,6 @@ set_global('people', {
|
||||
};
|
||||
opts.success();
|
||||
assert(save_btn_fade_out_called);
|
||||
assert(user_group_remove_called);
|
||||
assert(user_group_add_called);
|
||||
assert.equal(fake_this.html(), '<i class="fa fa-check" aria-hidden="true"></i>');
|
||||
assert.equal(fake_this.text(), 'translated: Saved!');
|
||||
}());
|
||||
|
||||
@@ -370,10 +370,13 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
|
||||
case 'user_group':
|
||||
if (event.op === 'add') {
|
||||
user_groups.add(event.group);
|
||||
settings_user_groups.reload();
|
||||
} else if (event.op === 'add_members') {
|
||||
user_groups.add_members(event.group_id, event.user_ids);
|
||||
} else if (event.op === 'remove_members') {
|
||||
user_groups.remove_members(event.group_id, event.user_ids);
|
||||
}
|
||||
settings_user_groups.reload();
|
||||
break;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -122,13 +122,6 @@ exports.populate_user_groups = function () {
|
||||
delete: JSON.stringify(removed),
|
||||
},
|
||||
success: function () {
|
||||
original_group = _.reject(original_group, function (e) {
|
||||
return removed.includes(e);
|
||||
});
|
||||
original_group = original_group.concat(added);
|
||||
group_data.members = original_group;
|
||||
user_groups.remove(group_data);
|
||||
user_groups.add(group_data);
|
||||
btn.text(i18n.t("Saved!")).delay(200).fadeOut(function () {
|
||||
$(this).html('<i class="fa fa-check" aria-hidden="true"></i>');
|
||||
});
|
||||
|
||||
@@ -49,6 +49,20 @@ exports.is_member_of = function (user_group_id, user_id) {
|
||||
return user_group.members.has(user_id);
|
||||
};
|
||||
|
||||
exports.add_members = function (user_group_id, user_ids) {
|
||||
var user_group = user_group_by_id_dict.get(user_group_id);
|
||||
_.each(user_ids, function (user_id) {
|
||||
user_group.members.set(user_id, true);
|
||||
});
|
||||
};
|
||||
|
||||
exports.remove_members = function (user_group_id, user_ids) {
|
||||
var user_group = user_group_by_id_dict.get(user_group_id);
|
||||
_.each(user_ids, function (user_id) {
|
||||
user_group.members.del(user_id);
|
||||
});
|
||||
};
|
||||
|
||||
exports.initialize = function () {
|
||||
_.each(page_params.realm_user_groups, function (user_group) {
|
||||
exports.add(user_group);
|
||||
|
||||
Reference in New Issue
Block a user