RocketChat/Rocket.Chat

View on GitHub
apps/meteor/app/channel-settings/server/functions/saveReactWhenReadOnly.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Message } from '@rocket.chat/core-services';
import { Rooms } from '@rocket.chat/models';
import { Match } from 'meteor/check';
import { Meteor } from 'meteor/meteor';

export const saveReactWhenReadOnly = async function (
    rid: string,
    allowReact: boolean,
    user: {
        _id: string;
        username: string;
    },
    sendMessage = true,
) {
    if (!Match.test(rid, String)) {
        throw new Meteor.Error('invalid-room', 'Invalid room', {
            function: 'RocketChat.saveReactWhenReadOnly',
        });
    }

    const result = await Rooms.setAllowReactingWhenReadOnlyById(rid, allowReact);

    if (result && sendMessage) {
        const type = allowReact ? 'room-allowed-reacting' : 'room-disallowed-reacting';

        await Message.saveSystemMessage(type, rid, '', user);
    }
};