import { StatusVisibility } from '@rocket.chat/core-services'; import type { IUser } from '@rocket.chat/core-typings'; import { redactStatus } from './redactStatus'; import { settings } from '../../settings'; export const getUsersHiddenFrom = async (viewerId: IUser['_id'] | null | undefined): Promise | undefined> => { if (!settings.get('Accounts_StatusVisibility_Enabled')) { return undefined; } const hidden = await StatusVisibility.getHiddenFrom(viewerId); return hidden.length ? new Set(hidden) : undefined; }; export const filterHiddenUsers = >(users: T[], hidden?: Set): T[] => hidden ? users.filter((user) => !hidden.has(user._id)) : users; export const redactHiddenUsers = >(users: T[], hidden?: Set): T[] => hidden ? users.map((user) => (hidden.has(user._id) ? redactStatus(user) : user)) : users;