fromJson static method

Message fromJson(
  1. Map<String, dynamic> json
)

Implementation

static Message fromJson(Map<String, dynamic> json) {
  Message? message;
  //VERIFICAR SI EL MENSAJE SE LEE DESDE EL SERVIDOR O DESDE
  // EL GUARDADO LOCAL
  if (json['isSaved'] != null) {
    //VERIFICAR SI ES DEL USUARIO O DEL CHAT / BOT
    if (json["isUser"]) {
      if (json["type"] == MessageType.text.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.text,
            isUser: json['isUser'],
            isSaved: true,
            isSent: json['isSent'] ?? false,
            hasError: json['hasError'] ?? false,
            data: messages.map((e) => MessageResponseData.text(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.media.name ||
          json["type"] == MessageType.video.name ||
          json["type"] == MessageType.image.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.media,
            isUser: json['isUser'],
            isSaved: true,
            isSent: json['isSent'] ?? false,
            hasError: json['hasError'] ?? false,
            data: messages.map((e) => MessageResponseData.image(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.location.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.location,
            isUser: json['isUser'],
            isSaved: true,
            hasError: json['hasError'] ?? false,
            isSent: json['isSent'] ?? false,
            data:
                messages.map((e) => MessageResponseData.location(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.file,
            isUser: json['isUser'],
            hasError: json['hasError'] ?? false,
            isSaved: true,
            isSent: json['isSent'] ?? false,
            data: messages.map((e) => MessageResponseData.file(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      }
    } else {
      //VERIFICAR EL TIPO DE MENSAJE
      if (json["type"] == MessageType.text.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.text,
            isSaved: true,
            isSent: false,
            isUser: json['isUser'],
            hasError: json['hasError'] ?? false,
            data: messages.map((e) => MessageResponseData.text(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.carousel.name) {
        var messages = json["message"] as List;
        message = Message(
            isSent: false,
            type: MessageType.carousel,
            isSaved: true,
            isUser: json['isUser'],
            hasError: json['hasError'] ?? false,
            data:
                messages.map((e) => MessageResponseData.carousel(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.button.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.button,
            isSaved: true,
            isSent: false,
            hasError: json['hasError'] ?? false,
            isUser: json['isUser'],
            data:
                messages.map((e) => MessageResponseData.buttons(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.media.name ||
          json["type"] == MessageType.image.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.media,
            isSaved: true,
            hasError: json['hasError'] ?? false,
            isSent: false,
            isUser: json['isUser'],
            data: messages.map((e) => MessageResponseData.image(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else if (json["type"] == MessageType.location.name) {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.location,
            isSaved: true,
            isSent: false,
            isUser: json['isUser'],
            hasError: json['hasError'] ?? false,
            data:
                messages.map((e) => MessageResponseData.location(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      } else {
        var messages = json["message"] as List;
        message = Message(
            type: MessageType.file,
            isSaved: true,
            isSent: false,
            isUser: json['isUser'],
            hasError: json['hasError'] ?? false,
            data: messages.map((e) => MessageResponseData.file(e)).toList(),
            messageDate: json['messageDate'] ?? json['receptionDate']);
      }
    }
  } else {
    var senderExists = json['isUser'] != null ? true : false;
    if (senderExists) {
      //VERIFICAR SI ES DEL USUARIO
      if (json["isUser"]) {
        if (json["type"] == MessageType.text.name) {
          var messagedata = json['message'] as MessageResponseData;
          message = Message(
              type: MessageType.text,
              isUser: json['isUser'],
              isSaved: true,
              isSent: false,
              hasError: false,
              data: [MessageResponseData.text(messagedata.toJson())],
              messageDate: json['messageDate'] ?? json['receptionDate']);
        } else if (json["type"] == MessageType.media.name ||
            json["type"] == MessageType.image.name) {
          var messagedata = json['message'] as MessageResponseData;
          message = Message(
              type: MessageType.media,
              isUser: json['isUser'],
              isSaved: true,
              isSent: true,
              hasError: false,
              data: [MessageResponseData.image(messagedata.toJson())],
              messageDate: json['messageDate'] ?? json['receptionDate']);
        } else if (json["type"] == MessageType.location.name) {
          var messagedata = json['message'] as MessageResponseData;
          message = Message(
              type: MessageType.location,
              isUser: json['isUser'],
              isSaved: true,
              isSent: true,
              hasError: false,
              data: [MessageResponseData.location(messagedata.toJson())],
              messageDate: json['messageDate'] ?? json['receptionDate']);
        } else {
          var messagedata = json['message'] as MessageResponseData;
          message = Message(
              type: MessageType.file,
              isUser: json['isUser'],
              isSaved: true,
              isSent: true,
              hasError: false,
              data: [MessageResponseData.file(messagedata.toJson())],
              messageDate: json['messageDate'] ?? json['receptionDate']);
        }
      } else {
        //RECIBIR LAS RESPUESTAS DEL SERVIDOR
        MessageResponse response = MessageResponse.fromJson(json);
        if (response.type == MessageType.text.name) {
          message = Message(
              type: MessageType.text,
              isUser: false,
              isSaved: true,
              isSent: false,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        } else if (response.type == MessageType.carousel.name) {
          message = Message(
              type: MessageType.carousel,
              isUser: false,
              isSaved: true,
              isSent: false,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        } else if (response.type == MessageType.button.name) {
          message = Message(
              type: MessageType.button,
              isUser: false,
              isSent: false,
              isSaved: true,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        } else if (response.type == MessageType.media.name ||
            response.type == MessageType.video.name) {
          message = Message(
              type: MessageType.media,
              isUser: false,
              isSaved: true,
              isSent: false,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        } else if (response.type == MessageType.file.name) {
          message = Message(
              type: MessageType.file,
              isUser: false,
              isSent: false,
              isSaved: true,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        } else {
          message = Message(
              type: MessageType.location,
              isUser: false,
              isSaved: true,
              isSent: false,
              hasError: false,
              data: response.message!.data,
              messageDate: response.receptionDate);
        }
      }
    } else {
      //RECIBIR LAS RESPUESTAS DEL SERVIDOR PARA NO CAER EN NULOS
      MessageResponse response = MessageResponse.fromJson(json);
      if (response.type == MessageType.text.name) {
        message = Message(
            type: MessageType.text,
            isUser: false,
            isSaved: true,
            isSent: false,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate);
      } else if (response.type == MessageType.carousel.name) {
        message = Message(
            type: MessageType.carousel,
            isUser: false,
            isSent: false,
            isSaved: true,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate);
      } else if (response.type == MessageType.button.name) {
        message = Message(
            type: MessageType.button,
            isUser: false,
            isSent: false,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate,
            isSaved: true);
      } else if (response.type == MessageType.media.name ||
          response.type == MessageType.image.name) {
        message = Message(
            type: MessageType.media,
            isUser: false,
            isSaved: true,
            isSent: false,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate);
      } else if (response.type == MessageType.file.name) {
        message = Message(
            type: MessageType.file,
            isUser: false,
            isSaved: true,
            isSent: false,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate);
      } else {
        message = Message(
            type: MessageType.location,
            isUser: false,
            isSaved: true,
            isSent: false,
            hasError: false,
            data: response.message!.data,
            messageDate: response.receptionDate);
      }
    }
  }

  return message;
}