fix: dedup duplicate publish dispatches and wait for Toutiao image upload#209
Open
xiaopanddxiong wants to merge 4 commits intoleaperone:mainfrom
Open
fix: dedup duplicate publish dispatches and wait for Toutiao image upload#209xiaopanddxiong wants to merge 4 commits intoleaperone:mainfrom
xiaopanddxiong wants to merge 4 commits intoleaperone:mainfrom
Conversation
1) src/background/index.ts: 对 MULTIPOST_EXTENSION_PUBLISH 增加指纹去重 (60s 窗口, key=平台+图片数+内容前256字符), 解决 multipost.app on-task 网页对扩展重复 dispatch 同一发布请求导致同条内容被发布 多次的问题. 2) src/background/services/api.ts: 对 NEW_TASK 的 task URL 增加内存 级去重 (LRU 上限 500), 兜底 ping 多次返回同一 taskId 的情况. 3) src/sync/dynamic/toutiao.ts: 将固定 5s 等待替换为轮询确认按钮 可点击 (最长 60s) + 等待弹窗关闭与缩略图出现 (最长 30s), 解决大图(>5MB) 上传未完成就触发发布按钮导致图片丢失的问题.
🤖 LeoCode Review⏳ 等待审查... 最后更新: 2026-05-07 15:56 · beb348c |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & Why
While integrating MultiPost via the REST API for an automated publishing pipeline, I hit two reliability issues. Both are fixed here.
1. Same content gets published 2-3 times per task
Symptom: One REST API task triggers Chrome to instantly open 2-3 publish tabs, and the same content gets posted 2-3 times.
Root cause: When the extension receives
NEW_TASKfromping, it opensmultipost.app/on-task?taskId=.... That page then dispatcheschrome.runtime.sendMessage({ action: "MULTIPOST_EXTENSION_PUBLISH", data })— but it dispatches it multiple times (likely React StrictModeuseEffectdouble-invocation, or other internal logic). The background handler had no dedup, so each dispatch ran the full publish flow.I confirmed this by inspecting Service Worker network — only one
pingreturnedNEW_TASK, butchrome.windows.create({ url: "tabs/publish.html" })was being called 3 times.Fix (
src/background/index.ts):platforms + image count + first 256 chars of content/title) on theMULTIPOST_EXTENSION_PUBLISHhandler.Also added a defensive in-memory dedup on
NEW_TASKtask URLs insrc/background/services/api.ts(LRU-capped at 500 entries) to guard againstpingreturning the same task multiple times.2. Toutiao dynamic post: image is missing when uploading large images
Symptom: For images larger than ~3-5 MB, the post goes live with no image attached.
Root cause:
src/sync/dynamic/toutiao.tshad a hard-codedsetTimeout(5000)between dispatching the file input and clicking the upload-confirm button. For large images, 5 seconds isn't enough — the confirm button is stilldisabled, the click is a no-op, and the post is published without the image.Fix:
button[data-e2e="imageUploadConfirm-btn"]to become non-disabled before clicking.How tested
[MultiPost] skip duplicate PUBLISH requestfor the suppressed dispatches.Files changed
src/background/index.ts— content-fingerprint dedup forMULTIPOST_EXTENSION_PUBLISHsrc/background/services/api.ts— task URL dedup forNEW_TASKsrc/sync/dynamic/toutiao.ts— poll for upload completion instead of fixed 5s waitNo new dependencies, no behavioral change for the happy path.