private async Task ConnectAsync(bool forceAuth) { if (ClientSettings.Session.AuthKey == null || ClientSettings.Session.AuthKey.Data.Length == 0 || forceAuth) { var result = await DoAuthentication().ConfigureAwait(false); ClientSettings.Session.AuthKey = result.AuthKey; ClientSettings.Session.TimeOffset = result.TimeOffset; await SessionStore.Save().ConfigureAwait(false); } ProtoRecieveService.StartReceiving(); //set-up layer var request = new RequestInvokeWithLayer { Layer = SchemaInfo.SchemaVersion, Query = new RequestInitConnection { ApiId = ClientSettings.AppId, AppVersion = "1.0.0", DeviceModel = "PC", LangCode = "en", LangPack = "tdesktop", SystemLangCode = "en", Query = new RequestGetConfig(), SystemVersion = "Win 10.0" } }; var response = (TConfig)await SendService.SendRequestAsync(request).ConfigureAwait(false); _dcOptions = response.DcOptions.Items.Cast <TDcOption>().ToArray(); }
public async Task ConnectAsync(bool reconnect = false) { if (ClientSettings.Session.AuthKey == null || reconnect) { var result = await DoAuthentication(); ClientSettings.Session.AuthKey = result.AuthKey; ClientSettings.Session.TimeOffset = result.TimeOffset; SessionStore.Save(); } //set-up layer var config = new TlRequestGetConfig(); var request = new TlRequestInitConnection { ApiId = ClientSettings.AppId, AppVersion = "1.0.0", DeviceModel = "PC", LangCode = "en", Query = config, SystemVersion = "Win 10.0" }; ConfirmationSendService.StartSendingConfirmation(); ProtoRecieveService.StartReceiving(); var response = await SendRequestAsync <TlConfig>(new TlRequestInvokeWithLayer { Layer = 57, Query = request }); _dcOptions = response.DcOptions.Lists; }
public void Dispose() { _timer?.Dispose(); ProtoRecieveService?.Dispose(); }