parse static method

List<PamPushMessage> parse(
  1. String jsonStr
)

Implementation

static List<PamPushMessage> parse(String jsonStr) {
  Map<String, dynamic> map;

  try {
    map = jsonDecode(jsonStr);
  } catch (e, stackTrace) {
    Pam.log(["Push Message Parse Error", stackTrace, e]);
    return [];
  }

  List<PamPushMessage> result = [];

  var items = map["items"] as List<dynamic>;

  for (var element in items) {
    Map<String, dynamic> json = element;

    String? deliverID = json["deliver_id"];
    String? pixel = json["pixel"];
    String? title = json["title"];
    String? description = json["description"];
    String? thumbnailUrl = json["thumbnail_url"];
    String? flex = json["flex"];
    String? url = json["url"];

    var payloadJson = json["json_data"]["pam"] as Map<String, dynamic>;
    String? popupType = payloadJson["popupType"];

    var dateString = json["created_date"];
    DateTime utcDateTime = DateTime.parse(dateString + "Z");
    DateTime localDateTime = utcDateTime.toLocal();

    bool isOpen = json["is_open"];

    var item = PamPushMessage(
        deliverID: deliverID,
        pixel: pixel,
        title: title,
        description: description,
        thumbnailUrl: thumbnailUrl,
        flex: flex,
        url: url,
        popupType: popupType,
        date: localDateTime,
        isOpen: isOpen,
        data: payloadJson);

    result.add(item);
  }

  return result;
}