From 0147826042fc7f720cefc7c5ba74af42948a8bb9 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Sun, 4 Mar 2018 08:44:12 -0800 Subject: [PATCH] user_groups: Convert members to a dict in frontend. --- frontend_tests/node_tests/settings_user_groups.js | 7 ++++--- frontend_tests/node_tests/user_groups.js | 4 ++++ static/js/popovers.js | 2 +- static/js/settings_user_groups.js | 6 +++--- static/js/user_groups.js | 5 ++++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/frontend_tests/node_tests/settings_user_groups.js b/frontend_tests/node_tests/settings_user_groups.js index c5eddd6bea..912a4b371a 100644 --- a/frontend_tests/node_tests/settings_user_groups.js +++ b/frontend_tests/node_tests/settings_user_groups.js @@ -1,3 +1,4 @@ +zrequire('dict'); zrequire('settings_user_groups'); set_global('$', global.make_zjquery()); @@ -28,7 +29,7 @@ set_global('people', { id: 1, name: 'Mobile', description: 'All mobile people', - members: [2, 4], + members: Dict.from_array([2, 4]), }; var iago = { email: 'iago@zulip.com', @@ -226,7 +227,7 @@ set_global('people', { }; pills.onPillRemove = function (handler) { - realm_user_group.members = [2, 31]; + realm_user_group.members = Dict.from_array([2, 31]); fade_to_called = false; fade_out_called = false; handler(); @@ -493,7 +494,7 @@ set_global('people', { id: 1, name: 'Mobile', description: 'All mobile people', - members: [2, 4], + members: Dict.from_array([2, 4]), }; var fake_this = $.create('fake-#user-groups_click_save_member_changes'); user_groups.get_user_group_from_id = function (id) { diff --git a/frontend_tests/node_tests/user_groups.js b/frontend_tests/node_tests/user_groups.js index fa83ea4c0a..a255d67ce6 100644 --- a/frontend_tests/node_tests/user_groups.js +++ b/frontend_tests/node_tests/user_groups.js @@ -1,12 +1,14 @@ set_global('blueslip', {}); set_global('page_params', {}); +zrequire('dict'); zrequire('user_groups'); (function test_user_groups() { var students = { name: 'Students', id: 0, + members: [1, 2], }; global.page_params.realm_user_groups = [students]; @@ -16,10 +18,12 @@ zrequire('user_groups'); var admins = { name: 'Admins', id: 1, + members: [3], }; var all = { name: 'Everyone', id: 2, + members: [1, 2, 3], }; user_groups.add(admins); diff --git a/static/js/popovers.js b/static/js/popovers.js index 6c8e47a3b5..25d530e3dd 100644 --- a/static/js/popovers.js +++ b/static/js/popovers.js @@ -189,7 +189,7 @@ function show_user_group_info_popover(element, group, message) { var args = { group_name: group.name, group_description: group.description, - members: sort_group_members(fetch_group_members(group.members)), + members: sort_group_members(fetch_group_members(group.members.keys())), }; elt.popover({ placement: calculate_info_popover_placement(popover_size, elt), diff --git a/static/js/settings_user_groups.js b/static/js/settings_user_groups.js index c515887dd5..c017da2b03 100644 --- a/static/js/settings_user_groups.js +++ b/static/js/settings_user_groups.js @@ -36,7 +36,7 @@ exports.populate_user_groups = function () { var pill_container = $('.pill-container[data-group-pills="' + data.name + '"]'); var pills = input_pill(pill_container); - data.members.forEach(function (user_id) { + data.members.keys().forEach(function (user_id) { var user = people.get_person_from_user_id(user_id); if (user) { @@ -47,7 +47,7 @@ exports.populate_user_groups = function () { }); function update_save_state(draft_group) { - var original_group = user_groups.get_user_group_from_id(data.id).members; + var original_group = user_groups.get_user_group_from_id(data.id).members.keys(); var same_groups = _.isEqual(_.sortBy(draft_group), _.sortBy(original_group)); var save_changes = pill_container.siblings('.save-member-changes'); var save_hidden = save_changes.css('display') === 'none'; @@ -110,7 +110,7 @@ exports.populate_user_groups = function () { $('#user-groups #' + data.id).on('click', '.save-member-changes', function () { var draft_group = pills.keys(); var group_data = user_groups.get_user_group_from_id(data.id); - var original_group = group_data.members; + var original_group = group_data.members.keys(); var added = _.difference(draft_group, original_group); var removed = _.difference(original_group, draft_group); var btn = $(this); diff --git a/static/js/user_groups.js b/static/js/user_groups.js index 21d762300c..09533ecf11 100644 --- a/static/js/user_groups.js +++ b/static/js/user_groups.js @@ -16,6 +16,9 @@ exports.init = function () { exports.init(); exports.add = function (user_group) { + // Reformat the user group members structure to be a dict. + user_group.members = Dict.from_array(user_group.members); + user_group_name_dict.set(user_group.name, user_group); user_group_by_id_dict.set(user_group.id, user_group); }; @@ -43,7 +46,7 @@ exports.get_realm_user_groups = function () { exports.is_member_of = function (user_group_id, user_id) { var user_group = user_group_by_id_dict.get(user_group_id); - return user_group.members.indexOf(user_id) !== -1; + return user_group.members.has(user_id); }; exports.initialize = function () {