From df2fe83ad2f537fb6e5a7ba137a7a6062cbb0066 Mon Sep 17 00:00:00 2001 From: Wizou Date: Thu, 28 Oct 2021 22:48:43 +0200 Subject: [PATCH] small improvements to Login methods --- src/Client.cs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Client.cs b/src/Client.cs index 5bddcd7..eefbfe0 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -907,17 +907,22 @@ namespace WTelegram { await ConnectAsync(); string botToken = Config("bot_token"); - if (_session.User != null) + var prevUser = _session.User; + if (prevUser != null) { try { - var prevUser = _session.User; - if (prevUser?.id == int.Parse(botToken.Split(':')[0])) + if (prevUser.id == int.Parse(botToken.Split(':')[0])) + { + var udpatesState = await this.Updates_GetState(); // this call enables incoming Updates + OnUpdate(udpatesState); return prevUser; + } + Helpers.Log(3, $"Current logged user {prevUser.id} mismatched bot_token. Logging out and in..."); } catch (Exception ex) { - Helpers.Log(4, $"Error deserializing User! ({ex.Message}) Proceeding to login..."); + Helpers.Log(4, $"Error while verifying current bot! ({ex.Message}) Proceeding to login..."); } await this.Auth_LogOut(); _dcSession.UserId = 0; @@ -942,29 +947,31 @@ namespace WTelegram { await ConnectAsync(); string phone_number = null; - if (_session.User != null) + var prevUser = _session.User; + if (prevUser != null) { try { - var prevUser = _session.User; + bool sameUser = true; var userId = _config("user_id"); // if config prefers to validate current user by its id, use it if (userId == null || !int.TryParse(userId, out int id) || id != -1 && prevUser.id != id) { phone_number = Config("phone_number"); // otherwise, validation is done by the phone number - if (prevUser?.phone != string.Concat(phone_number.Where(char.IsDigit))) - prevUser = null; + if (prevUser.phone != string.Concat(phone_number.Where(char.IsDigit))) + sameUser = false; } - if (prevUser != null) + if (sameUser) { // TODO: implement a more complete Updates gaps handling system? https://core.telegram.org/api/updates var udpatesState = await this.Updates_GetState(); // this call enables incoming Updates OnUpdate(udpatesState); return prevUser; } + Helpers.Log(3, $"Current logged user {prevUser.id} mismatched user_id or phone_number. Logging out and in..."); } catch (Exception ex) { - Helpers.Log(4, $"Error deserializing User! ({ex.Message}) Proceeding to login..."); + Helpers.Log(4, $"Error while verifying current user! ({ex.Message}) Proceeding to login..."); } await this.Auth_LogOut(); _dcSession.UserId = 0;