diff --git a/src/ui/main_window.py b/src/ui/main_window.py index 9856ba8..8dbed67 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -161,6 +161,8 @@ class MainWindow(QMainWindow): ) return + self._ensure_server_session() + if not PlayerServerInfo.session_id: PlayerServerInfo.session_id = GetServerTokenForDiscord.authenticate(Urls.API_URL.value) GetServerTokenForDiscord.register_discord_user( @@ -169,11 +171,7 @@ class MainWindow(QMainWindow): ) if self.queue_position_value is None: - show_qt_error( - self, - "Connexion en attente", - "La position dans la file d'attente n'est pas encore connue." - ) + self.start_queue() return if self.queue_position_value != 0: @@ -208,8 +206,23 @@ class MainWindow(QMainWindow): test = discord_oauth.get_discord_user_id() self.config.set_discord_user(test[0]) PlayerServerInfo.session_id = test[1] + self.stored_user_id = test[0] self.config.save() - self.ui.stackedWidget.setCurrentIndex(0) + + self._ensure_server_session() + + try: + WhiteList.check_whitelist(Urls.API_URL.value, self.stored_user_id) + if PlayerServerInfo.is_whitelist: + self.start_queue() + self.ui.queue_lbl.show() + self.ui.queue_position.show() + self.ui.stackedWidget.setCurrentIndex(0) + else: + self.ui.stackedWidget.setCurrentIndex(2) + except ApiError as exc: + show_qt_error(self, "La Tanière", f"Impossible de vérifier la whitelist.\n\n{exc}") + except ApiError as exc: show_qt_error(self, "Connexion Discord", f"Impossible de récupérer ton compte Discord.\n\n{exc}") # ------------------------------------------------------------------ @@ -330,6 +343,22 @@ class MainWindow(QMainWindow): def launch_fivem(self): pass + def _ensure_server_session(self) -> None: + """ + Garantit que le serveur connaît bien le session_id courant. + Le fait d'avoir une valeur locale ne suffit pas : il faut aussi + la resynchroniser côté serveur. + """ + if not self.stored_user_id or self.stored_user_id.isspace(): + raise ApiError("Aucun identifiant Discord disponible.") + + if not PlayerServerInfo.session_id: + PlayerServerInfo.session_id = GetServerTokenForDiscord.authenticate(Urls.API_URL.value) + + GetServerTokenForDiscord.register_discord_user( + self.stored_user_id, + PlayerServerInfo.session_id, + ) class QueueThread(QThread): update = Signal(str)