The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/app/ui-message/client/actionButtons/messageAction.ts

33 lines
1.3 KiB

import type { IUIActionButton } from '@rocket.chat/apps-engine/definition/ui';
import { Utilities } from '../../../../ee/lib/misc/Utilities';
import { MessageAction } from '../../../ui-utils/client';
import { messageArgs } from '../../../../client/lib/utils/messageArgs';
import { triggerActionButtonAction } from '../ActionManager';
import { applyButtonFilters } from './lib/applyButtonFilters';
const getIdForActionButton = ({ appId, actionId }: IUIActionButton): string => `${appId}/${actionId}`;
// eslint-disable-next-line no-void
export const onAdded = (button: IUIActionButton): void =>
MessageAction.addButton({
id: getIdForActionButton(button),
icon: '' as any,
label: Utilities.getI18nKeyForApp(button.labelI18n, button.appId),
context: button.when?.messageActionContext || ['message', 'message-mobile', 'threads', 'starred'],
condition({ room }) {
return applyButtonFilters(button, room);
},
action(_, props) {
const { message = messageArgs(this).msg } = props;
void triggerActionButtonAction({
rid: message.rid,
mid: message._id,
actionId: button.actionId,
appId: button.appId,
payload: { context: button.context },
});
},
});
export const onRemoved = (button: IUIActionButton): void => MessageAction.removeButton(getIdForActionButton(button));