Show error when loading an account with invalid or expired tokens. Fixes #328

This commit is contained in:
Manuel Cortez 2020-05-29 11:17:18 -05:00
parent ed5b66d033
commit 4fa983a314
3 changed files with 14 additions and 3 deletions

View File

@ -5,6 +5,7 @@
* Fixed error when displaying an URL at the end of a line, when the tweet or direct message contained multiple lines. Now the URL should be displayed correctly. ((#305,)[https://github.com/manuelcortez/TWBlue/issues/305]) * Fixed error when displaying an URL at the end of a line, when the tweet or direct message contained multiple lines. Now the URL should be displayed correctly. ((#305,)[https://github.com/manuelcortez/TWBlue/issues/305])
* TWBlue has been migrated completely to Python 3 (currently, the software builds with Python 3.7). * TWBlue has been migrated completely to Python 3 (currently, the software builds with Python 3.7).
* TWBlue should be restarted gracefully. Before, the application was alerting users of not being closed properly every time the application restarted by itself. * TWBlue should be restarted gracefully. Before, the application was alerting users of not being closed properly every time the application restarted by itself.
* If TWBlue attemps to load an account with invalid tokens (this happens when reactivating a previously deactivated account, or when access to the ap is revoqued), TWBlue will inform the user about this error and will skip the account. Before, the app was unable to start due to a critical error.
## Changes in version 0.95 ## Changes in version 0.95

View File

@ -21,7 +21,7 @@ from sessions.twitter import session
from . import manager from . import manager
import config_utils import config_utils
import config import config
from twython.exceptions import TwythonAuthError
log = logging.getLogger("sessionmanager.sessionManager") log = logging.getLogger("sessionmanager.sessionManager")
class sessionManagerController(object): class sessionManagerController(object):
@ -85,11 +85,18 @@ class sessionManagerController(object):
s = session.Session(i) s = session.Session(i)
s.get_configuration() s.get_configuration()
if i not in config.app["sessions"]["ignored_sessions"]: if i not in config.app["sessions"]["ignored_sessions"]:
try:
s.login() s.login()
except TwythonAuthError:
self.show_auth_error(s.settings["twitter"]["user_name"])
continue
sessions.sessions[i] = s sessions.sessions[i] = s
self.new_sessions[i] = s self.new_sessions[i] = s
# self.view.destroy() # self.view.destroy()
def show_auth_error(self, user_name):
error = view.auth_error(user_name)
def manage_new_account(self, *args, **kwargs): def manage_new_account(self, *args, **kwargs):
if self.view.new_account_dialog() == widgetUtils.YES: if self.view.new_account_dialog() == widgetUtils.YES:
location = (str(time.time())[-6:]) location = (str(time.time())[-6:])

View File

@ -76,3 +76,6 @@ class sessionManagerWindow(wx.Dialog):
def destroy(self): def destroy(self):
self.Destroy() self.Destroy()
def auth_error(user_name):
return wx.MessageDialog(None, _("TWBlue is unable to authenticate the account for {} in Twitter. It might be due to an invalid or expired token, revoqued access to the application, or after an account reactivation. Please remove the account manually from your Twitter sessions in order to stop seeing this message.").format(user_name,), _("Authentication error for session {}").format(user_name,), wx.OK).ShowModal()