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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user