예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #3
0
        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);
        }