public async Task <IActionResult> Index(string threadId) { if (threadId == null) { return(this.RedirectToAction(nameof(this.Error))); } if (!Guid.TryParse(threadId, out var threadGuid)) { return(this.RedirectToAction(nameof(this.Error))); } var thread = await _threadDbReader.SearchThreadModelAsync(threadGuid); if (thread == null) { return(this.RedirectToAction(nameof(this.Error))); } var threadRoomViewModel = new ThreadRoomViewModel(thread.ThreadTitle, thread.ThreadId, HttpContext.Request.Host.Value); return(this.View(threadRoomViewModel)); }
public async Task EnterThreadRoom(Guid threadId) { var thread = await _threadDbReader.SearchThreadModelAsync(threadId); if (thread == null) { await Clients.Caller.EnterRoomResultAsync(false, Array.Empty <ThreadMessage>()); } string groupName = threadId.ToString(); await Groups.AddToGroupAsync(Context.ConnectionId, groupName); var group = new Group(groupName, threadId); _connectionGroupCache.Add(Context.ConnectionId, group); var comments = await _commentAccessor.ReadCommentAsync(group.ThreadId); var messages = comments.Select(x => new ThreadMessage(x.Message)).ToArray(); await Clients.Caller.EnterRoomResultAsync(true, messages); }