public async void ContinueFileOpenPicker(IReadOnlyList<StorageFile> files)
        {
            if (files == null || !files.Any()) return;
            IsLoading = true;
            using (var stream = (FileRandomAccessStream) await files[0].OpenAsync(FileAccessMode.Read))
            {
                var newImageBytes = new byte[stream.Size];
                using (var dataReader = new DataReader(stream))
                {
                    await dataReader.LoadAsync((uint)stream.Size);
                    dataReader.ReadBytes(newImageBytes);
                }

                var contentHelper = new ContentClientHelper(QuickbloxClient);
                var blobUploadInfo = await contentHelper.UploadImage(newImageBytes, false);
                if (blobUploadInfo != null)
                {
                    var imageUrl = contentHelper.GenerateImageUrl(blobUploadInfo.UId, blobUploadInfo.IsPublic);
                    await SendAttachment(blobUploadInfo, imageUrl);
                }
            }
            IsLoading = false;
        }
        private async Task<MessageViewModel> CreateMessageViewModelFromMessage(Message message)
        {
            var messageViewModel = new MessageViewModel
            {
                MessageText = WebUtility.HtmlDecode(message.MessageText),
                DateTime = message.DateSent.ToDateTime(),
                NotificationType = message.NotificationType,
                SenderId = message.SenderId
            };

            int currentUserId = SettingsManager.Instance.ReadFromSettings<int>(SettingsKeys.CurrentUserId);
            messageViewModel.MessageType = messageViewModel.SenderId == currentUserId ? MessageType.Outgoing : MessageType.Incoming;

            var cachingQbClient = ServiceLocator.Locator.Get<ICachingQuickbloxClient>();
            var senderUser = await cachingQbClient.GetUserById(message.SenderId);
            if (senderUser != null)
            {
                messageViewModel.SenderName = senderUser.FullName;

                if (senderUser.CustomData != null)
                {
                    var customData = JsonConvert.DeserializeObject<CustomData>(senderUser.CustomData);
                    messageViewModel.SenderImage = await ServiceLocator.Locator.Get<IImageService>().GetPublicImage(customData?.AvatarUrl);
                }
            }

            bool isImageAttached = message.Attachments != null && message.Attachments.Any() && !string.IsNullOrEmpty(message.Attachments[0].Id);

            if (isImageAttached)
            {
                var contentHelper = new ContentClientHelper(ServiceLocator.Locator.Get<IQuickbloxClient>());
                var attachedImageUrl = contentHelper.GenerateImageUrl(message.Attachments[0].Id, false);
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    messageViewModel.AttachedImage = new BitmapImage(new Uri(attachedImageUrl));
                });
            }

            return messageViewModel;
        }