parse static method

SyImReaction? parse(
  1. String? customData
)

解析自定义消息的 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() ?? '',
  );
}