chatEvent method

ChatEvent chatEvent(
  1. ChatEventsVersionedMixin$Events e
)

Constructs a ChatEvent from the ChatEventsVersionedMixin$Events.

Implementation

ChatEvent chatEvent(ChatEventsVersionedMixin$Events e) {
  Log.trace('chatEvent($e)', '$runtimeType');

  if (e.$$typename == 'ChatClearedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatClearedEvent;
    return ChatClearedEvent(e.chatId, node.at);
  } else if (e.$$typename == 'ChatUnreadItemsCountUpdatedEvent') {
    var node =
        e as ChatEventsVersionedMixin$Events$ChatUnreadItemsCountUpdatedEvent;
    return ChatUnreadItemsCountUpdatedEvent(e.chatId, node.count);
  } else if (e.$$typename == 'ChatItemPostedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatItemPostedEvent;
    return ChatItemPostedEvent(e.chatId, node.item.toDto());
  } else if (e.$$typename == 'ChatLastItemUpdatedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatLastItemUpdatedEvent;
    return ChatLastItemUpdatedEvent(e.chatId, node.lastItem?.toDto());
  } else if (e.$$typename == 'ChatItemHiddenEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatItemHiddenEvent;
    return ChatItemHiddenEvent(e.chatId, node.itemId);
  } else if (e.$$typename == 'ChatMutedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatMutedEvent;
    return ChatMutedEvent(e.chatId, node.duration.toModel());
  } else if (e.$$typename == 'ChatTypingStartedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatTypingStartedEvent;
    _userRepo.put(node.user.toDto());
    return ChatTypingStartedEvent(e.chatId, node.user.toModel());
  } else if (e.$$typename == 'EventChatUnmuted') {
    return EventChatUnmuted(e.chatId);
  } else if (e.$$typename == 'ChatTypingStoppedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatTypingStoppedEvent;
    _userRepo.put(node.user.toDto());
    return ChatTypingStoppedEvent(e.chatId, node.user.toModel());
  } else if (e.$$typename == 'ChatHiddenEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatHiddenEvent;
    return ChatHiddenEvent(e.chatId, node.at);
  } else if (e.$$typename == 'ChatItemDeletedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatItemDeletedEvent;
    return ChatItemDeletedEvent(e.chatId, node.itemId);
  } else if (e.$$typename == 'ChatItemEditedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatItemEditedEvent;
    return ChatItemEditedEvent(
      e.chatId,
      node.itemId,
      node.text == null ? null : EditedMessageText(node.text!.changed),
      node.attachments?.changed.map((e) => e.toModel()).toList(),
      node.repliesTo?.changed.map((e) => e.toDto()).toList(),
    );
  } else if (e.$$typename == 'ChatCallStartedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallStartedEvent;
    return ChatCallStartedEvent(e.chatId, node.call.toModel());
  } else if (e.$$typename == 'ChatCallFinishedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallFinishedEvent;
    return ChatCallFinishedEvent(e.chatId, node.call.toModel(), node.reason);
  } else if (e.$$typename == 'ChatCallMemberLeftEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallMemberLeftEvent;
    _userRepo.put(node.user.toDto());
    return ChatCallMemberLeftEvent(e.chatId, node.user.toModel(), node.at);
  } else if (e.$$typename == 'ChatCallMemberJoinedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallMemberJoinedEvent;
    _userRepo.put(node.user.toDto());
    return ChatCallMemberJoinedEvent(
      e.chatId,
      node.call.toModel(),
      node.user.toModel(),
      node.at,
    );
  } else if (e.$$typename == 'ChatCallMemberRedialedEvent') {
    var node =
        e as ChatEventsVersionedMixin$Events$ChatCallMemberRedialedEvent;
    _userRepo.put(node.user.toDto());
    return ChatCallMemberRedialedEvent(
      e.chatId,
      node.at,
      node.callId,
      node.call.toModel(),
      node.user.toModel(),
      node.byUser.toModel(),
    );
  } else if (e.$$typename == 'ChatDeliveredEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatDeliveredEvent;
    return ChatDeliveredEvent(e.chatId, node.until);
  } else if (e.$$typename == 'ChatReadEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatReadEvent;
    _userRepo.put(node.byUser.toDto());
    return ChatReadEvent(e.chatId, node.byUser.toModel(), node.at);
  } else if (e.$$typename == 'ChatCallDeclinedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallDeclinedEvent;
    _userRepo.put(node.user.toDto());
    return ChatCallDeclinedEvent(
      e.chatId,
      node.callId,
      node.call.toModel(),
      node.user.toModel(),
      node.at,
    );
  } else if (e.$$typename == 'ChatTotalItemsCountUpdatedEvent') {
    var node =
        e as ChatEventsVersionedMixin$Events$ChatTotalItemsCountUpdatedEvent;
    return ChatTotalItemsCountUpdatedEvent(e.chatId, node.count);
  } else if (e.$$typename == 'ChatCallMovedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatCallMovedEvent;
    _userRepo.put(node.user.toDto());
    return ChatCallMovedEvent(
      e.chatId,
      node.callId,
      node.call.toModel(),
      node.newChatId,
      node.newChat.toModel(),
      node.newCallId,
      node.newCall.toModel(),
      node.user.toModel(),
      node.at,
    );
  } else if (e.$$typename == 'ChatArchivedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatArchivedEvent;
    return ChatArchivedEvent(e.chatId, node.at);
  } else if (e.$$typename == 'ChatUnarchivedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatUnarchivedEvent;
    return ChatUnarchivedEvent(e.chatId, node.at);
  } else if (e.$$typename == 'ChatFavoritedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatFavoritedEvent;
    return ChatFavoritedEvent(e.chatId, node.at, node.position);
  } else if (e.$$typename == 'ChatUnfavoritedEvent') {
    var node = e as ChatEventsVersionedMixin$Events$ChatUnfavoritedEvent;
    return ChatUnfavoritedEvent(e.chatId, node.at);
  } else if (e.$$typename == 'ChatCallConversationStartedEvent') {
    var node =
        e as ChatEventsVersionedMixin$Events$ChatCallConversationStartedEvent;
    return ChatCallConversationStartedEvent(
      e.chatId,
      node.callId,
      node.at,
      node.call.toModel(),
    );
  } else if (e.$$typename == 'ChatCallAnswerTimeoutPassedEvent') {
    var node =
        e as ChatEventsVersionedMixin$Events$ChatCallAnswerTimeoutPassedEvent;
    return ChatCallAnswerTimeoutPassedEvent(e.chatId, node.callId);
  } else {
    throw UnimplementedError('Unknown ChatEvent: ${e.$$typename}');
  }
}