getMessageReceipts static method
Future<List<MessageReceipt> ?>
getMessageReceipts(
- int messageId, {
- required dynamic onSuccess(
- List<
MessageReceipt> messageReceipt
- List<
- required dynamic onError(
- CometChatException excep
Method to get message receipts.
method could throw PlatformException with error codes specifying the cause Get message receipts (delivery/read receipts).
Migration Note: Migrated from platform channels to native Dart implementation. Behavior and signature remain identical for backward compatibility.
Android Reference: MessagesRequest.getMessageReceipts(int messageId)
Implementation
static Future<List<MessageReceipt>?> getMessageReceipts(int messageId,
{required Function(List<MessageReceipt> messageReceipt)? onSuccess,
required Function(CometChatException excep)? onError}) async {
try {
// Get SDK instance
final sdk = SdkRegistry.getInstance();
// Call native Dart message repository
// Returns map with receipts list and message context
final result =
await sdk.messages.getMessageReceipts(messageId.toString());
// Extract message context for receipt parsing
// Android Reference: receiptsFromJSON takes receiverId, receiverType, messageId from parent
final receiptsData = result['receipts'] as List<Map<String, dynamic>>;
final parsedMessageId = result['messageId'] as int;
final receiverId = result['receiverId'] as String;
final receiverType = result['receiverType'] as String;
// Convert to MessageReceipt objects using DTO and mapper
// Android Reference: MessageReceipt.receiptsFromJSON()
List<MessageReceipt> receiptList = [];
for (var receiptData in receiptsData) {
try {
final dto = MessageReceiptDto.fromJson(receiptData);
receiptList.add(MessageReceiptMapper.fromApiResponse(
dto,
messageId: parsedMessageId,
receiverId: receiverId,
receiverType: receiverType,
));
} catch (e) {
_errorCallbackHandler(null, null, e, onError);
return [];
}
}
// Call success callback
if (onSuccess != null) onSuccess(receiptList);
return receiptList;
} on SdkException catch (sdkEx) {
// Convert SdkException to CometChatException
final cometChatEx = CometChatException(
sdkEx.code,
sdkEx.details ?? sdkEx.message,
sdkEx.message,
);
_errorCallbackHandler(cometChatEx, null, null, onError);
} catch (e) {
_errorCallbackHandler(null, null, e, onError);
}
return null;
}