public async Task <IActionResult> Index(string username, string group) { var currentUser = await this.userManager.GetUserAsync(this.User); bool isAvailableToChat = await this.privateChatService.IsUserAbleToChat(username, group, currentUser); if (!isAvailableToChat) { this.TempData["Error"] = ErrorMessages.NotAbleToChat; return(this.RedirectToAction("Index", "Profile", new { username })); } var model = new PrivateChatViewModel { FromUser = await this.userManager.GetUserAsync(this.HttpContext.User), ToUser = await this.userManager.FindByNameAsync(username), ChatMessages = await this.privateChatService.ExtractAllMessages(group), GroupName = group, Emojis = this.privateChatService.GetAllEmojis(), AllChatThemes = this.privateChatService.GetAllThemes(), ChatThemeViewModel = this.privateChatService.GetGroupTheme(group), AllStickers = this.privateChatService.GetAllStickers(currentUser), AllQuickChatReplies = this.privateChatService.GetAllQuickReplies(currentUser), }; return(this.View(model)); }
protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (isLoading) { return; } isLoading = true; var parameter = (string)e.Parameter; vm = new PrivateChatViewModel(parameter); this.DataContext = vm; vm.OnAppearing(); }
public async Task <IActionResult> Index(string username, string group) { var currentUser = await this.userManager.GetUserAsync(this.User); bool isAbaleToChat = await this.privateChatService.IsUserAbleToChat(username, group, currentUser); if (!isAbaleToChat) { this.TempData["Error"] = ErrorMessages.NotAbleToChat; return(this.RedirectToAction("Index", "Profile", new { username })); } var model = new PrivateChatViewModel { FromUser = await this.userManager.GetUserAsync(this.HttpContext.User), ToUser = this.db.Users.FirstOrDefault(x => x.UserName == username), ChatMessages = await this.privateChatService.ExtractAllMessages(group), GroupName = group, }; return(this.View(model)); }
// Refference: opening a chat in the nav bar (LoginPartial / Съобщения) public async Task <IActionResult> Index(string receiverId) { var user = await this.userManager.GetUserAsync(this.User); var receiver = await this.userManager.FindByIdAsync(receiverId); if (user.Id.Equals(receiver.Id)) { return(this.Redirect(GlobalConstants.HomePageRedirect)); } var conversationId = await this.privateChatService.GetConversationBySenderAndReceiverIdsAsync(user.Id, receiver.Id); if (conversationId == null) { return(this.CustomNotFound()); } var conversationMessages = await this.privateChatService.GetAllConversationMessagesAsync <MessageViewModel>(conversationId); await this.privateChatService.MarkAllMessagesOfTheCurrentUserAsSeenAsync(conversationId, user.Id); foreach (var message in conversationMessages) { message.Content = new HtmlSanitizer().Sanitize(message.Content); } var model = new PrivateChatViewModel { Sender = user, Receiver = receiver, ConversationId = conversationId, ChatMessages = conversationMessages, }; return(this.View(model)); }
public async Task <IActionResult> PrivateChat(string friendId, string friendEmail) { var owner = await Owner(); var friend = _userManager.Users.FirstOrDefault(u => u.Id == friendId); var ownerId = owner.Id; var isUserOnline = await IsOnline(friendId); var model = new PrivateChatViewModel { Friend = new User { Id = friendId, Email = friendEmail, IsOnline = isUserOnline, Avatar = friend.Avatar, AvatarContentType = friend.AvatarContentType }, }; _messagesRepository.MarkHistoryAsRead(ownerId, friendId); return(View(model)); }
public PrivateChatPage(Chat chat) { InitializeComponent(); BindingContext = new PrivateChatViewModel(chat, slMessage); }