🐛 fix(vscode): 刷新按钮加载态可见,图标随重拉转圈

刷新按钮此前只发消息重拉数据,看板已有列表时界面毫无变化,用户
无法判断点击是否生效。消息协议里的 issues/loading 从未被发送。

loadAndPush 现在在开跑前推 issues/loading,并在 finally 里推新增的
issues/loaded,保证成功、报错、缺 token 提前返回都能收尾;webhook
触发的自动重拉同样走这条链路。webview 据此维护 refreshing 状态,
刷新图标转圈并在期间禁用按钮。

Claude-Session: https://claude.ai/code/session_01REdhpbaNyqWASF2HWsnTFv
This commit is contained in:
cruldra committed 2026-09-13 08:22:38 +08:00
1 parent 9167b86708
commit ef0750b4ef
7 files changed
+30 -5

No files matched your search

@@ -4,6 +4,8 @@ import { useEffect, useRef, useState } from 'react'
interface Props {
onRefresh: () => void
/** host 正在重拉看板;为 true 时刷新图标转起来。 */
refreshing: boolean
/** 看板范围:'mine' 只看我的(assigned/created),'all' 团队全部工单。 */
scope: 'mine' | 'all'
onToggleScope: () => void
@@ -65,6 +67,7 @@ function releaseTitle(release: ReleaseStatus | undefined): string {
export function PanelHeader({
onRefresh,
refreshing,
scope,
onToggleScope,
onEditAuth,
@@ -207,11 +210,13 @@ export function PanelHeader({
<button
type="button"
onClick={onRefresh}
title="刷新"
disabled={refreshing}
title={refreshing ? '正在刷新…' : '刷新'}
aria-label="刷新"
className="flex h-6 w-6 items-center justify-center rounded hover:bg-[var(--vscode-toolbar-hoverBackground)]"
aria-busy={refreshing}
className="flex h-6 w-6 items-center justify-center rounded hover:bg-[var(--vscode-toolbar-hoverBackground)] disabled:cursor-not-allowed"
>
<RefreshCw size={14} />
<RefreshCw size={14} className={refreshing ? 'animate-spin' : undefined} />
</button>
<button
type="button"