feat: complete T-532 cmhub account prompt

This commit is contained in:
chengma
2026-07-06 15:56:28 +08:00
parent a4e951961e
commit c42c12ef3e
10 changed files with 183 additions and 13 deletions
+58 -1
View File
@@ -1119,10 +1119,67 @@ class SettingsTab(QWidget):
image_count = self._cmhub_alias_count("image")
balance = payload.get("points_balance")
balance_text = f";余额 {balance}" if balance is not None else ""
message = f"cmhub 连接成功:生文别名 {title_count} 个,生图别名 {image_count} 个{balance_text};别名已拉取,记得点『保存设置』持久化"
subject = self._cmhub_success_subject(payload)
message = f"{subject}:生文别名 {title_count} 个,生图别名 {image_count} 个{balance_text};别名已拉取,记得点『保存设置』持久化"
self.cmhub_result_label.setText(message)
self._set_status(message)
def _cmhub_success_subject(self, payload):
account_name = self._cmhub_account_display_name(payload)
if account_name:
return f"cmhub 账号「{account_name}」连接成功"
return "cmhub 连接成功"
def _cmhub_account_display_name(self, payload):
if not isinstance(payload, dict):
return ""
sources = []
balance = payload.get("balance")
if isinstance(balance, dict):
account = balance.get("account")
if isinstance(account, dict):
sources.append(account)
user = balance.get("user")
if isinstance(user, dict):
sources.append(user)
elif user is not None:
sources.append({"user": user})
sources.append(balance)
account = payload.get("account")
if isinstance(account, dict):
sources.append(account)
user = payload.get("user")
if isinstance(user, dict):
sources.append(user)
elif user is not None:
sources.append({"user": user})
sources.append(payload)
for source in sources:
name = self._cmhub_display_name_from_source(source)
if name:
return name
return ""
def _cmhub_display_name_from_source(self, source):
if not isinstance(source, dict):
return ""
for field in ("display_name", "name", "account_name", "username", "user", "email", "id"):
value = source.get(field)
if value is None:
continue
if isinstance(value, dict):
nested_name = self._cmhub_display_name_from_source(value)
if nested_name:
return nested_name
continue
text = str(value).strip()
if not text:
continue
if field == "email" or "@" in text:
return appconfig.mask_email(text)
return text
return ""
def _on_cmhub_failed(self, _task_id, error):
message = f"cmhub 连接失败:{error}"
self.cmhub_result_label.setText(message)