public void JoinGroup(string groupName)
{
if (lastJoiners.ContainsKey(Context.ConnectionId))
{
lastJoiners.Remove(Context.ConnectionId);
}
lastJoiners.Add(Context.ConnectionId, groupName);
Groups.Add(Context.ConnectionId, groupName);
var model = new CurrentListenerModel { GroupName = groupName };
if (Context.User != null)
{
var user = userManager.ReadUser(Context.User.Identity.Name);
model.User = user;
}
else
{
model.User = null;
}
if (connectedGroupUsers.ContainsKey(Context.ConnectionId))
{
connectedGroupUsers.Remove(Context.ConnectionId);
}
connectedGroupUsers.Add(Context.ConnectionId, model);
Clients.Caller.modifyListeners(connectedGroupUsers.Values.ToList().FindAll(p => p.GroupName == model.GroupName).Count + " party people attending", connectedGroupUsers.Values.ToList().FindAll(p => p.GroupName == model.GroupName));
Clients.OthersInGroup(groupName).modifyListeners(connectedGroupUsers.Values.ToList().FindAll(p => p.GroupName == model.GroupName).Count + " party people attending", connectedGroupUsers.Values.ToList().FindAll(p => p.GroupName == model.GroupName));
if (playlistMasters.ContainsKey(groupName))
{
Clients.Client(playlistMasters.Single(p => p.Key == groupName).Value).syncLiveWhenPlaying();
}
}