feat: 优化设置布局并支持管理端地址切换 (#130)
This commit is contained in:
@@ -173,6 +173,12 @@ class ClaimTaskWorker(QObject):
|
||||
|
||||
self._cancelled = True
|
||||
|
||||
@pyqtSlot(object)
|
||||
def replace_gateway(self, gateway: AdminGateway) -> None:
|
||||
"""当前命令结束后,为后续领取和提交切换 Admin Gateway。"""
|
||||
|
||||
self._gateway = gateway
|
||||
|
||||
@pyqtSlot()
|
||||
def run(self) -> None:
|
||||
"""兼容旧调用;新代码通过 ``run_selected`` 提交命令。"""
|
||||
@@ -416,6 +422,7 @@ class PDDTaskPageEvent(QObject):
|
||||
_claimRunRequested = pyqtSignal(str)
|
||||
_claimReleaseRequested = pyqtSignal()
|
||||
_claimShutdownRequested = pyqtSignal()
|
||||
_claimGatewayChanged = pyqtSignal(object)
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
@@ -486,11 +493,13 @@ class PDDTaskPageEvent(QObject):
|
||||
pass
|
||||
|
||||
settings = settings_repository or SettingsRepository()
|
||||
self._settings_repository = settings
|
||||
self._client_service = CurrentClientService(settings)
|
||||
self._selected_android_device_service = SelectedAndroidDeviceService(
|
||||
settings
|
||||
)
|
||||
self._claim_gateway = claim_gateway
|
||||
self._owns_claim_gateway = claim_gateway is None
|
||||
self._claim_gateway_error = ""
|
||||
if self._claim_gateway is None:
|
||||
base_url = settings.get("admin.base_url", DEFAULT_ADMIN_BASE_URL)
|
||||
@@ -520,6 +529,31 @@ class PDDTaskPageEvent(QObject):
|
||||
if application is not None:
|
||||
application.aboutToQuit.connect(self.shutdown)
|
||||
|
||||
@pyqtSlot(str)
|
||||
def update_admin_base_url(self, base_url: str) -> None:
|
||||
"""让下一次领取、执行和上报统一使用新的 Admin 地址。"""
|
||||
|
||||
if self._closing or not self._owns_claim_gateway:
|
||||
return
|
||||
timeout_value = self._settings_repository.get(
|
||||
"admin.request_timeout_seconds", 3.0
|
||||
)
|
||||
try:
|
||||
timeout_seconds = float(timeout_value)
|
||||
gateway = HttpAdminGateway(
|
||||
base_url,
|
||||
timeout_seconds=timeout_seconds,
|
||||
client_id=self._client_service.load().client_id,
|
||||
)
|
||||
except (TypeError, ValueError) as exc:
|
||||
self._claim_gateway_error = str(exc)
|
||||
return
|
||||
|
||||
self._claim_gateway = gateway
|
||||
self._claim_gateway_error = ""
|
||||
if self._claim_worker is not None:
|
||||
self._claimGatewayChanged.emit(gateway)
|
||||
|
||||
def load_initial_tasks(self) -> None:
|
||||
"""应用启动后读取第一页本地任务。"""
|
||||
|
||||
@@ -1018,6 +1052,7 @@ class PDDTaskPageEvent(QObject):
|
||||
self._claimRunRequested.connect(worker.run_selected)
|
||||
self._claimReleaseRequested.connect(worker.release_device)
|
||||
self._claimShutdownRequested.connect(worker.shutdown_worker)
|
||||
self._claimGatewayChanged.connect(worker.replace_gateway)
|
||||
worker.taskSaved.connect(self._on_claimed_task_saved)
|
||||
worker.retryableFailed.connect(self._route_claim_retryable_failed)
|
||||
worker.failed.connect(self._route_claim_failed)
|
||||
|
||||
Reference in New Issue
Block a user