From 4f1a6610aa9a8dee7b2c2b23635cf43667a7883b Mon Sep 17 00:00:00 2001
From: Wizou <11647984+wiz0u@users.noreply.github.com>
Date: Fri, 8 Jul 2022 01:15:37 +0200
Subject: [PATCH] Option to prevent logout on failed resume
---
src/Client.cs | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
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;
}