Exemple #1
0
        private async Task Send()
        {
            var userNameTask = LocalStorageService.GetStringAsync(LocalStorageAttributes.UserNameKeyName);
            var userImgTask  = LocalStorageService.GetStringAsync(LocalStorageAttributes.UserImgKeyName);
            var userIdTask   = LocalStorageService.GetStringAsync(LocalStorageAttributes.UserIdKeyName);

            await Task.WhenAll(userNameTask, userIdTask, userImgTask);

            var user = new ShortUserInfoContract
            {
                UserId   = userIdTask.Result,
                UserName = userNameTask.Result,
                UserImg  = userImgTask.Result,
            };

            var message = new CreateMessageContract
            {
                Content = messageInput,
                User    = user,
            };

            await Http.PostAsync($"api/messages/{ChatId}", message);

            messageInput = string.Empty;
        }
Exemple #2
0
        /// <summary>
        /// Converts <see cref="CreateMessageContract"/> contract to <seealso cref="MessageModel"/> model.
        /// </summary>
        /// <param name="contract">Message contract.</param>
        /// <returns><see cref="MessageModel"/> model.</returns>
        public static MessageModel ToModel(this CreateMessageContract contract)
        {
            if (contract == null)
            {
                throw new ArgumentNullException(nameof(CreateMessageContract));
            }

            return(new MessageModel
            {
                Content = contract.Content,
                CreatedDate = DateTime.UtcNow,
                UserName = contract.User.UserName,
                Chat = new ChatModel()
            });
        }
Exemple #3
0
        public async Task <IActionResult> Post(int chatId, [FromBody] CreateMessageContract contract)
        {
            var messageModel = contract.ToModel();

            messageModel.Chat.Id = chatId;

            var messageContract = messageModel.ToContract();

            messageContract.User = contract.User;

            var sendHubMessageTask   = hubContext.Clients.Group(chatId.ToString()).SendAsync(HubConstants.ReceiveMessage, messageContract);
            var writeMessageToDbTask = messageService.CreateAsync(messageModel);

            await Task.WhenAll(sendHubMessageTask, writeMessageToDbTask);

            return(StatusCode(StatusCodes.Status201Created));
        }