mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
group-settings: Refactor live update code.
This commit refactors code to live update UI when group permission settings are changed. This change makes the code cleaner and also makes sure we do not update the UI multiple times when multiple settings are changed in a single request.
This commit is contained in:
@@ -1375,6 +1375,30 @@ export function sync_group_permission_setting(property: string, group: UserGroup
|
||||
}
|
||||
}
|
||||
|
||||
export function update_group_right_panel(group: UserGroup, changed_settings: string[]): void {
|
||||
if (changed_settings.includes("can_manage_group")) {
|
||||
update_group_management_ui();
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
changed_settings.includes("can_add_members_group") ||
|
||||
changed_settings.includes("can_remove_members_group")
|
||||
) {
|
||||
update_group_membership_button(group.id);
|
||||
update_members_panel_ui(group);
|
||||
return;
|
||||
}
|
||||
|
||||
if (
|
||||
changed_settings.includes("can_join_group") ||
|
||||
changed_settings.includes("can_leave_group")
|
||||
) {
|
||||
update_group_membership_button(group.id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
export function update_group(event: UserGroupUpdateEvent, group: UserGroup): void {
|
||||
if (!overlays.groups_open()) {
|
||||
return;
|
||||
@@ -1397,6 +1421,10 @@ export function update_group(event: UserGroupUpdateEvent, group: UserGroup): voi
|
||||
return;
|
||||
}
|
||||
|
||||
const changed_group_settings = group_permission_settings
|
||||
.get_group_permission_settings()
|
||||
.filter((setting_name) => event.data[setting_name] !== undefined);
|
||||
|
||||
if (get_active_data().id === group.id) {
|
||||
// update right side pane
|
||||
update_group_details(group);
|
||||
@@ -1406,36 +1434,16 @@ export function update_group(event: UserGroupUpdateEvent, group: UserGroup): voi
|
||||
.text(user_groups.get_display_group_name(group.name))
|
||||
.addClass("showing-info-title");
|
||||
}
|
||||
if (event.data.can_mention_group !== undefined) {
|
||||
sync_group_permission_setting("can_mention_group", group);
|
||||
update_group_management_ui();
|
||||
}
|
||||
if (event.data.can_add_members_group !== undefined) {
|
||||
sync_group_permission_setting("can_add_members_group", group);
|
||||
update_group_management_ui();
|
||||
}
|
||||
if (event.data.can_manage_group !== undefined) {
|
||||
sync_group_permission_setting("can_manage_group", group);
|
||||
update_group_management_ui();
|
||||
}
|
||||
if (event.data.can_join_group !== undefined) {
|
||||
sync_group_permission_setting("can_join_group", group);
|
||||
update_group_membership_button(group.id);
|
||||
}
|
||||
if (event.data.can_leave_group !== undefined) {
|
||||
sync_group_permission_setting("can_leave_group", group);
|
||||
update_group_membership_button(group.id);
|
||||
}
|
||||
if (event.data.can_remove_members_group !== undefined) {
|
||||
sync_group_permission_setting("can_remove_members_group", group);
|
||||
update_group_management_ui();
|
||||
|
||||
if (changed_group_settings.length > 0) {
|
||||
update_group_right_panel(group, changed_group_settings);
|
||||
}
|
||||
}
|
||||
|
||||
const changed_group_settings = group_permission_settings
|
||||
.get_group_permission_settings()
|
||||
.filter((setting_name) => event.data[setting_name] !== undefined);
|
||||
for (const setting_name of changed_group_settings) {
|
||||
if (get_active_data().id === group.id) {
|
||||
sync_group_permission_setting(setting_name, group);
|
||||
}
|
||||
update_group_setting_in_permissions_panel(
|
||||
setting_name,
|
||||
group_setting_value_schema.parse(event.data[setting_name]),
|
||||
|
||||
Reference in New Issue
Block a user