Ejemplo n.º 1
0
        public async Task SendMessageAsync(string chatId, string messageBody, ImagePickerResult imagePickerArgs, string imageCachePath)
        {
            var tempMessage = new ChatMessageModel
            {
                DateTime      = DateTimeOffset.UtcNow,
                Body          = messageBody,
                ChannelId     = chatId,
                IsMine        = true,
                ImageCacheKey = imageCachePath
            };

            var tempMessageViewModel = CreateAndAddNewTempMessage(tempMessage);

            var imageUrl = await UploadImageAsync(imagePickerArgs);

            var sentMessage = await _chatService.SendMessageAsync(chatId, messageBody, imageUrl).ConfigureAwait(false);

            if (sentMessage != null)
            {
                TryUpdateTempMessageAfterSend(tempMessageViewModel, sentMessage);
            }
        }
Ejemplo n.º 2
0
        // TODO YP: need change current approach for upload photo (before sending message)
        // Better way:
        // - start upload immediately after select
        // - when message canceled - send request for remove temp image
        private async Task <string> UploadImageAsync(ImagePickerResult imagePickerArgs)
        {
            var imageUrl = default(string);

            if (imagePickerArgs?.ImageObject != null)
            {
                try
                {
                    imageUrl = await _uploadImageService
                               .UploadImageAsync(() => (imagePickerArgs.GetStream(), imagePickerArgs.Extension))
                               .ConfigureAwait(false);
                }
                catch (InvalidDataException ex)
                {
                    _logger.Error(ex);
                }
                finally
                {
                    imagePickerArgs.Dispose();
                }
            }

            return(imageUrl);
        }