SchedulerMessage.fromInteractiveMessage constructor
SchedulerMessage.fromInteractiveMessage(
- 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,
);
}