PaidMarks.of constructor
- Iterable<
TimelineItem> items
Collects the marks in items.
Implementation
factory PaidMarks.of(Iterable<TimelineItem> items) {
final orders = <String>{};
final payments = <String>{};
void add(Set<String> set, Object? v) {
if (v is String && v.isNotEmpty) set.add(v);
}
for (final i in items) {
switch (i) {
case MessageDto(:final metadata?) when metadata['kind'] == 'order_paid':
add(orders, metadata['order_id']);
case ConversationEventDto(:final type, :final data) when type == 'order_paid':
add(orders, data['order_id']);
add(payments, data['payment_id']);
default:
break;
}
}
return PaidMarks(orderIds: orders, paymentIds: payments);
}