Ejemplo n.º 1
0
        public async Task HandleAsync()
        {
            foreach (var user in notice.Users)
            {
                await crossNodeService.NewOrEditUserAsync(user, current.Node.Id).ConfigureAwait(false);
            }

            BlockGenerationHelper.Instance.AddSegments(notice.BlockSegments);
        }
 public async Task HandleAsync()
 {
     try
     {
         foreach (var user in response.Users)
         {
             await crossNodeService.NewOrEditUserAsync(new ShortUser { UserId = user.Id.Value }, nodeConnection.Node.Id).ConfigureAwait(false);
         }
     }
     catch (Exception ex)
     {
         Logger.WriteLog(ex);
     }
 }
Ejemplo n.º 3
0
        private async Task HandleDialogMessagesAsync(IEnumerable <MessageVm> messages)
        {
            foreach (var message in messages)
            {
                bool saveMessageFlag = true;
                try
                {
                    if (NodeData.Instance.RoutedMessagesId.Contains(message.GlobalId.GetValueOrDefault()))
                    {
                        continue;
                    }
                    if (!message.Attachments.IsNullOrEmpty())
                    {
                        foreach (var attachment in message.Attachments)
                        {
                            attachment.MessageId = 0;
                        }
                        await attachmentsService.DownloadAttachmentsPayloadAsync(message.Attachments, current).ConfigureAwait(false);

                        await attachmentsService.ThrowIfAttachmentsInvalidAsync(message, true).ConfigureAwait(false);
                    }
                    if (!message.Attachments.IsNullOrEmpty())
                    {
                        var attachment = message.Attachments.FirstOrDefault(opt => opt.Type == AttachmentType.EncryptedMessage);
                        if (attachment != null)
                        {
                            var ecnryptedMessage = (EncryptedMessage)attachment.Payload;
                            saveMessageFlag = ecnryptedMessage.SaveFlag > 0;
                        }
                    }
                    List <MessageDto> newMessages = null;
                    if (saveMessageFlag)
                    {
                        newMessages = await createMessagesService.CreateDialogMessageAsync(MessageConverter.GetMessageDto(message)).ConfigureAwait(false);
                    }
                    else
                    {
                        var dialogs = await loadDialogsService.GetUsersDialogsAsync(message.SenderId.Value, message.ReceiverId.Value);

                        var senderMessage = MessageConverter.GetMessageDto(message);
                        senderMessage.ConversationId = dialogs.FirstOrDefault(dialog => dialog.FirstUserId == message.SenderId).Id;
                        var receiverMessage = MessageConverter.GetMessageDto(message);
                        receiverMessage.ConversationId = dialogs.FirstOrDefault(dialog => dialog.FirstUserId == message.ReceiverId).Id;
                        newMessages = new List <MessageDto> {
                            senderMessage, receiverMessage
                        };
                    }
                    newMessages.Reverse();
                    SendDialogNotificationsAsync(newMessages, saveMessageFlag);
                }
                catch (UserNotFoundException ex)
                {
                    if (ex.UsersId != null)
                    {
                        var user = (await nodeRequestSender.GetUsersInfoAsync(
                                        new List <long>(ex.UsersId),
                                        null,
                                        current).ConfigureAwait(false)).FirstOrDefault();
                        if (user != null)
                        {
                            await crossNodeService.NewOrEditUserAsync(new ShortUser
                            {
                                UserId = user.Id.GetValueOrDefault(),
                            }, current.Node.Id).ConfigureAwait(false);
                        }

                        List <MessageDto> newMessages = await createMessagesService.CreateDialogMessageAsync(MessageConverter.GetMessageDto(message)).ConfigureAwait(false);

                        newMessages.Reverse();
                        SendDialogNotificationsAsync(newMessages, saveMessageFlag);
                    }
                }
            }
        }