stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
72 lines • 2.19 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.messageActions = void 0;
var _native = require("../../../native");
var _types = require("../../../types/types");
var messageActions = ({
banUser,
copyMessage,
deleteMessage,
editMessage,
error,
flagMessage,
isMyMessage,
isThreadMessage,
markUnread,
muteUser,
message,
ownCapabilities,
pinMessage,
quotedReply,
retry,
threadReply,
unpinMessage,
blockUser
}) => {
var messageHasGiphyOrImgur = message.attachments?.some(attachment => attachment.type === _types.FileTypes.Giphy || attachment.type === _types.FileTypes.Imgur);
var actions = [];
if (error && isMyMessage) {
actions.push(retry);
}
if (ownCapabilities.sendReply && !isThreadMessage && !error) {
actions.push(threadReply);
}
if (ownCapabilities.quoteMessage && !isThreadMessage && !error) {
actions.push(quotedReply);
}
if (ownCapabilities.pinMessage && !message.pinned) {
actions.push(pinMessage);
}
if (ownCapabilities.pinMessage && message.pinned) {
actions.push(unpinMessage);
}
if ((isMyMessage && ownCapabilities.updateOwnMessage || !isMyMessage && ownCapabilities.updateAnyMessage) && !messageHasGiphyOrImgur && !message.poll_id) {
actions.push(editMessage);
}
if ((0, _native.isClipboardAvailable)() && message.text && !error) {
actions.push(copyMessage);
}
if (ownCapabilities.readEvents && !error && !isThreadMessage && !isMyMessage) {
actions.push(markUnread);
}
if (!isMyMessage && ownCapabilities.banChannelMembers) {
actions.push(banUser);
}
if (isMyMessage && ownCapabilities.deleteOwnMessage || !isMyMessage && ownCapabilities.deleteAnyMessage) {
actions.push(deleteMessage);
}
if (!isMyMessage && ownCapabilities.flagMessage) {
actions.push(flagMessage);
}
if (!isMyMessage) {
actions.push(muteUser);
actions.push(blockUser);
}
if (error) {
return actions.filter(action => action.actionType === 'deleteMessage' || action.actionType === 'retry' || action.actionType === 'editMessage');
}
return actions;
};
exports.messageActions = messageActions;
//# sourceMappingURL=messageActions.js.map