SchedulerMessage.fromInteractiveMessage constructor

SchedulerMessage.fromInteractiveMessage(
  1. InteractiveMessage message
)

Implementation

factory SchedulerMessage.fromInteractiveMessage(InteractiveMessage message) {
  ButtonElement? scheduleElement;

  if (message.interactiveData[ModelFieldConstants.scheduleElement] != null) {
    scheduleElement = ButtonElement.fromMap(
        message.interactiveData[ModelFieldConstants.scheduleElement]);
  } else {
    scheduleElement = ButtonElement(
        elementType: UIElementTypeConstants.button,
        elementId: "xxx1234xxx",
        buttonText: "Not found");
  }
  dynamic json = message.interactiveData[ModelFieldConstants.availability];

  Map<String, List<TimeRange>> availability = {};

  json.forEach((key, value) {
    List<TimeRange> timeRanges = [];
    for (var timeRange in value) {
      timeRanges.add(TimeRange(
          from: timeRange[SchedulerConstants.from],
          to: timeRange[SchedulerConstants.to]));
    }
    availability[key] = timeRanges;
  });

  return SchedulerMessage(
    id: message.id,
    receiverType: message.receiverType,
    tags: message.tags,
    muid: message.muid,
    sender: message.sender,
    receiver: message.receiver,
    receiverUid: message.receiverUid,
    type: message.type,
    category: message.category,
    sentAt: message.sentAt,
    deliveredAt: message.deliveredAt,
    readAt: message.readAt,
    metadata: message.metadata,
    readByMeAt: message.readByMeAt,
    deliveredToMeAt: message.deliveredToMeAt,
    deletedAt: message.deletedAt,
    editedAt: message.editedAt,
    deletedBy: message.deletedBy,
    editedBy: message.editedBy,
    updatedAt: message.updatedAt,
    conversationId: message.conversationId,
    parentMessageId: message.parentMessageId,
    replyCount: message.replyCount,
    title: message.interactiveData[ModelFieldConstants.title] ?? "",
    goalCompletionText:
        message.interactiveData[ModelFieldConstants.goalCompletionText],
    scheduleElement: scheduleElement,
    interactionGoal: message.interactionGoal,
    interactions: message.interactions,
    allowSenderInteraction: message.allowSenderInteraction,
    avatarUrl: message.interactiveData[ModelFieldConstants.avatarUrl] ?? "",
    icsFileUrl: message.interactiveData[ModelFieldConstants.icsFileUrl] ?? "",
    bufferTime: message.interactiveData[ModelFieldConstants.bufferTime],
    duration: message.interactiveData[ModelFieldConstants.duration],
    dateRangeStart:
        message.interactiveData[ModelFieldConstants.dateRangeStart],
    dateRangeEnd: message.interactiveData[ModelFieldConstants.dateRangeEnd],
    timezoneCode: message.interactiveData[ModelFieldConstants.timezoneCode],
    availability: availability,
    // interactiveData: message.interactiveData,
  );
}