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); } }
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); } } } }