class ModerationHandler {
constructor() {
this.pendingMessages = new Map();
this.setupListener();
}
setupListener() {
CometChat.addMessageListener(
"MODERATION_LISTENER",
new CometChat.MessageListener({
onMessageModerated: (message) => this.onModerated(message)
})
);
}
async sendMessage(receiverUID, text) {
const textMessage = new CometChat.TextMessage(
receiverUID,
text,
CometChat.RECEIVER_TYPE.USER
);
try {
const message = await CometChat.sendMessage(textMessage);
const status = message.getModerationStatus();
if (status === CometChat.ModerationStatus.PENDING) {
// Track pending message
this.pendingMessages.set(message.getId(), message);
return { success: true, pending: true, message };
}
return { success: true, pending: false, message };
} catch (error) {
return { success: false, error };
}
}
onModerated(message) {
const messageId = message.getId();
const status = message.getModerationStatus();
// Remove from pending
this.pendingMessages.delete(messageId);
// Emit event for UI update
this.emit("moderationResult", {
messageId,
status,
approved: status === CometChat.ModerationStatus.APPROVED,
message
});
}
cleanup() {
CometChat.removeMessageListener("MODERATION_LISTENER");
}
}
// Usage
const handler = new ModerationHandler();
const result = await handler.sendMessage("user123", "Hello!");
if (result.pending) {
console.log("Message pending moderation...");
}