From 8651a50cbe5418e17d5dcd7393ce0b0784045843 Mon Sep 17 00:00:00 2001 From: john Date: Thu, 10 Sep 2026 09:30:29 +0800 Subject: [PATCH] fix(wechat): improve news draft push button feedback Show loading/progress notice during push, auto-save config before push, and remove confirm dialog that blocked clicks in some browsers. --- src/admin/pages/WechatPage.tsx | 45 +++++++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/src/admin/pages/WechatPage.tsx b/src/admin/pages/WechatPage.tsx index afdba0a..71fc205 100644 --- a/src/admin/pages/WechatPage.tsx +++ b/src/admin/pages/WechatPage.tsx @@ -414,17 +414,37 @@ export function WechatPage() { }; const handlePushNewsMorningDraft = async () => { - if (!window.confirm('确认将今日新闻早报推送到微信服务号草稿箱?')) return; + if (!newsDraftForm) return; + if (!newsDraftForm.sourceUserId.trim()) { + setError('请先填写来源用户 ID'); + return; + } setNewsDraftWorking(true); setError(null); - setNotice(null); + setNotice('正在推送到微信草稿箱,请稍候(约 5–15 秒)…'); try { + if (newsDraftDirty || !newsDraftForm.enabled) { + const saved = await patchWechatNewsMorningDraftConfig({ + enabled: true, + autoPushEnabled: newsDraftForm.autoPushEnabled, + pushHour: Number(newsDraftForm.pushHour) || 6, + pushMinute: Number(newsDraftForm.pushMinute) || 0, + timezone: newsDraftForm.timezone.trim() || 'Asia/Shanghai', + sourceUserId: newsDraftForm.sourceUserId.trim() || null, + pageSlugPattern: newsDraftForm.pageSlugPattern.trim() || 'daily-news-*', + author: newsDraftForm.author.trim() || 'TKMind', + }); + const nextForm = newsMorningDraftToForm(saved, newsDraftTemplate ?? undefined); + setNewsDraftForm(nextForm); + setSavedNewsDraftForm(nextForm); + } const result = await pushWechatNewsMorningDraft(); setNotice(`草稿已写入微信后台,media_id:${result.draftMediaId ?? '—'}`); setNewsDraftPreview(result.preview ?? null); setNewsDraftRuns(await listWechatNewsMorningDraftRuns(10)); } catch (err) { setError(err instanceof Error ? err.message : '推送失败'); + setNotice(null); } finally { setNewsDraftWorking(false); } @@ -665,11 +685,28 @@ export function WechatPage() { type="button" className="primary-btn" onClick={() => void handlePushNewsMorningDraft()} - disabled={busy || newsDraftWorking || !newsDraftForm.enabled || !newsDraftForm.sourceUserId.trim()} + disabled={busy || newsDraftWorking || !newsDraftForm.sourceUserId.trim()} + title={ + !newsDraftForm.sourceUserId.trim() + ? '请先填写来源用户 ID' + : !newsDraftForm.enabled + ? '建议勾选「启用新闻早报草稿推送」后再推送' + : undefined + } > - 立即推送到草稿箱 + {newsDraftWorking ? '推送中…' : '立即推送到草稿箱'} + {!newsDraftForm.enabled ? ( +

+ 提示:未勾选「启用」也可尝试推送;若失败请先启用并保存配置。 +

+ ) : null} + {newsDraftDirty ? ( +

+ 配置有未保存改动,点击推送时会自动保存后再推送到微信。 +

+ ) : null} {newsDraftPreview ? (

预览