public async Task PublishAccountUpdate(Account acc)
        {
            ConnectedUser conus;

            if (ConnectedUsers.TryGetValue(acc.Name, out conus))
            {
                LoginChecker.UpdateUserFromAccount(conus.User, acc);
                await SyncUserToAll(conus);

                // join/leave to default channels
                var defaultChannels = ChannelManager.GetDefaultChannels(acc);
                foreach (var chan in Channels)
                {
                    if (chan.Value.Users.ContainsKey(acc.Name) && !ChannelManager.CanJoin(acc, chan.Key))
                    {
                        await conus.Process(new LeaveChannel()
                        {
                            ChannelName = chan.Key
                        });
                    }
                    else if (!chan.Value.Users.ContainsKey(acc.Name) && defaultChannels.Contains(acc.Name))
                    {
                        await conus.Process(new JoinChannel()
                        {
                            ChannelName = chan.Key, Password = chan.Value.Password
                        });
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public async Task PublishAccountUpdate(Account acc)
        {
            ConnectedUser conus;

            if (ConnectedUsers.TryGetValue(acc.Name, out conus))
            {
                LoginChecker.UpdateUserFromAccount(conus.User, acc);
                await Broadcast(ConnectedUsers.Values, conus.User);
            }
        }