import type { IUser } from '@rocket.chat/core-typings'; import { LivechatRooms } from '@rocket.chat/models'; import { closeRoom } from './closeRoom'; import { settings } from '../../settings'; import { callbacks } from '../callbacks'; import { i18n } from '../i18n'; type SubscribedRooms = { rid: string; t: string; }; export const closeOmnichannelConversations = async ( user: IUser, subscribedRooms: SubscribedRooms[], executedBy?: string, ): Promise => { const extraQuery = await callbacks.run('livechat.applyRoomRestrictions', {}, { userId: executedBy }); const roomsInfo = LivechatRooms.findByIds( subscribedRooms.map(({ rid }) => rid), {}, extraQuery, ); const language = settings.get('Language') || 'en'; const comment = i18n.t('Agent_deactivated', { lng: language }); const promises: Promise[] = []; await roomsInfo.forEach((room) => { promises.push(closeRoom({ user, room, comment })); }); await Promise.all(promises); };