user_groups: Do not show deactivated users in members list.

This commit adds code to now show deactivated users in the
members list in "#groups" UI and the user group popover.
This commit is contained in:
Sahil Batra
2023-12-07 09:11:48 +05:30
committed by Tim Abbott
parent 381670d2b6
commit a97cf5d107
4 changed files with 17 additions and 16 deletions

View File

@@ -187,9 +187,8 @@ export function handle_member_edit_event(group_id, user_ids) {
const group = user_groups.get_user_group_from_id(group_id); const group = user_groups.get_user_group_from_id(group_id);
// update members list if currently rendered. // update members list if currently rendered.
const members = [...group.members];
if (is_editing_group(group_id)) { if (is_editing_group(group_id)) {
user_group_edit_members.update_member_list_widget(group_id, members); user_group_edit_members.update_member_list_widget(group);
if (user_ids.includes(people.my_current_user_id())) { if (user_ids.includes(people.my_current_user_id())) {
update_group_membership_button(group_id); update_group_membership_button(group_id);
} }

View File

@@ -36,9 +36,15 @@ function get_potential_members() {
return people.filter_all_users(is_potential_member); return people.filter_all_users(is_potential_member);
} }
export function update_member_list_widget(group_id, member_ids) { function get_user_group_members(group) {
assert(group_id === current_group_id, "Unexpected group rerendering members list"); const member_ids = [...group.members];
const users = people.get_users_from_ids(member_ids); const active_member_ids = member_ids.filter((user_id) => people.is_person_active(user_id));
return people.get_users_from_ids(active_member_ids);
}
export function update_member_list_widget(group) {
assert(group.id === current_group_id, "Unexpected group rerendering members list");
const users = get_user_group_members(group);
people.sort_but_pin_current_user_on_top(users); people.sort_but_pin_current_user_on_top(users);
member_list_widget.replace_list_data(users); member_list_widget.replace_list_data(users);
} }
@@ -54,8 +60,7 @@ function format_member_list_elem(person) {
}); });
} }
function make_list_widget({$parent_container, name, user_ids}) { function make_list_widget({$parent_container, name, users}) {
const users = people.get_users_from_ids(user_ids);
people.sort_but_pin_current_user_on_top(users); people.sort_but_pin_current_user_on_top(users);
const $list_container = $parent_container.find(".member_table"); const $list_container = $parent_container.find(".member_table");
@@ -104,7 +109,7 @@ export function enable_member_management({group, $parent_container}) {
member_list_widget = make_list_widget({ member_list_widget = make_list_widget({
$parent_container, $parent_container,
name: "user_group_members", name: "user_group_members",
user_ids: [...group.members], users: get_user_group_members(group),
}); });
} }

View File

@@ -119,11 +119,10 @@ export function register_click_handlers() {
function fetch_group_members(member_ids) { function fetch_group_members(member_ids) {
return member_ids return member_ids
.map((m) => people.maybe_get_user_by_id(m)) .map((m) => people.maybe_get_user_by_id(m))
.filter((m) => m !== undefined) .filter((m) => m !== undefined && people.is_active_user_for_popover(m.user_id))
.map((p) => ({ .map((p) => ({
...p, ...p,
user_circle_class: buddy_data.get_user_circle_class(p.user_id), user_circle_class: buddy_data.get_user_circle_class(p.user_id),
is_active: people.is_active_user_for_popover(p.user_id),
user_last_seen_time_status: buddy_data.user_last_seen_time_status(p.user_id), user_last_seen_time_status: buddy_data.user_last_seen_time_status(p.user_id),
})); }));
} }

View File

@@ -10,12 +10,10 @@
<ul class="nav nav-list member-list" data-simplebar data-simplebar-auto-hide="false"> <ul class="nav nav-list member-list" data-simplebar data-simplebar-auto-hide="false">
{{#each members}} {{#each members}}
<li> <li>
{{#if is_active }} {{#if is_bot}}
{{#if is_bot}} <i class="zulip-icon zulip-icon-bot" aria-hidden="true"></i>
<i class="zulip-icon zulip-icon-bot" aria-hidden="true"></i> {{else}}
{{else}} <span class="user_circle {{user_circle_class}} popover_user_presence" title="{{user_last_seen_time_status}}"></span>
<span class="user_circle {{user_circle_class}} popover_user_presence" title="{{user_last_seen_time_status}}"></span>
{{/if}}
{{/if}} {{/if}}
<span>{{full_name}}</span> <span>{{full_name}}</span>
</li> </li>