fromMap static method

InAppMessageEvent? fromMap(
  1. Map map
)

Builds an event from the native wire map.

Returns null for an unknown type, or a missing or wrong-typed required field. A wrong-typed optional field is treated as absent.

Implementation

static InAppMessageEvent? fromMap(Map<dynamic, dynamic> map) {
  final campaignId = _stringOrNull(map['campaignId']);
  switch (map['type']) {
    case 'shown':
      return campaignId == null ? null : InAppMessageShown(campaignId);
    case 'clicked':
      if (campaignId == null) return null;
      final payload = map['payload'];
      return InAppMessageClicked(
        campaignId,
        buttonId: _stringOrNull(map['buttonId']),
        payload: payload is Map && _hasOnlyStringKeys(payload)
            ? _toStringKeyedMap(payload)
            : null,
      );
    case 'dismissed':
      if (campaignId == null) return null;
      return InAppMessageDismissed(
        campaignId,
        InAppDismissReason.fromWire(map['reason']),
      );
    case 'answered':
      final value = map['value'];
      if (campaignId == null || value == null) return null;
      return InAppMessageAnswered(
        campaignId,
        value,
        comment: _stringOrNull(map['comment']),
      );
    case 'failed':
      final message = _stringOrNull(map['message']);
      return message == null
          ? null
          : InAppMessageFailed(message, campaignId: campaignId);
    default:
      return null;
  }
}