diff --git a/frontend_tests/node_tests/dispatch.js b/frontend_tests/node_tests/dispatch.js index d727880b7c..e416d3d662 100644 --- a/frontend_tests/node_tests/dispatch.js +++ b/frontend_tests/node_tests/dispatch.js @@ -239,13 +239,22 @@ run_test("user groups", ({override}) => { event = event_fixtures.user_group__update; { const stub = make_stub(); + const user_group_settings_ui_stub = make_stub(); + override(user_groups, "update", stub.f); + override(user_groups_settings_ui, "update_group", user_group_settings_ui_stub.f); + dispatch(event); assert.equal(stub.num_calls, 1); - const args = stub.get_args("event"); + assert.equal(user_group_settings_ui_stub.num_calls, 1); + + let args = stub.get_args("event"); assert_same(args.event.group_id, event.group_id); assert_same(args.event.data.name, event.data.name); assert_same(args.event.data.description, event.data.description); + + args = user_group_settings_ui_stub.get_args("group_id"); + assert_same(args.group_id, event.group_id); } }); diff --git a/static/js/server_events_dispatch.js b/static/js/server_events_dispatch.js index a593358866..444f24a8f5 100644 --- a/static/js/server_events_dispatch.js +++ b/static/js/server_events_dispatch.js @@ -776,6 +776,7 @@ export function dispatch_normal_event(event) { break; case "update": user_groups.update(event); + user_groups_settings_ui.update_group(event.group_id); break; default: blueslip.error("Unexpected event type user_group/" + event.op); diff --git a/static/js/user_group_edit.js b/static/js/user_group_edit.js index e4fe10e02a..208b3820e2 100644 --- a/static/js/user_group_edit.js +++ b/static/js/user_group_edit.js @@ -80,6 +80,12 @@ function show_membership_settings(group) { }); } +export function update_settings_pane(group) { + const $edit_container = get_edit_container(group); + $edit_container.find(".group-name").text(group.name); + $edit_container.find(".group-description").text(group.description); +} + export function show_settings_for(node) { const group = get_user_group_for_target(node); const html = render_user_group_settings({ diff --git a/static/js/user_groups_settings_ui.js b/static/js/user_groups_settings_ui.js index 870b8b74f3..4d0ae540e8 100644 --- a/static/js/user_groups_settings_ui.js +++ b/static/js/user_groups_settings_ui.js @@ -133,6 +133,24 @@ export function add_group_to_table(group) { } } +export function update_group(group_id) { + if (!overlays.groups_open()) { + return; + } + const group = user_groups.get_user_group_from_id(group_id); + const $group_row = row_for_group_id(group_id); + // update left side pane + $group_row.find(".group-name").text(group.name); + $group_row.find(".description").text(group.description); + + if (get_active_data().id === group.id) { + // update right side pane + user_group_edit.update_settings_pane(group); + // update settings title + $("#groups_overlay .user-group-info-title").text(group.name); + } +} + export function change_state(section) { if (!section) { show_user_group_settings_pane.nothing_selected();