예제 #1
0
        public async Task <Exception> TryUpdateAccountInfo(UserInfo userInfo)
        {
            if (!ConnectedUsers.ContainsKey(userInfo.Id))
            {
                return(new ValidationException(string.Empty));
            }

            var response = await TryRunTask <string, AccountInfoResponse>(GetAccountInfo, OnDisposeCts.Token, userInfo.Login);

            if (response.IsSuccess)
            {
                ConnectedUsers[userInfo.Id].AccountInfo = response.Result;
                var responseBalances = response.Result.Balances;
                responseBalances.ForEach(x => x.UserInfo = ConnectedUsers[userInfo.Id]);
                lock (Balances)
                {
                    responseBalances.ForEach(x =>
                    {
                        var balanceInd = Balances.FindIndex(y => y.UserInfo.Id == x.UserInfo.Id && y.CurrencyType == x.CurrencyType);
                        if (balanceInd >= 0)
                        {
                            Balances[balanceInd] = x;
                        }
                        else
                        {
                            Balances.Add(x);
                        }
                    });
                }
            }
            else
            {
                return(response.Exception);
            }

            var historyResp = await TryRunTask <string, AccountHistoryResponse[]>(GetAccountHistory, OnDisposeCts.Token, userInfo.Login);

            if (historyResp.IsSuccess)
            {
                ConnectedUsers[userInfo.Id].AccountHistory = historyResp.Result;
                return(null);
            }

            return(historyResp.Exception);
        }
예제 #2
0
 public bool UserExists(string user)
 {
     return(ConnectedUsers.ContainsKey(user));
 }
예제 #3
0
파일: NebulaServer.cs 프로젝트: wwwK/Nebula
 public bool IsConnected(int userId)
 {
     return(ConnectedUsers.ContainsKey(userId));
 }
예제 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BindableChannel"/> class.
        /// </summary>
        /// <param name="model">API Channel Model.</param>
        /// <param name="guildId">Id of Channel's guild.</param>
        /// <param name="states">List of VoiceStates for users in a voice channel.</param>
        public BindableChannel([NotNull] Channel model, [CanBeNull] IEnumerable<VoiceState> states = null) : base(model)
        {
            MessengerInstance.Register<GatewayUserGuildSettingsUpdatedMessage>(this, m =>
            {
                if ((m.Settings.GuildId ?? "DM") == GuildId)
                {
                    DispatcherHelper.CheckBeginInvokeOnUi(() =>
                    {
                        // Updated channel settings
                        ChannelOverride channelOverride = ChannelsService.GetChannelSettings(Model.Id);
                        if (channelOverride != null)
                        {
                            Muted = channelOverride.Muted;
                        }
                    });
                }
            });

            MessengerInstance.Register<SettingChangedMessage<bool>>(this, m =>
            {
                if (m.Key == SettingKeys.ShowNoPermssions)
                {
                    RaisePropertyChanged(nameof(Hidden));
                }
            });

            MessengerInstance.Register<SettingChangedMessage<CollapseOverride>>(this, m =>
            {
                if (m.Key == SettingKeys.CollapseOverride)
                {
                    RaisePropertyChanged(nameof(Hidden));
                }
            });

            MessengerInstance.Register<SpeakMessage>(this, e =>
            {
                if (e.EventData.UserId != null && ConnectedUsers.ContainsKey(e.EventData.UserId))
                {
                    DispatcherHelper.CheckBeginInvokeOnUi(() => { ConnectedUsers[e.EventData.UserId].Speaking = e.EventData.Speaking > 0; });
                }
            });

            MessengerInstance.Register<GatewayVoiceStateUpdateMessage>(this, m =>
            {
                DispatcherHelper.CheckBeginInvokeOnUi(() =>
                {
                    if (m.VoiceState.ChannelId == Model.Id)
                    {
                        if (ConnectedUsers.ContainsKey(m.VoiceState.UserId))
                        {
                            ConnectedUsers[m.VoiceState.UserId].Model = m.VoiceState;
                            ConnectedUsers[m.VoiceState.UserId].UpateProperties();
                        }
                        else
                        {
                            ConnectedUsers.Add(m.VoiceState.UserId, new BindableVoiceUser(m.VoiceState));
                        }
                    }
                    else if (ConnectedUsers.ContainsKey(m.VoiceState.UserId))
                    {
                        ConnectedUsers.Remove(m.VoiceState.UserId);
                    }
                });
            });

            if (states != null)
            {
                foreach (var state in states)
                {
                    if (state.ChannelId == Model.Id)
                    {
                        state.GuildId = GuildId;
                        ConnectedUsers.Add(state.UserId, new BindableVoiceUser(state));
                    }
                }
            }
        }