From fd22d831ebd5a43467bd096cf1639cd1bb920e15 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Mon, 25 Dec 2023 18:21:41 +0200 Subject: [PATCH] Rare: refactor timer names --- rare/components/__init__.py | 23 ++++++++++++----------- rare/components/main_window.py | 12 ++++++------ rare/shared/game_process.py | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/rare/components/__init__.py b/rare/components/__init__.py index 841b3af2..e76dacf1 100644 --- a/rare/components/__init__.py +++ b/rare/components/__init__.py @@ -51,7 +51,7 @@ class Rare(RareApp): # set Application name for settings self.main_window: Optional[MainWindow] = None self.launch_dialog: Optional[LaunchDialog] = None - self.timer: Optional[QTimer] = None + self.relogin_timer: Optional[QTimer] = None # This launches the application after it has been instantiated. # The timer's signal will be serviced once we call `exec()` on the application @@ -61,15 +61,15 @@ class Rare(RareApp): dt_exp = datetime.fromisoformat(self.core.lgd.userdata['expires_at'][:-1]).replace(tzinfo=timezone.utc) dt_now = datetime.utcnow().replace(tzinfo=timezone.utc) td = abs(dt_exp - dt_now) - self.timer.start(int(td.total_seconds() - 60) * 1000) + self.relogin_timer.start(int(td.total_seconds() - 60) * 1000) self.logger.info(f"Renewed session expires at {self.core.lgd.userdata['expires_at']}") - def re_login(self): + def relogin(self): self.logger.info("Session expires shortly. Renew session") try: - self.core.login() + self.core.login(force_refresh=True) except requests.exceptions.ConnectionError: - self.timer.start(3000) # try again if no connection + self.relogin_timer.start(3000) # try again if no connection return self.poke_timer() @@ -85,8 +85,9 @@ class Rare(RareApp): @pyqtSlot() def __on_start_app(self): - self.timer = QTimer() - self.timer.timeout.connect(self.re_login) + self.relogin_timer = QTimer(self) + self.relogin_timer.setTimerType(Qt.VeryCoarseTimer) + self.relogin_timer.timeout.connect(self.relogin) self.poke_timer() self.main_window = MainWindow() @@ -105,10 +106,10 @@ class Rare(RareApp): def __on_exit_app(self, exit_code=0): threadpool = QThreadPool.globalInstance() threadpool.waitForDone() - if self.timer is not None: - self.timer.stop() - self.timer.deleteLater() - self.timer = None + if self.relogin_timer is not None: + self.relogin_timer.stop() + self.relogin_timer.deleteLater() + self.relogin_timer = None self.rcore.deleteLater() del self.rcore self.processEvents() diff --git a/rare/components/main_window.py b/rare/components/main_window.py index 318fc6b6..6c998336 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -106,10 +106,10 @@ class MainWindow(QMainWindow): except ModuleNotFoundError: logger.warning("Discord RPC module not found") - self.timer = QTimer() - self.timer.setInterval(1000) - self.timer.timeout.connect(self.timer_finished) - self.timer.start() + self.singleton_timer = QTimer(self) + self.singleton_timer.setInterval(1000) + self.singleton_timer.timeout.connect(self.timer_finished) + self.singleton_timer.start() self.tray_icon: TrayIcon = TrayIcon(self) self.tray_icon.exit_app.connect(self.__on_exit_app) @@ -199,7 +199,7 @@ class MainWindow(QMainWindow): if action.startswith("show"): self.show() os.remove(file_path) - self.timer.start() + self.singleton_timer.start() @pyqtSlot() @pyqtSlot(int) @@ -258,7 +258,7 @@ class MainWindow(QMainWindow): e.ignore() return # FIXME: End of FIXME - self.timer.stop() + self.singleton_timer.stop() self.tray_icon.deleteLater() self.hide() self.exit_app.emit(self.__exit_code) diff --git a/rare/shared/game_process.py b/rare/shared/game_process.py index be69f335..b12b690a 100644 --- a/rare/shared/game_process.py +++ b/rare/shared/game_process.py @@ -2,7 +2,7 @@ import json import logging from enum import IntEnum -from PyQt5.QtCore import QObject, pyqtSignal, QTimer, pyqtSlot +from PyQt5.QtCore import QObject, pyqtSignal, QTimer, pyqtSlot, Qt from PyQt5.QtNetwork import QLocalSocket from PyQt5.QtWidgets import QMessageBox from legendary.models.game import Game