Fix gestion queue et session_id lorsqu'on fait le oauth discord.
This commit is contained in:
+35
-6
@@ -161,6 +161,8 @@ class MainWindow(QMainWindow):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self._ensure_server_session()
|
||||||
|
|
||||||
if not PlayerServerInfo.session_id:
|
if not PlayerServerInfo.session_id:
|
||||||
PlayerServerInfo.session_id = GetServerTokenForDiscord.authenticate(Urls.API_URL.value)
|
PlayerServerInfo.session_id = GetServerTokenForDiscord.authenticate(Urls.API_URL.value)
|
||||||
GetServerTokenForDiscord.register_discord_user(
|
GetServerTokenForDiscord.register_discord_user(
|
||||||
@@ -169,11 +171,7 @@ class MainWindow(QMainWindow):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if self.queue_position_value is None:
|
if self.queue_position_value is None:
|
||||||
show_qt_error(
|
self.start_queue()
|
||||||
self,
|
|
||||||
"Connexion en attente",
|
|
||||||
"La position dans la file d'attente n'est pas encore connue."
|
|
||||||
)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.queue_position_value != 0:
|
if self.queue_position_value != 0:
|
||||||
@@ -208,8 +206,23 @@ class MainWindow(QMainWindow):
|
|||||||
test = discord_oauth.get_discord_user_id()
|
test = discord_oauth.get_discord_user_id()
|
||||||
self.config.set_discord_user(test[0])
|
self.config.set_discord_user(test[0])
|
||||||
PlayerServerInfo.session_id = test[1]
|
PlayerServerInfo.session_id = test[1]
|
||||||
|
self.stored_user_id = test[0]
|
||||||
self.config.save()
|
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:
|
except ApiError as exc:
|
||||||
show_qt_error(self, "Connexion Discord", f"Impossible de récupérer ton compte Discord.\n\n{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):
|
def launch_fivem(self):
|
||||||
pass
|
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):
|
class QueueThread(QThread):
|
||||||
update = Signal(str)
|
update = Signal(str)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user