Suport de repos privats: token de Gitea global configurable des del menú

This commit is contained in:
2026-05-29 22:30:11 +02:00
parent bfa01f31e3
commit 667eade660
4 changed files with 79 additions and 25 deletions
+25 -2
View File
@@ -7,6 +7,8 @@ from pathlib import Path
from PySide6.QtCore import QThreadPool, Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import (
QInputDialog,
QLineEdit,
QMainWindow,
QMessageBox,
QPlainTextEdit,
@@ -101,6 +103,27 @@ class MainWindow(QMainWindow):
self.action_delete.toggled.connect(self._set_delete_mode)
menu.addAction(self.action_delete)
menu.addSeparator()
self.action_token = QAction("Configura el token de Gitea…", self)
self.action_token.triggered.connect(self._configure_token)
menu.addAction(self.action_token)
def _configure_token(self) -> None:
token, ok = QInputDialog.getText(
self,
"Token de Gitea",
"Token personal d'accés (per a repos privats).\n"
"Es guarda local a settings.json (no es versiona).",
QLineEdit.Password,
self.settings.gitea_token,
)
if not ok:
return
self.settings.gitea_token = token.strip()
save_settings(self.settings)
estat = "configurat" if self.settings.gitea_token else "esborrat"
self._log(f"Token de Gitea {estat}.")
def _on_toggle_hide(self, checked: bool) -> None:
self.settings.hide_not_downloaded = checked
save_settings(self.settings)
@@ -116,7 +139,7 @@ class MainWindow(QMainWindow):
def _check_updates(self) -> None:
self.action_check.setEnabled(False)
self._log("=== Comprovant actualitzacions ===")
worker = CheckUpdatesWorker(self.root, self.config.games)
worker = CheckUpdatesWorker(self.root, self.config.games, self.settings.gitea_token)
worker.signals.log.connect(self._log)
worker.signals.result.connect(self._mark_update)
worker.signals.finished.connect(self._check_done)
@@ -185,7 +208,7 @@ class MainWindow(QMainWindow):
row.set_busy(True, "Descarregant…")
self._log(f"=== Descàrrega: {game.name} ===")
worker = DownloadWorker(self.root, game)
worker = DownloadWorker(self.root, game, self.settings.gitea_token)
worker.signals.log.connect(self._log)
worker.signals.finished.connect(lambda _meta, g=game: self._download_done(g))
worker.signals.error.connect(lambda msg, g=game: self._op_error(g, msg))