diff --git a/.changeset/neat-spoons-cover.md b/.changeset/neat-spoons-cover.md new file mode 100644 index 0000000000000..ed5941e748a69 --- /dev/null +++ b/.changeset/neat-spoons-cover.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": major +--- + +Removes deprecated Realtime API method: `livechat:removeAllClosedRooms` diff --git a/apps/meteor/app/livechat/server/index.ts b/apps/meteor/app/livechat/server/index.ts index 3481d83d927bf..66a8e353a33fb 100644 --- a/apps/meteor/app/livechat/server/index.ts +++ b/apps/meteor/app/livechat/server/index.ts @@ -15,7 +15,6 @@ import './hooks/afterUserActions'; import './hooks/afterAgentRemoved'; import './hooks/afterSaveOmnichannelMessage'; import './methods/getAnalyticsChartData'; -import './methods/removeAllClosedRooms'; import './methods/removeCustomField'; import './methods/removeRoom'; import './methods/saveAgentInfo'; diff --git a/apps/meteor/app/livechat/server/methods/removeAllClosedRooms.ts b/apps/meteor/app/livechat/server/methods/removeAllClosedRooms.ts deleted file mode 100644 index 632c5f1e1e7e1..0000000000000 --- a/apps/meteor/app/livechat/server/methods/removeAllClosedRooms.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { IOmnichannelRoom } from '@rocket.chat/core-typings'; -import type { ServerMethods } from '@rocket.chat/ddp-client'; -import { Logger } from '@rocket.chat/logger'; -import { LivechatRooms } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; - -import { callbacks } from '../../../../lib/callbacks'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; -import { methodDeprecationLogger } from '../../../lib/server/lib/deprecationWarningLogger'; -import { removeOmnichannelRoom } from '../lib/rooms'; - -declare module '@rocket.chat/ddp-client' { - // eslint-disable-next-line @typescript-eslint/naming-convention - interface ServerMethods { - 'livechat:removeAllClosedRooms'(departmentIds?: string[]): Promise; - } -} - -Meteor.methods({ - async 'livechat:removeAllClosedRooms'(departmentIds) { - methodDeprecationLogger.method('livechat:removeAllClosedRooms', '8.0.0', '/v1/livechat/rooms.removeAllClosedRooms'); - const logger = new Logger('livechat:removeAllClosedRooms'); - const user = Meteor.userId(); - - if (!user || !(await hasPermissionAsync(user, 'remove-closed-livechat-rooms'))) { - throw new Meteor.Error('error-not-allowed', 'Not allowed', { - method: 'livechat:removeAllClosedRoom', - }); - } - - // These are not debug logs since we want to know when the action is performed - logger.info(`User ${Meteor.userId()} is removing all closed rooms`); - - const extraQuery = await callbacks.run('livechat.applyRoomRestrictions', {}, { userId: user }); - const promises: Promise[] = []; - await LivechatRooms.findClosedRooms(departmentIds, {}, extraQuery).forEach(({ _id }: IOmnichannelRoom) => { - promises.push(removeOmnichannelRoom(_id)); - }); - await Promise.all(promises); - - logger.info(`User ${Meteor.userId()} removed ${promises.length} closed rooms`); - return promises.length; - }, -});