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); }
public bool UserExists(string user) { return(ConnectedUsers.ContainsKey(user)); }
public bool IsConnected(int userId) { return(ConnectedUsers.ContainsKey(userId)); }
/// <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)); } } } }