private void PingMainTransportAsync(TLProxyBase item, ITransport transport) { MTProtoService.PingAsync(TLLong.Random(), pong => Execute.BeginOnUIThread(() => { item.Ping = transport.Ping > 0 ? new TLInt((int)transport.Ping) : null; Set(_proxyConfig); })); }
protected override void OnActivate() { base.OnActivate(); _proxyConfig = _transportService.GetProxyConfig() as TLProxyConfig76; if (_proxyConfig != null) { _isEnabled = _proxyConfig.IsEnabled.Value; _useForCalls = _proxyConfig.UseForCalls.Value; var now = TLUtils.DateToUniversalTimeTLInt(MTProtoService.ClientTicksDelta, DateTime.Now); Items.Clear(); for (var i = 0; i < _proxyConfig.Items.Count; i++) { var item = _proxyConfig.Items[i]; item.IsSelected = i == _proxyConfig.SelectedIndex.Value; Items.Add(item); if (CheckProxy(item)) { item.Status = ProxyStatus.Connecting; item.Ping = null; _proxyChecker.CheckAsync(item, 10.0, (proxyItem, ping) => Execute.BeginOnUIThread(() => { proxyItem.Proxy.CheckTime = now; proxyItem.Proxy.Ping = ping; proxyItem.Proxy.Status = item.Ping != null ? ProxyStatus.Available : ProxyStatus.Unavailable; Set(_proxyConfig); })); } } } _transportService.TransportConnected += OnTransportConnected; _transportService.TransportConnecting += OnTransportConnecting; }
private void LoadCalls() { var timespan = Items.Count > 0 ? 1.0 : 0.0; BeginOnThreadPool(TimeSpan.FromSeconds(timespan), () => { var isAuthorized = SettingsHelper.GetValue <bool>(Constants.IsAuthorizedKey); //if (!FirstRun) //{ // return; //} if (!isAuthorized) { return; } FirstRun = false; Status = Items.Count == 0 && LazyItems.Count == 0 ? AppResources.Loading : string.Empty; var limit = 50;//Constants.DialogsSlice; MTProtoService.SearchAsync( new TLInputPeerEmpty(), TLString.Empty, null, new TLInputMessagesFilterPhoneCalls { Flags = new TLInt(0) }, new TLInt(0), new TLInt(0), new TLInt(0), new TLInt(0), new TLInt(limit), new TLInt(0), result => { CacheService.AddChats(result.Chats, results => { }); CacheService.AddUsers(result.Users, results => { }); var items = new List <TLDialogBase>(); var newMessages = result as TLMessages; if (newMessages != null) { var usersCache = new Dictionary <int, TLUserBase>(); foreach (var user in newMessages.Users) { usersCache[user.Index] = user; } var chatsCache = new Dictionary <int, TLChatBase>(); foreach (var chat in newMessages.Chats) { chatsCache[chat.Index] = chat; } foreach (var message in newMessages.Messages.OfType <TLMessageCommon>()) { var dialog = new TLDialog { TopMessage = message }; var peer = TLUtils.GetPeerFromMessage(message); if (peer is TLPeerUser) { TLUserBase user; if (!usersCache.TryGetValue(peer.Id.Value, out user)) { continue; } dialog.With = user; items.Add(dialog); } } } Telegram.Api.Helpers.Execute.BeginOnUIThread(() => { IsLastSliceLoaded = result.Messages.Count < limit; _offset = Constants.DialogsSlice; _isUpdated = true; const int maxMessagesSlice = 8; Items.Clear(); for (var i = 0; i < items.Count; i++) { if (i < maxMessagesSlice) { Items.Add(items[i]); } else { LazyItems.Add(items[i]); } } Status = Items.Count == 0 && LazyItems.Count == 0 ? AppResources.NoCallsHere : string.Empty; if (LazyItems.Count > 0) { BeginOnUIThread(() => { for (var i = 0; i < LazyItems.Count; i++) { Items.Add(LazyItems[i]); } LazyItems.Clear(); }); } }); }, error => Execute.BeginOnUIThread(() => { Telegram.Api.Helpers.Execute.ShowDebugMessage("messages.getDialogs error " + error); //_isUpdated = true; Status = string.Empty; })); }); base.OnInitialize(); }