cardOf function
- Json? metadata
Port of cardOf from @hatang/chat-protocol: the card in metadata, if
any.
Implementation
MessageCard? cardOf(Json? metadata) {
if (metadata == null) return null;
final k = metadata['kind'];
switch (k) {
case 'product':
if (metadata['products'] is! List) return null;
return ProductCard([
for (final p in mapListOf(metadata, 'products')) ProductCardItem.fromJson(p),
], intro: str(metadata, 'intro'));
case 'order':
final o = mapOf(metadata, 'order');
return o == null ? null : OrderCard.fromJson(o);
case 'payment':
final p = mapOf(metadata, 'payment');
return p == null ? null : PaymentCard.fromJson(p);
case 'quick_replies':
if (metadata['options'] is! List) return null;
return QuickRepliesCard(stringListOf(metadata, 'options'));
case 'csat':
if (metadata['options'] is! List) return null;
return CsatCard(stringListOf(metadata, 'options'), answered: boolOr(metadata, 'answered'));
default:
return null;
}
}