parsePresenceHash function

Map<String, PresenceMember>? parsePresenceHash(
  1. String data
)

Implementation

Map<String, PresenceMember>? parsePresenceHash(String data) {
  if (!_isBoundedPresenceFrame(data)) return null;
  Object? parsed;
  try {
    parsed = jsonDecode(data);
  } on FormatException {
    return null;
  }
  if (parsed is! Map<String, dynamic>) return null;
  final presence = parsed['presence'];
  if (presence is! Map<String, dynamic>) return null;
  final hash = presence['hash'];
  if (hash is! Map<String, dynamic>) return null;

  final members = <String, PresenceMember>{};
  for (final entry in hash.entries) {
    final userInfo = entry.value;
    members[entry.key] = PresenceMember(
      userId: entry.key,
      userInfo: userInfo is Map<String, dynamic> ? userInfo : const {},
    );
  }
  return members;
}