parse static method
解析自定义消息的 data 字符串;不是回应消息时返回 null。
Implementation
static SyImReaction? parse(String? customData) {
if (customData == null || customData.trim().isEmpty) return null;
Object? obj;
try {
obj = jsonDecode(customData);
} on FormatException {
return null;
}
if (obj is! Map || obj['sy'] != 'reaction_lite') return null;
final emoji = (obj['emoji']?.toString() ?? '').trim();
if (emoji.isEmpty) return null;
final target = obj['target'] is Map ? obj['target'] as Map : const {};
final seq = target['seq'];
return SyImReaction(
emoji: emoji,
added: obj['action'] != 'remove',
targetClientMsgId: target['clientMsgId']?.toString() ?? '',
targetSeq: seq is num ? seq.toInt() : 0,
targetSenderId: target['senderId']?.toString() ?? '',
);
}