@cometchat/chat-uikit-react-native
Version:
Ready-to-use Chat UI Components for React Native
102 lines (89 loc) • 3.6 kB
text/typescript
export class CometChatMessageEvents {
static messageReceived = Symbol("messageReceived");
static customMessageReceived = Symbol("customMessageReceived");
static groupActionMessageReceived = Symbol("groupActionMessageReceived");
static callActionMessageReceived = Symbol("callActionMessageReceived");
static messageRead = Symbol("messageRead");
static messageDelivered = Symbol("messageDelivered");
static messageEdited = Symbol("messageEdited");
static messageDeleted = Symbol("messageDeleted");
static messagesFetched = Symbol("messagesFetched");
static previousMessagesFetched = Symbol("previousMessagesFetched");
static refreshingMessages = Symbol("refreshingMessages");
static messagesRefreshed = Symbol("messagesRefreshed");
static storeMessage = Symbol("storeMessage");
static scrolledUp = Symbol("scrolledUp");
static scrolledToBottom = Symbol("scrolledToBottom");
static markMessageAsRead = Symbol("markMessageAsRead");
static onMessageSent = Symbol("onMessageSent");
static onMessageEdit = Symbol("onMessageEdit");
static onMessageDelete = Symbol("onMessageDelete");
static onMessageReply = Symbol("onMessageReply");
static onMessageRead = Symbol("onMessageRead");
static onMessageReaction = Symbol("onMessageReaction");
static onViewInformation = Symbol("onViewInformation");
static onMessageError = Symbol("onMessageError");
static ccReplyToMessage = Symbol("ccReplyToMessage");
static onMessageReactionError = Symbol("onMessageReactionError");
static previewMessageForEdit = Symbol("previewMessageForEdit");
static onBackButtonClick = Symbol("onBackButtonClick");
static onAIAssistantMessageReceived = Symbol("onAIAssistantMessageReceived");
static onAIToolResultReceived = Symbol("onAIToolResultReceived");
static onAIToolArgumentsReceived = Symbol("onAIToolArgumentsReceived");
static _triggers: { [event: string]: { [id: string]: (params: any) => void } } = {};
static emit = (...args: any[]) => {
let event, params;
if (args.length === 2) {
[event, params] = args;
} else if (args.length === 1 && typeof args[0] === "object") {
event = args[0].event;
params = args[0].params;
} else {
throw new Error("Invalid arguments");
}
if (CometChatMessageEvents._triggers[event as string]) {
for (const i in CometChatMessageEvents._triggers[event as string]) {
CometChatMessageEvents._triggers[event as string][i](params);
}
}
};
/**
* @param {string} event
* @param {string} id
*/
static removeListener = (...args: any[]) => {
let event, id;
if (args.length === 2) {
[event, id] = args;
} else if (args.length === 1 && typeof args[0] === "object") {
event = args[0].event;
id = args[0].id;
} else {
throw new Error("Invalid arguments");
}
if (CometChatMessageEvents._triggers[event]) {
delete CometChatMessageEvents._triggers[event][id];
}
};
/**
* @param {string} event
* @param {string} id
* @param {func} callback
*/
static addListener = (...args: any[]) => {
let event, id, callback;
if (args.length === 3) {
[event, id, callback] = args;
} else if (args.length === 1 && typeof args[0] === "object") {
event = args[0].event;
id = args[0].id;
callback = args[0].callback;
} else {
throw new Error("Invalid arguments");
}
if (!CometChatMessageEvents._triggers[event]) {
CometChatMessageEvents._triggers[event] = {};
}
CometChatMessageEvents._triggers[event][id] = callback;
};
}