user_groups: Pass correct group object for adding new group to UI.

We previously passed the UserGroupRaw type object received in
the user group creation event to user_group_edit.add_group_to_table
instead of the UserGroup type object.

The add_group_to_table function is called after receiving creation
event only, but other functions called later in the flow are called
at other times as well like when opening edit panel for a particular
group and they expect UserGroup type object, so this commit fixes it.
This commit is contained in:
Sahil Batra
2024-09-09 15:11:46 +05:30
committed by Tim Abbott
parent f3fafc719f
commit 6482f0c2ea
3 changed files with 14 additions and 10 deletions

View File

@@ -918,12 +918,13 @@ export function dispatch_normal_event(event) {
case "user_group": case "user_group":
switch (event.op) { switch (event.op) {
case "add": case "add": {
user_groups.add(event.group); const user_group = user_groups.add(event.group);
if (overlays.groups_open()) { if (overlays.groups_open()) {
user_group_edit.add_group_to_table(event.group); user_group_edit.add_group_to_table(user_group);
} }
break; break;
}
case "remove": case "remove":
user_groups.remove(user_groups.get_user_group_from_id(event.group_id)); user_groups.remove(user_groups.get_user_group_from_id(event.group_id));
user_group_edit.handle_deleted_group(event.group_id); user_group_edit.handle_deleted_group(event.group_id);

View File

@@ -39,7 +39,7 @@ export function init(): void {
// WE INITIALIZE DATA STRUCTURES HERE! // WE INITIALIZE DATA STRUCTURES HERE!
init(); init();
export function add(user_group_raw: UserGroupRaw): void { export function add(user_group_raw: UserGroupRaw): UserGroup {
// Reformat the user group members structure to be a set. // Reformat the user group members structure to be a set.
const user_group = { const user_group = {
description: user_group_raw.description, description: user_group_raw.description,
@@ -56,6 +56,7 @@ export function add(user_group_raw: UserGroupRaw): void {
user_group_name_dict.set(user_group.name, user_group); user_group_name_dict.set(user_group.name, user_group);
user_group_by_id_dict.set(user_group.id, user_group); user_group_by_id_dict.set(user_group.id, user_group);
return user_group;
} }
export function remove(user_group: UserGroup): void { export function remove(user_group: UserGroup): void {

View File

@@ -192,21 +192,23 @@ run_test("attachments", ({override}) => {
run_test("user groups", ({override}) => { run_test("user groups", ({override}) => {
let event = event_fixtures.user_group__add; let event = event_fixtures.user_group__add;
{ {
const stub = make_stub();
const user_group_settings_ui_stub = make_stub(); const user_group_settings_ui_stub = make_stub();
override(user_groups, "add", stub.f); let add_called = false;
override(user_groups, "add", (arg) => {
assert_same(arg, event.group);
add_called = true;
return event.group;
});
override(overlays, "groups_open", () => true); override(overlays, "groups_open", () => true);
override(user_group_edit, "add_group_to_table", user_group_settings_ui_stub.f); override(user_group_edit, "add_group_to_table", user_group_settings_ui_stub.f);
dispatch(event); dispatch(event);
assert.equal(stub.num_calls, 1); assert.equal(add_called, true);
assert.equal(user_group_settings_ui_stub.num_calls, 1); assert.equal(user_group_settings_ui_stub.num_calls, 1);
let args = stub.get_args("group"); const args = user_group_settings_ui_stub.get_args("group");
assert_same(args.group, event.group);
args = user_group_settings_ui_stub.get_args("group");
assert_same(args.group, event.group); assert_same(args.group, event.group);
} }