public void JoinRoom(ChatUser user, ChatRoom room, string inviteCode) { // Throw if the room is private but the user isn't allowed if (room.Private) { // First, check if the invite code is correct if (!String.IsNullOrEmpty(inviteCode) && String.Equals(inviteCode, room.InviteCode, StringComparison.OrdinalIgnoreCase)) { // It is, add the user to the allowed users so that future joins will work room.AllowedUsers.Add(user); } if (!room.IsUserAllowed(user)) { throw new HubException(String.Format(LanguageResources.Join_LockedAccessPermission, room.Name)); } } // Add this user to the room _repository.AddUserRoom(user, room); ChatUserPreferences userPreferences = user.Preferences; userPreferences.TabOrder.Add(room.Name); user.Preferences = userPreferences; // Clear the cache _cache.RemoveUserInRoom(user, room); }
public void LeaveRoom(ChatUser user, ChatRoom room) { // Update the cache _cache.RemoveUserInRoom(user, room); // Remove the user from this room _repository.RemoveUserRoom(user, room); ChatUserPreferences userPreferences = user.Preferences; userPreferences.TabOrder.Remove(room.Name); user.Preferences = userPreferences; _repository.CommitChanges(); }
public void TabOrderChanged(string[] tabOrdering) { string userId = Context.User.GetUserId(); ChatUser user = _repository.GetUserById(userId); ChatUserPreferences userPreferences = user.Preferences; userPreferences.TabOrder = tabOrdering.ToList(); user.Preferences = userPreferences; _repository.CommitChanges(); Clients.User(user.Id).updateTabOrder(tabOrdering); }