diff --git a/src/Client.cs b/src/Client.cs index 585b230..6f62533 100644 --- a/src/Client.cs +++ b/src/Client.cs @@ -891,9 +891,10 @@ namespace WTelegram ///
(this method calls ConnectAsync if necessary) /// Config callback is queried for: phone_number, verification_code
and eventually first_name, last_name (signup required), password (2FA auth), user_id (alt validation)
/// (optional) Preference for verification_code sending + /// Proceed to logout and login if active user session cannot be resumed successfully /// Detail about the logged-in user ///
Most methods of this class are async (Task), so please use to get the result
- public async Task LoginUserIfNeeded(CodeSettings settings = null) + public async Task LoginUserIfNeeded(CodeSettings settings = null, bool reloginOnFailedResume = true) { await ConnectAsync(); string phone_number = null; @@ -910,12 +911,15 @@ namespace WTelegram _session.UserId = _dcSession.UserId = self.id; return self; } - Helpers.Log(3, $"Current logged user {self.id} mismatched user_id or phone_number. Logging out and in..."); + var mismatch = $"Current logged user {self.id} mismatched user_id or phone_number"; + Helpers.Log(3, mismatch); + if (!reloginOnFailedResume) throw new ApplicationException(mismatch); } - catch (Exception ex) + catch (RpcException ex) when (reloginOnFailedResume) { - Helpers.Log(4, $"Error while verifying current user! ({ex.Message}) Proceeding to login..."); + Helpers.Log(4, $"Error while fetching current user! ({ex.Message})"); } + Helpers.Log(3, $"Proceeding to logout and login..."); await this.Auth_LogOut(); _session.UserId = _dcSession.UserId = 0; }