eventsFromKeyStates function

List<Map<String, dynamic>> eventsFromKeyStates(
  1. List<Map<String, dynamic>> states
)

Normalizes the per-atSign history[] arrays into unified history events.

Accepts the output of KeyStateStore.listAllStates().

Implementation

List<Map<String, dynamic>> eventsFromKeyStates(
  List<Map<String, dynamic>> states,
) {
  final events = <Map<String, dynamic>>[];

  for (final state in states) {
    final atSign = _stringValue(state['atSign']);
    final history = state['history'];
    if (history is! List) {
      continue;
    }

    for (final raw in history) {
      if (raw is! Map) {
        continue;
      }

      final entry = raw.cast<String, dynamic>();
      final createdAtUtc = _stringValue(entry['createdAtUtc']);
      final type = _stringValue(entry['type']);
      final data =
          (entry['data'] as Map?)?.cast<String, dynamic>() ??
          const <String, dynamic>{};

      events.add({
        'id': '$atSign-$type-$createdAtUtc',
        'createdAtUtc': createdAtUtc,
        'source': historySourceLocal,
        'type': type.isEmpty ? 'event' : type,
        'atSign': atSign,
        'status': 'success',
        'summary': _stringValue(entry['summary']),
        'data': _maskHistoryData(data),
        'origin': 'key-state',
      });
    }
  }

  return events;
}