prepareMessagePack static method

Map<String, dynamic> prepareMessagePack(
  1. Map<String, dynamic> data
)

Prepare the messagepack and sanitize it.

Implementation

static Map<String, dynamic> prepareMessagePack(Map<String, dynamic> data) {
  final sanitizedMap = <String, dynamic>{};

  // Sanitize all sub maps
  data.forEach((key, value) {
    var v = value;
    if (data[key] is Map<String, dynamic>) {
      final x = data[key] as Map<String, dynamic>;
      v = prepareMessagePack(x);
    } else if (data[key] is List<Map<String, dynamic>>) {
      final l = <Map<String, dynamic>>[];
      final values = data[key] as List<Map<String, dynamic>>;
      for (var value in values) {
        l.add(prepareMessagePack(value));
      }

      v = l;
    } else if (data[key] is MessagePackable) {
      final x = data[key] as MessagePackable;
      v = prepareMessagePack(x.toMessagePack());
    }

    sanitizedMap[key] = v;
  });

  return sanitizeMessagePack(sanitizedMap);
}