mirror of https://github.com/zulip/zulip.git
user_groups: Add `is_empty_group` function to check for nobody group.
Removes hardcoded checks for "role:nobody" by checking if the given group is empty.
This commit is contained in:
parent
c40698b6b3
commit
28ce2684bb
|
@ -259,8 +259,7 @@ function get_options_for_recipient_widget(): Option[] {
|
||||||
name: $t({defaultMessage: "Direct message"}),
|
name: $t({defaultMessage: "Direct message"}),
|
||||||
};
|
};
|
||||||
|
|
||||||
const {name} = user_groups.get_user_group_from_id(realm.realm_direct_message_permission_group);
|
if (!user_groups.is_empty_group(realm.realm_direct_message_permission_group)) {
|
||||||
if (name !== "role:nobody") {
|
|
||||||
options.unshift(direct_messages_option);
|
options.unshift(direct_messages_option);
|
||||||
} else {
|
} else {
|
||||||
options.push(direct_messages_option);
|
options.push(direct_messages_option);
|
||||||
|
|
|
@ -114,10 +114,7 @@ export function needs_subscribe_warning(user_id: number, stream_id: number): boo
|
||||||
|
|
||||||
export function check_dm_permissions_and_get_error_string(user_ids_string: string): string {
|
export function check_dm_permissions_and_get_error_string(user_ids_string: string): string {
|
||||||
if (!people.user_can_direct_message(user_ids_string)) {
|
if (!people.user_can_direct_message(user_ids_string)) {
|
||||||
const {name} = user_groups.get_user_group_from_id(
|
if (user_groups.is_empty_group(realm.realm_direct_message_permission_group)) {
|
||||||
realm.realm_direct_message_permission_group,
|
|
||||||
);
|
|
||||||
if (name === "role:nobody") {
|
|
||||||
return $t({
|
return $t({
|
||||||
defaultMessage: "Direct messages are disabled in this organization.",
|
defaultMessage: "Direct messages are disabled in this organization.",
|
||||||
});
|
});
|
||||||
|
|
|
@ -370,7 +370,7 @@ function set_create_web_public_stream_dropdown_visibility() {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function check_disable_direct_message_initiator_group_dropdown(current_value) {
|
export function check_disable_direct_message_initiator_group_dropdown(current_value) {
|
||||||
if (current_value === user_groups.get_user_group_from_name("role:nobody").id) {
|
if (user_groups.is_empty_group(current_value)) {
|
||||||
$("#realm_direct_message_initiator_group_widget").prop("disabled", true);
|
$("#realm_direct_message_initiator_group_widget").prop("disabled", true);
|
||||||
} else {
|
} else {
|
||||||
$("#realm_direct_message_initiator_group_widget").prop("disabled", false);
|
$("#realm_direct_message_initiator_group_widget").prop("disabled", false);
|
||||||
|
|
|
@ -178,6 +178,37 @@ export function is_user_group(
|
||||||
return item.members !== undefined;
|
return item.members !== undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function is_empty_group(user_group_id: number): boolean {
|
||||||
|
const user_group = user_group_by_id_dict.get(user_group_id);
|
||||||
|
if (user_group === undefined) {
|
||||||
|
blueslip.error("Could not find user group", {user_group_id});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (user_group.members.size > 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if all the recursive subgroups are empty.
|
||||||
|
// Correctness of this algorithm relying on the ES6 Set
|
||||||
|
// implementation having the property that a `for of` loop will
|
||||||
|
// visit all items that are added to the set during the loop.
|
||||||
|
const subgroup_ids = new Set(user_group.direct_subgroup_ids);
|
||||||
|
for (const subgroup_id of subgroup_ids) {
|
||||||
|
const subgroup = user_group_by_id_dict.get(subgroup_id);
|
||||||
|
if (subgroup === undefined) {
|
||||||
|
blueslip.error("Could not find subgroup", {subgroup_id});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (subgroup.members.size > 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (const direct_subgroup_id of subgroup.direct_subgroup_ids) {
|
||||||
|
subgroup_ids.add(direct_subgroup_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
export function get_user_groups_of_user(user_id: number): UserGroup[] {
|
export function get_user_groups_of_user(user_id: number): UserGroup[] {
|
||||||
const user_groups_realm = get_realm_user_groups();
|
const user_groups_realm = get_realm_user_groups();
|
||||||
const groups_of_user = user_groups_realm.filter((group) =>
|
const groups_of_user = user_groups_realm.filter((group) =>
|
||||||
|
|
Loading…
Reference in New Issue