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;
}