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.
This commit is contained in:
john
2026-09-10 09:30:29 +08:00
parent b414b732c8
commit 8651a50cbe
+41 -4
View File
@@ -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 ? '推送中…' : '立即推送到草稿箱'}
</button>
</div>
{!newsDraftForm.enabled ? (
<p className="muted" style={{ marginTop: 8 }}>
</p>
) : null}
{newsDraftDirty ? (
<p className="muted" style={{ marginTop: 8 }}>
</p>
) : null}
{newsDraftPreview ? (
<div className="admin-card" style={{ marginTop: 16, background: 'var(--panel-2, rgba(255,255,255,.03))' }}>
<h3 style={{ marginBottom: 8 }}></h3>