apply new server settings without needing to restart
This commit is contained in:
@@ -69,7 +69,8 @@ class GotifyApplication(GotifySession):
|
|||||||
class GotifyClient(GotifySession):
|
class GotifyClient(GotifySession):
|
||||||
def __init__(self, url: str, client_token: str):
|
def __init__(self, url: str, client_token: str):
|
||||||
super(GotifyClient, self).__init__(url, client_token)
|
super(GotifyClient, self).__init__(url, client_token)
|
||||||
self.listener = Listener(url, client_token)
|
self.url = url
|
||||||
|
self.client_token = client_token
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Application
|
Application
|
||||||
@@ -172,6 +173,8 @@ class GotifyClient(GotifySession):
|
|||||||
|
|
||||||
def listen(
|
def listen(
|
||||||
self,
|
self,
|
||||||
|
url: str,
|
||||||
|
client_token: str,
|
||||||
opened_callback: Callable[[], None] = None,
|
opened_callback: Callable[[], None] = None,
|
||||||
closed_callback: Callable[[int, str], None] = None,
|
closed_callback: Callable[[int, str], None] = None,
|
||||||
new_message_callback: Callable[[GotifyMessageModel], None] = None,
|
new_message_callback: Callable[[GotifyMessageModel], None] = None,
|
||||||
@@ -180,6 +183,7 @@ class GotifyClient(GotifySession):
|
|||||||
def dummy(*args):
|
def dummy(*args):
|
||||||
...
|
...
|
||||||
|
|
||||||
|
self.listener = Listener(url, client_token)
|
||||||
self.listener.opened.connect(lambda: self.opened_callback(opened_callback))
|
self.listener.opened.connect(lambda: self.opened_callback(opened_callback))
|
||||||
self.listener.closed.connect(closed_callback or dummy)
|
self.listener.closed.connect(closed_callback or dummy)
|
||||||
self.listener.new_message.connect(new_message_callback or dummy)
|
self.listener.new_message.connect(new_message_callback or dummy)
|
||||||
@@ -195,6 +199,9 @@ class GotifyClient(GotifySession):
|
|||||||
if not self.is_listening():
|
if not self.is_listening():
|
||||||
self.listener.start()
|
self.listener.start()
|
||||||
|
|
||||||
|
def stop_final(self):
|
||||||
|
self.listener.stop_final()
|
||||||
|
|
||||||
def stop(self, reset_wait: bool = False):
|
def stop(self, reset_wait: bool = False):
|
||||||
if reset_wait:
|
if reset_wait:
|
||||||
self.reset_wait_time()
|
self.reset_wait_time()
|
||||||
|
|||||||
@@ -63,6 +63,14 @@ class Listener(QtCore.QThread):
|
|||||||
):
|
):
|
||||||
self.closed.emit(close_status_code, close_msg)
|
self.closed.emit(close_status_code, close_msg)
|
||||||
|
|
||||||
|
def stop_final(self):
|
||||||
|
def dummy(*args):
|
||||||
|
...
|
||||||
|
|
||||||
|
self.ws.on_close = dummy
|
||||||
|
self.ws.close()
|
||||||
|
self.running = False
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
logger.debug("Listener: stopping.")
|
logger.debug("Listener: stopping.")
|
||||||
self.ws.close()
|
self.ws.close()
|
||||||
|
|||||||
@@ -58,10 +58,6 @@ def init_logger(logger: logging.Logger):
|
|||||||
|
|
||||||
|
|
||||||
class MainApplication(QtWidgets.QApplication):
|
class MainApplication(QtWidgets.QApplication):
|
||||||
def __init__(self, argv: List):
|
|
||||||
super(MainApplication, self).__init__(argv)
|
|
||||||
self.shutting_down = False
|
|
||||||
|
|
||||||
def init_ui(self):
|
def init_ui(self):
|
||||||
self.gotify_client = gotify.GotifyClient(
|
self.gotify_client = gotify.GotifyClient(
|
||||||
settings.value("Server/url", type=str),
|
settings.value("Server/url", type=str),
|
||||||
@@ -83,6 +79,8 @@ class MainApplication(QtWidgets.QApplication):
|
|||||||
self.first_connect = True
|
self.first_connect = True
|
||||||
|
|
||||||
self.gotify_client.listen(
|
self.gotify_client.listen(
|
||||||
|
settings.value("Server/url", type=str),
|
||||||
|
settings.value("Server/client_token", type=str),
|
||||||
new_message_callback=self.new_message_callback,
|
new_message_callback=self.new_message_callback,
|
||||||
opened_callback=self.listener_opened_callback,
|
opened_callback=self.listener_opened_callback,
|
||||||
closed_callback=self.listener_closed_callback,
|
closed_callback=self.listener_closed_callback,
|
||||||
@@ -162,7 +160,6 @@ class MainApplication(QtWidgets.QApplication):
|
|||||||
def listener_closed_callback(self, close_status_code: int, close_msg: str):
|
def listener_closed_callback(self, close_status_code: int, close_msg: str):
|
||||||
self.main_window.set_connecting()
|
self.main_window.set_connecting()
|
||||||
self.tray.set_icon_error()
|
self.tray.set_icon_error()
|
||||||
if not self.shutting_down:
|
|
||||||
self.gotify_client.increase_wait_time()
|
self.gotify_client.increase_wait_time()
|
||||||
QtCore.QTimer.singleShot(
|
QtCore.QTimer.singleShot(
|
||||||
self.gotify_client.get_wait_time() * 1000, self.gotify_client.reconnect
|
self.gotify_client.get_wait_time() * 1000, self.gotify_client.reconnect
|
||||||
@@ -322,18 +319,16 @@ class MainApplication(QtWidgets.QApplication):
|
|||||||
settings_dialog.apply_settings()
|
settings_dialog.apply_settings()
|
||||||
|
|
||||||
if settings_dialog.server_changed:
|
if settings_dialog.server_changed:
|
||||||
mb = QtWidgets.QMessageBox(
|
# Restart the listener
|
||||||
QtWidgets.QMessageBox.Icon.Information,
|
self.gotify_client.stop_final()
|
||||||
"Restart",
|
self.gotify_client.listen(
|
||||||
"Restart to apply server changes",
|
settings.value("Server/url", type=str),
|
||||||
QtWidgets.QMessageBox.StandardButton.Yes
|
settings.value("Server/client_token", type=str),
|
||||||
| QtWidgets.QMessageBox.StandardButton.Cancel,
|
new_message_callback=self.new_message_callback,
|
||||||
|
opened_callback=self.listener_opened_callback,
|
||||||
|
closed_callback=self.listener_closed_callback,
|
||||||
)
|
)
|
||||||
|
|
||||||
r = mb.exec()
|
|
||||||
if r == QtWidgets.QMessageBox.StandardButton.Yes:
|
|
||||||
self.quit()
|
|
||||||
|
|
||||||
def tray_activated_callback(
|
def tray_activated_callback(
|
||||||
self, reason: QtWidgets.QSystemTrayIcon.ActivationReason
|
self, reason: QtWidgets.QSystemTrayIcon.ActivationReason
|
||||||
):
|
):
|
||||||
@@ -380,8 +375,7 @@ class MainApplication(QtWidgets.QApplication):
|
|||||||
|
|
||||||
self.lock_file.unlock()
|
self.lock_file.unlock()
|
||||||
|
|
||||||
self.shutting_down = True
|
self.gotify_client.stop_final()
|
||||||
self.gotify_client.stop()
|
|
||||||
super(MainApplication, self).quit()
|
super(MainApplication, self).quit()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user