fix(editor): ignore logistics toasts during cover upload
This commit is contained in:
+43
-2
@@ -37,6 +37,27 @@ LEGACY_ITEMBOX_XPATH = (
|
||||
COVER_FOREGROUND_RECOVERY_TIMEOUT_SECONDS = 120
|
||||
COVER_FOREGROUND_UPLOAD_RECOVERY_REASONS = {"UPLOAD_STILL_PROCESSING", "UPLOAD_TIMEOUT"}
|
||||
COVER_FOREGROUND_DRAG_RECOVERY_REASONS = {"DRAG_NOT_FIRST", "NEW_IMAGE_NOT_FOUND"}
|
||||
UPLOAD_TOAST_CONTEXT_TOKENS = (
|
||||
"圖片",
|
||||
"图片",
|
||||
"封面",
|
||||
"照片",
|
||||
"相片",
|
||||
"圖像",
|
||||
"图像",
|
||||
"image",
|
||||
"photo",
|
||||
"cover",
|
||||
"upload",
|
||||
"上傳",
|
||||
"上传",
|
||||
"檔案",
|
||||
"文件",
|
||||
"file",
|
||||
"重複",
|
||||
"重复",
|
||||
"duplicate",
|
||||
)
|
||||
|
||||
LOGIN_PATH_MARKERS = (
|
||||
"/login",
|
||||
@@ -134,7 +155,7 @@ JS_UPLOAD_STATE = (
|
||||
"var upload=cmMainUploadInput(image);var uploadBox=cmMainUploadBox(image);"
|
||||
"var busy=manager?[].slice.call(manager.querySelectorAll('[class*=loading],[class*=Loading],[class*=spinner],[class*=Spinner],[class*=progress],[class*=Progress],[class*=uploading],[class*=Uploading]')).filter(visible):[];"
|
||||
"var errRe=/(失敗|失败|錯誤|错误|不支援|不支持|格式|大小|尺寸|超過|超过|重複|重复|duplicate|error|fail|invalid|unsupported)/i;"
|
||||
"var uploadRe=/(圖片|图片|封面|照片|相片|圖像|图像|image|photo|cover|upload|上傳|上传|檔案|文件|file|格式|大小|尺寸|像素|解析度|分辨率|超過|超过|重複|重复|duplicate)/i;"
|
||||
"var uploadRe=/(圖片|图片|封面|照片|相片|圖像|图像|image|photo|cover|upload|上傳|上传|檔案|文件|file|重複|重复|duplicate)/i;"
|
||||
"var texts=manager?[].slice.call(manager.querySelectorAll('*')).filter(visible).map(text).filter(Boolean):[];"
|
||||
"var errors=texts.filter(function(t){return errRe.test(t);}).slice(0,8);"
|
||||
"var roots=[].slice.call(document.querySelectorAll('.eds-modal__content,.eds-modal__box,[role=dialog]')).filter(visible);"
|
||||
@@ -656,8 +677,28 @@ def _image_rects(cdp):
|
||||
return _json_value(cdp, JS_RECTS, default=[]) or []
|
||||
|
||||
|
||||
def _is_upload_error_text(value):
|
||||
text = str(value or "").strip().lower()
|
||||
return bool(text) and any(token in text for token in UPLOAD_TOAST_CONTEXT_TOKENS)
|
||||
|
||||
|
||||
def _normalize_upload_state(state):
|
||||
normalized = dict(state or {})
|
||||
candidates = []
|
||||
for key in ("page_error_toasts", "error_toasts"):
|
||||
for value in normalized.get(key) or []:
|
||||
if value not in candidates:
|
||||
candidates.append(value)
|
||||
normalized["error_toasts"] = [
|
||||
value for value in candidates if _is_upload_error_text(value)
|
||||
][:8]
|
||||
return normalized
|
||||
|
||||
|
||||
def _upload_state(cdp):
|
||||
return _json_value(cdp, JS_UPLOAD_STATE, default={}) or {}
|
||||
return _normalize_upload_state(
|
||||
_json_value(cdp, JS_UPLOAD_STATE, default={}) or {}
|
||||
)
|
||||
|
||||
|
||||
def _click_upload_tile(cdp):
|
||||
|
||||
Reference in New Issue
Block a user