eventsFromKeyStates function
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;
}