@cometchat/chat-uikit-react-native
Version:
Ready-to-use Chat UI Components for React Native
34 lines (26 loc) • 1.3 kB
text/typescript
import { MessageReceipt } from "../constants/UIKitConstants";
import { CometChat } from "@cometchat/chat-sdk-react-native";
import { getModerationStatus } from "./MessageUtils";
/**
* Utility helper for deriving a message receipt status from a BaseMessage instance.
*/
export const MessageReceiptUtils = {
getReceiptStatus(message: CometChat.BaseMessage | undefined): MessageReceipt {
if (!message) return MessageReceipt.WAIT;
// Moderation status (if available)
const moderationStatus = getModerationStatus(message);
if (moderationStatus === "disapproved") return MessageReceipt.ERROR;
if (moderationStatus === "pending") return MessageReceipt.WAIT;
// Explicit error markers
const hasError = (message as any)?.error || (message as any)?.metadata?.error;
if (hasError) return MessageReceipt.ERROR;
// Deleted messages treated as error for receipts
if (message.getDeletedAt?.()) return MessageReceipt.ERROR;
// Use getter methods for receipt state (SDK objects expose these via getters)
if (message.getReadAt?.()) return MessageReceipt.READ;
if (message.getDeliveredAt?.()) return MessageReceipt.DELIVERED;
if (message.getSentAt?.()) return MessageReceipt.SENT;
return MessageReceipt.WAIT;
},
};
export default MessageReceiptUtils;