コード例 #1
0
ファイル: SystemMessagesBuilder.cs プロジェクト: K1vs/DotChat
        public virtual IReadOnlyCollection <ChatMessageInfo> BuildChatAddedMessage(IChatAddedEvent <Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> @event)
        {
            var chatMessage = new ChatMessageInfo(MessageType.ChatRef, 0, immutable: true, style: MessageStyle("ChatAdded"), chatRefs: new List <ChatRefMessage>()
            {
                new ChatRefMessage(@event.Chat.ChatId, @event.Chat)
            });
            var result = new List <ChatMessageInfo> {
                chatMessage
            };

            var added = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Active).ToList();

            if (added.Any())
            {
                var addedContactMessages = added.Select(r => new ContactMessage(r)).ToList();
                var addedMessage         = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("AddedInitialChatParticipants"), contacts: addedContactMessages);
                result.Add(addedMessage);
            }
            var invited = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Invited).ToList();

            if (invited.Any())
            {
                var invitedContactMessages = invited.Select(r => new ContactMessage(r)).ToList();
                var invitedMessage         = new ChatMessageInfo(MessageType.Contact, 0, immutable: true, style: MessageStyle("InvitedInitialChatParticipants"), contacts: invitedContactMessages);
                result.Add(invitedMessage);
            }

            return(result);
        }
コード例 #2
0
        public virtual async Task Handle(IChatAddedEvent <TChat, TChatInfo, TChatParticipantCollection, TChatParticipant, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> @event, IChatBusContext chatBusContext)
        {
            var userIds = @event.Chat.Participants.Where(r => r.ChatParticipantStatus == ChatParticipantStatus.Active).Select(r => r.UserId);
            await NotificationRouteService.AddUsersToChat(userIds, @event.Chat.ChatId);

            var notification = ChatsNotificationBuilder.BuildChatAddedNotification(@event);

            await Notify(@event.Chat.ChatId, notification);
        }
コード例 #3
0
        public virtual async Task Handle(IChatAddedEvent <TChat, TChatInfo, TChatParticipantCollection, TChatParticipant, TChatUser, TChatMessageInfo, TTextMessage, TQuoteMessage, TMessageAttachmentCollection, TMessageAttachment, TChatRefMessageCollection, TChatRefMessage, TContactMessageCollection, TContactMessage> @event, IChatBusContext chatBusContext)
        {
            if (ChatWorkersConfiguration.DisableSystemMessages)
            {
                return;
            }
            var messagesInfo = SystemMessagesBuilder.BuildChatAddedMessage(@event);

            foreach (var messageInfo in messagesInfo)
            {
                await AddMessage(@event.InitiatorUserId, @event.Chat.ChatId, messageInfo, chatBusContext);
            }
        }
コード例 #4
0
        public virtual IChatAddedNotification <PersonalizedChat, Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> BuildChatAddedNotification(IChatAddedEvent <Chat, ChatInfo, List <ChatParticipant>, ChatParticipant, ChatUser, ChatMessageInfo, TextMessage, QuoteMessage, List <MessageAttachment>, MessageAttachment, List <ChatRefMessage>, ChatRefMessage, List <ContactMessage>, ContactMessage> @event)
        {
            var personalizedChat = new PersonalizedChat(@event.Chat.Name, @event.Chat.Description, @event.Chat.PrivacyMode, @event.Chat.Version, @event.Chat.ChatId, @event.Chat.Participants, @event.Chat.LastTimestamp, @event.Chat.TopIndex, @event.Chat.LastMessageId, @event.Chat.LastMessageAuthorId, @event.Chat.LastChatMessageInfo, 0, @event.Chat.TopIndex);

            return(new ChatAddedNotification(@event.InitiatorUserId, personalizedChat));
        }