fix: 领取任务后立即刷新列表 (#107)
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
- 图标用 `FluentIcon`,**不得用表情符号**。
|
||||
- 页面 `objectName` 固定为 `pddTaskPage`,不要改。
|
||||
|
||||
注意:“开始自动获取”和“重新执行”会真的操作手机。重新执行当前只允许
|
||||
注意:“自动获取”和“重新执行”会真的操作手机。重新执行当前只允许
|
||||
采集任务,采购任务必须在事件层拦截,不能从本入口下单。
|
||||
"""
|
||||
|
||||
@@ -387,10 +387,10 @@ class PDDTaskPage(QWidget):
|
||||
|
||||
def _build_command_area(self) -> None:
|
||||
self.autoFetchButton = PrimaryPushButton(
|
||||
FIF.PLAY, "开始自动获取", self
|
||||
FIF.PLAY, "自动获取", self
|
||||
)
|
||||
self.autoFetchButton.setMinimumWidth(132)
|
||||
self.autoFetchButton.setAccessibleName("开始自动获取 PDD 任务")
|
||||
self.autoFetchButton.setAccessibleName("自动获取 PDD 任务")
|
||||
|
||||
self.taskTypeLabel = CaptionLabel("任务类型", self)
|
||||
self.taskTypeCombo = ComboBox(self)
|
||||
@@ -410,8 +410,8 @@ class PDDTaskPage(QWidget):
|
||||
self.keywordInput = SearchLineEdit(self)
|
||||
self.keywordInput.setPlaceholderText("任务编号、商品编号或商品标题")
|
||||
self.keywordInput.setClearButtonEnabled(True)
|
||||
self.keywordInput.setMinimumWidth(190)
|
||||
self.keywordInput.setMaximumWidth(480)
|
||||
self.keywordInput.setMinimumWidth(150)
|
||||
self.keywordInput.setMaximumWidth(240)
|
||||
self.keywordInput.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
||||
self.keywordInput.setAccessibleName("任务关键词")
|
||||
|
||||
@@ -626,7 +626,7 @@ class PDDTaskPage(QWidget):
|
||||
"""更新自动获取按钮;state 为 stopped/starting/running/stopping。"""
|
||||
|
||||
states = {
|
||||
"stopped": ("开始自动获取", FIF.PLAY, True),
|
||||
"stopped": ("自动获取", FIF.PLAY, True),
|
||||
"starting": ("正在启动", FIF.SYNC, False),
|
||||
"running": ("停止自动获取", FIF.PAUSE, True),
|
||||
"stopping": ("正在停止", FIF.PAUSE, False),
|
||||
@@ -635,6 +635,7 @@ class PDDTaskPage(QWidget):
|
||||
self.autoFetchButton.setText(text)
|
||||
self.autoFetchButton.setIcon(icon)
|
||||
self.autoFetchButton.setEnabled(enabled)
|
||||
self.autoFetchButton.setAccessibleName(f"{text} PDD 任务")
|
||||
|
||||
def set_engine_status(self, text: str) -> None:
|
||||
"""更新页面底部的任务引擎状态说明。"""
|
||||
|
||||
@@ -214,6 +214,7 @@ class ClaimTaskWorker(QObject):
|
||||
purchase_reconcile_factory=self._purchase_reconcile_factory,
|
||||
cancelled=lambda: self._cancelled,
|
||||
device_connection_checker=self._device_connection_checker,
|
||||
task_saved=self.taskSaved.emit,
|
||||
)
|
||||
result = dispatcher.execute_one()
|
||||
if not self._cancelled or result.kind == "cancelled":
|
||||
|
||||
@@ -138,6 +138,7 @@ class TaskDispatcher:
|
||||
purchase_reconcile_factory: Optional[PurchaseReconcileFactory] = None,
|
||||
cancelled: Callable[[], bool] = lambda: False,
|
||||
device_connection_checker: Optional[Callable[[str], None]] = None,
|
||||
task_saved: Callable[[str], None] = lambda _task_id: None,
|
||||
) -> None:
|
||||
self._gateway = gateway
|
||||
self._repository = repository
|
||||
@@ -151,6 +152,7 @@ class TaskDispatcher:
|
||||
self._purchase_mode = purchase_mode
|
||||
self._reconcile_factory = purchase_reconcile_factory
|
||||
self._cancelled = cancelled
|
||||
self._task_saved = task_saved
|
||||
self._device_connection_checker = (
|
||||
device_connection_checker
|
||||
or AndroidDeviceService().require_connected
|
||||
@@ -251,10 +253,12 @@ class TaskDispatcher:
|
||||
)
|
||||
if remote is None:
|
||||
return TaskDispatchOutcome("no_task", "暂无可领取的任务")
|
||||
saved_now = False
|
||||
try:
|
||||
self._repository.add_claimed_task(
|
||||
admin_task_to_new_claimed_task(remote)
|
||||
)
|
||||
saved_now = True
|
||||
except DuplicateTaskError:
|
||||
pass
|
||||
except Exception as exc:
|
||||
@@ -266,6 +270,8 @@ class TaskDispatcher:
|
||||
raise RuntimeError(
|
||||
f"任务 {remote.task_id} 已领取,但未能保存到本地"
|
||||
)
|
||||
if saved_now:
|
||||
self._task_saved(remote.task_id)
|
||||
|
||||
if task.task_type is TaskType.COLLECT:
|
||||
service = CollectTaskService(
|
||||
|
||||
Reference in New Issue
Block a user